diff --git a/idaes_examples/mod/power_gen/gas_turbine.py b/idaes_examples/mod/power_gen/gas_turbine.py index d345fce6..77cbcec5 100644 --- a/idaes_examples/mod/power_gen/gas_turbine.py +++ b/idaes_examples/mod/power_gen/gas_turbine.py @@ -234,7 +234,7 @@ def _add_models(self): support_isentropic_performance_curves=True, ) - def _add_performance_curves_gts1(self, flow_scale=0.896): + def _add_performance_curves_gts1(self, flow_scale=0.896*pyo.units.s/pyo.units.m**3): """Add isentropic head and efficiency curves for gas turbine stage 1""" @self.gts1.performance_curve.Constraint( @@ -262,9 +262,9 @@ def head_isen_eqn(b, t): ) return b.head_isentropic[t] == -( -2085.1 * f**3 + 38433 * f**2 - 150764 * f + 422313 - ) + )*pyo.units.m**2/pyo.units.s**2 - def _add_performance_curves_gts2(self, flow_scale=0.896): + def _add_performance_curves_gts2(self, flow_scale=0.896*pyo.units.s/pyo.units.m**3): """Add isentropic head and efficiency curves for gas turbine stage 2""" @self.gts2.performance_curve.Constraint( @@ -290,9 +290,9 @@ def head_isen_eqn(b, t): ) return b.head_isentropic[t] == -( -1676.3 * f**3 + 34916 * f**2 - 173801 * f + 456957 - ) + )*pyo.units.m**2/pyo.units.s**2 - def _add_performance_curves_gts3(self, flow_scale=0.896): + def _add_performance_curves_gts3(self, flow_scale=0.896*pyo.units.s/pyo.units.m**3): """Add isentropic head and efficiency curves for gas turbine stage 3""" @self.gts3.performance_curve.Constraint( @@ -320,7 +320,7 @@ def head_isen_eqn(b, t): ) return b.head_isentropic[t] == -( -1373.6 * f**3 + 31759 * f**2 - 188528 * f + 500520 - ) + )*pyo.units.m**2/pyo.units.s**2 def _add_constraints(self): """Add additional flowsheet constraints and expressions""" @@ -759,10 +759,10 @@ def _set_scaling(self): for i in ["air05", "air07", "air09"]: iscale.set_scaling_factor(self.splt1.split_fraction[0.0, i], 100) - iscale.set_scaling_factor(self.valve01.control_volume.work, 1e-8) - iscale.set_scaling_factor(self.valve02.control_volume.work, 1e-8) - iscale.set_scaling_factor(self.valve03.control_volume.work, 1e-8) - iscale.set_scaling_factor(self.vsv.control_volume.work, 1e-8) + iscale.set_scaling_factor(self.valve01.control_volume.work, 1) + iscale.set_scaling_factor(self.valve02.control_volume.work, 1) + iscale.set_scaling_factor(self.valve03.control_volume.work, 1) + iscale.set_scaling_factor(self.vsv.control_volume.work, 1) iscale.set_scaling_factor(self.cmp1.control_volume.work, 1e-8) iscale.set_scaling_factor(self.gts1.control_volume.work, 1e-8) iscale.set_scaling_factor(self.gts2.control_volume.work, 1e-8) @@ -889,6 +889,7 @@ def initialize( self.feed_fuel1.initialize(outlvl=outlvl, solver=solver, optarg=optarg) # compressor propagate_state(self.air01) + self.vsv.valve_opening.fix(1-1e-6) self.vsv.initialize(outlvl=outlvl, solver=solver, optarg=optarg) propagate_state(self.air02) self.cmp1.initialize(outlvl=outlvl, solver=solver, optarg=optarg) diff --git a/idaes_examples/mod/power_gen/hrsg.py b/idaes_examples/mod/power_gen/hrsg.py index f5ebcdd0..75864fe6 100644 --- a/idaes_examples/mod/power_gen/hrsg.py +++ b/idaes_examples/mod/power_gen/hrsg.py @@ -93,6 +93,7 @@ def _add_unit_models(self): prop_water = self.prop_water prop_gas = self.prop_gas + ######### LP Section ########### self.econ_lp = BoilerHeatExchanger( doc="LP Economizer", @@ -100,9 +101,11 @@ def _add_unit_models(self): cold_side_name="tube", hot_side_name="shell", tube={"property_package": prop_water, - "has_pressure_change": False,}, + "has_pressure_change": False, + }, shell={"property_package": prop_gas, - "has_pressure_change": False,}, + "has_pressure_change": False, + }, has_holdup=False, flow_pattern=HeatExchangerFlowPattern.countercurrent, tube_arrangement=TubeArrangement.inLine, @@ -115,10 +118,12 @@ def _add_unit_models(self): property_package=prop_water, momentum_mixing_type=MomentumMixingType.none, inlet_list=["econ_lp", "Preheater"], + property_package_args={'has_phase_equilibrium':False} ) self.drum_lp = HelmPhaseSeparator( doc="Phase separator for LP evaporator (partial evaporator)", property_package=prop_water, + property_package_args={'has_phase_equilibrium':False} ) self.evap_lp = HeatExchanger( doc="LP evaporator heat exchanger section", @@ -135,6 +140,7 @@ def _add_unit_models(self): property_package=prop_water, momentum_mixing_type=MomentumMixingType.none, inlet_list=["main", "soec_makeup"], + property_package_args={'has_phase_equilibrium':False} ) self.split_fg_lp = Splitter( doc="LP superheater flue bypass gas splitter", @@ -166,14 +172,19 @@ def _add_unit_models(self): doc="LP liquid split to IP and HP pumps", property_package=prop_water, outlet_list=["toIP", "toHP"], + property_package_args={'has_phase_equilibrium':False} ) self.pump_ip = WaterPump( doc="Intermediate pressure pump", property_package=prop_water, + has_phase_equilibrium=False, + property_package_args={'has_phase_equilibrium':False} ) self.pump_hp = WaterPump( doc="High pressure pump", property_package=prop_water, + has_phase_equilibrium=False, + property_package_args={'has_phase_equilibrium':False} ) ######### IP Section ########### self.econ_ip1 = BoilerHeatExchanger( @@ -182,9 +193,9 @@ def _add_unit_models(self): hot_side_name="shell", cold_side_name="tube", tube={"property_package": prop_water, - "has_pressure_change": True,}, + "has_pressure_change": True}, shell={"property_package": prop_gas, - "has_pressure_change": True,}, + "has_pressure_change": True}, has_holdup=False, flow_pattern=HeatExchangerFlowPattern.countercurrent, tube_arrangement=TubeArrangement.inLine, @@ -195,6 +206,7 @@ def _add_unit_models(self): doc="IP economizer hot water split for natural gas preheater", property_package=prop_water, outlet_list=["toIP_ECON2", "toNGPH"], + property_package_args={'has_phase_equilibrium':False} ) self.econ_ip2 = BoilerHeatExchanger( doc="IP ecomonmizer part 2", @@ -202,14 +214,15 @@ def _add_unit_models(self): hot_side_name="shell", cold_side_name="tube", tube={"property_package": prop_water, - "has_pressure_change": True,}, + "has_pressure_change": True}, shell={"property_package": prop_gas, - "has_pressure_change": True,}, + "has_pressure_change": True}, has_holdup=False, flow_pattern=HeatExchangerFlowPattern.countercurrent, tube_arrangement=TubeArrangement.inLine, cold_side_water_phase="Liq", has_radiation=False, + # has_phase_equilibrium=False, ) self.evap_ip = HeatExchanger( doc="IP evaporator (total evaporator)", @@ -219,6 +232,7 @@ def _add_unit_models(self): tube={"property_package": prop_water}, delta_temperature_callback=delta_temperature_lmtd_callback, flow_pattern=HeatExchangerFlowPattern.countercurrent, + ) self.sh_ip1 = BoilerHeatExchanger( doc="IP superheater 1", @@ -226,9 +240,9 @@ def _add_unit_models(self): hot_side_name="shell", cold_side_name="tube", tube={"property_package": prop_water, - "has_pressure_change": True,}, + "has_pressure_change": True}, shell={"property_package": prop_gas, - "has_pressure_change": True,}, + "has_pressure_change": True}, has_holdup=False, flow_pattern=HeatExchangerFlowPattern.countercurrent, tube_arrangement=TubeArrangement.inLine, @@ -241,11 +255,14 @@ def _add_unit_models(self): property_package=prop_water, momentum_mixing_type=MomentumMixingType.none, inlet_list=["sh_ip1", "Cold_reheat"], + property_package_args={'has_phase_equilibrium':False} ) self.splitter_ip2 = HelmSplitter( doc="IP Splitter 2, for ejector, reclaimer and dryer", property_package=prop_water, outlet_list=["Cold_reheat", "toEjector", "toReclaimer", "toDryer"], + # has_phase_equilibrium=False, + property_package_args={'has_phase_equilibrium':False} ) self.sh_ip2 = BoilerHeatExchanger( doc="IP superheater 2", @@ -253,9 +270,9 @@ def _add_unit_models(self): hot_side_name="shell", cold_side_name="tube", tube={"property_package": prop_water, - "has_pressure_change": True,}, + "has_pressure_change": True}, shell={"property_package": prop_gas, - "has_pressure_change": True,}, + "has_pressure_change": True}, has_holdup=False, flow_pattern=HeatExchangerFlowPattern.countercurrent, tube_arrangement=TubeArrangement.inLine, @@ -355,6 +372,7 @@ def _add_unit_models(self): self.evap_hp_valve = HelmValve( doc="HP evaporator valve", property_package=prop_water, + property_package_args={'has_phase_equilibrium':False} ) self.evap_hp_valve.pressure_flow_equation.deactivate() self.evap_hp = HeatExchanger( @@ -436,7 +454,7 @@ def _add_flowsheet_constraints(self): def ip_sat_vap_eqn(b, t): return ( b.tube.properties_out[t].enth_mol / 1e4 - == (b.tube.properties_out[t].enth_mol_sat_phase["Vap"] + 30) / 1e4 + == (b.tube.properties_out[t].enth_mol_sat_phase["Vap"] + 30*pyo.units.J/pyo.units.mol) / 1e4 ) @self.evap_hp.Constraint( @@ -445,7 +463,7 @@ def ip_sat_vap_eqn(b, t): def hp_sat_vap_eqn(b, t): return ( b.tube.properties_out[t].enth_mol / 1e4 - == (b.tube.properties_out[t].enth_mol_sat_phase["Vap"] + 30) / 1e4 + == (b.tube.properties_out[t].enth_mol_sat_phase["Vap"] + 30*pyo.units.J/pyo.units.mol) / 1e4 ) @self.mixer1.Constraint(self.config.time, doc="Mixed state pressure eqn.") @@ -1020,6 +1038,8 @@ def _set_scaling_factors(self): if hasattr(unit, "deltaP_tube_uturn"): iscale.set_scaling_factor(unit.deltaP_tube_uturn, 1e-2) + # iscale.set_scaling_factor(self.sh_ip2.N_Pr_tube_eqn, 1e9) + # iscale.set_scaling_factor(self.sh_hp4.N_Pr_tube_eqn, 1e9) iscale.set_scaling_factor(self.evap_lp.shell.heat, 1e-8) iscale.set_scaling_factor(self.evap_lp.tube.heat, 1e-8) iscale.set_scaling_factor(self.evap_lp.tube.heat, 1e-8) diff --git a/idaes_examples/mod/power_gen/ngcc.py b/idaes_examples/mod/power_gen/ngcc.py index 49dfff98..38143237 100644 --- a/idaes_examples/mod/power_gen/ngcc.py +++ b/idaes_examples/mod/power_gen/ngcc.py @@ -360,7 +360,7 @@ def reboiler_duty_eqn(b, t): @self.Constraint(self.config.time) def net_power_constraint(b, t): - return b.net_power_mw[t] / 100.0 == -b.net_power[t] / 1e6 / 100.0 + return b.net_power_mw[t] / 100.0 == pyo.units.convert(-b.net_power[t] / 100.0,to_units=pyo.units.MW) @self.Constraint(self.config.time) def lp_steam_temperature_eqn(b, t): @@ -438,7 +438,6 @@ def initialize( self.cap_additional_reboiler_duty.fix() self.fuel_lhv.fix() self.fuel_hhv.fix() - self.gt.initialize( load_from="gas_turbine_init.json.gz", save_to="gas_turbine_init.json.gz", diff --git a/idaes_examples/mod/power_gen/steam_turbine.py b/idaes_examples/mod/power_gen/steam_turbine.py index 83c1a5b0..93bdab3e 100644 --- a/idaes_examples/mod/power_gen/steam_turbine.py +++ b/idaes_examples/mod/power_gen/steam_turbine.py @@ -68,31 +68,37 @@ def _add_models(self): num_lp=11, # full load ave P ratio about 0.7194 with outlet hp_disconnect=[7], # disconnected for reheater ip_disconnect=[10], # disconnected for HRSG LP steam mix + property_package_args={'has_phase_equilibrium':False} ) self.steam_turbine_lp_mix = helm.HelmMixer( doc="Mix LP steam from HRSG into turbine LP steam.", property_package=self.prop_water, momentum_mixing_type=helm.MomentumMixingType.none, inlet_list=["turbine", "hrsg"], + property_package_args={'has_phase_equilibrium':False} ) self.steam_turbine_lp_split = helm.HelmSplitter( doc="Split off carbon capture steam.", property_package=self.prop_water, outlet_list=["turbine", "reboiler", "soec"], + property_package_args={'has_phase_equilibrium':False} ) self.dummy_reheat = gum.Heater( doc="Dummy reheater, can be deactivated to couple with HRSG.", property_package=self.prop_water, + property_package_args={'has_phase_equilibrium':False} ) self.main_condenser = helm.HelmNtuCondenser( doc="Main steam turbine condenser.", shell={ "has_pressure_change": False, "property_package": self.prop_water, + 'has_phase_equilibrium':False }, tube={ "has_pressure_change": False, "property_package": self.prop_water, + 'has_phase_equilibrium':False }, ) self.hotwell = helm.HelmMixer( @@ -100,19 +106,23 @@ def _add_models(self): momentum_mixing_type=helm.MomentumMixingType.none, inlet_list=["condensate", "makeup"], property_package=self.prop_water, + property_package_args={'has_phase_equilibrium':False} ) self.cond_pump = helm.HelmIsentropicCompressor( - doc="Hotwell condensate pump", property_package=self.prop_water + doc="Hotwell condensate pump", property_package=self.prop_water, + property_package_args={'has_phase_equilibrium':False} ) self.return_mix = helm.HelmMixer( doc="Mixer for steam streams returning to HRSG.", property_package=self.prop_water, + property_package_args={'has_phase_equilibrium':False}, momentum_mixing_type=helm.MomentumMixingType.none, inlet_list=["pump", "reboiler", "dryer", "reclaimer"], ) self.reboiler = gum.Heater( doc="Carbon capture system reboiler", property_package=self.prop_water, + property_package_args={'has_phase_equilibrium':False} ) def _add_constraints(self): @@ -123,7 +133,7 @@ def lp_mixer_pressure_constraint(b, t): 1e-6 * b.turbine_state[t].pressure == 1e-6 * b.mixed_state[t].pressure ) - self.dummy_reheat.temperature_out = pyo.Var(self.time, initialize=850) + self.dummy_reheat.temperature_out = pyo.Var(self.time, initialize=850, units=pyo.units.K) @self.dummy_reheat.Constraint(self.time) def temperature_eqn(b, t): @@ -146,8 +156,8 @@ def return_mixer_pressure_constraint(b, t): return 1e-6 * b.pump_state[t].pressure == 1e-6 * b.mixed_state[t].pressure # A few more variables and constraints - self.hp_steam_temperature = pyo.Var(self.time, initialize=855) - self.hot_reheat_temperature = pyo.Var(self.time, initialize=855) + self.hp_steam_temperature = pyo.Var(self.time, initialize=855, units=pyo.units.K) + self.hot_reheat_temperature = pyo.Var(self.time, initialize=855, units=pyo.units.K) @self.Constraint(self.time) def main_steam_temperature_eqn(b, t): @@ -169,7 +179,7 @@ def reheat_steam_temperature_eqn(b, t): def reboiler_condense_eqn(b, t): return ( b.control_volume.properties_out[t].enth_mol - == b.control_volume.properties_out[t].enth_mol_sat_phase["Liq"] - 100 + == b.control_volume.properties_out[t].enth_mol_sat_phase["Liq"] - 100*pyo.units.J/pyo.units.mol ) def _add_arcs(self): diff --git a/idaes_examples/notebooks/_toc.yml b/idaes_examples/notebooks/_toc.yml index 54b632e0..43a1de18 100644 --- a/idaes_examples/notebooks/_toc.yml +++ b/idaes_examples/notebooks/_toc.yml @@ -104,6 +104,9 @@ parts: sections: - file: docs/power_gen/supercritical/supercritical_power_plant_doc - file: docs/power_gen/supercritical/supercritical_steam_cycle_doc + - file: docs/power_gen/ngcc/index + sections: + - file: docs/power_gen/ngcc/ngcc_doc - file: docs/power_gen/solid_oxide_cell/index sections: - file: docs/power_gen/solid_oxide_cell/soc_pid_control_doc @@ -113,9 +116,5 @@ parts: # note: directory active/ will not be included in the docs, but # it is kept here so it is visible to the 'idaesx' command (e.g. for preprocessing or browsing) # The 'file' entry generates a warning, but it is required by the TOC format - - file: active/power_gen/ngcc/index - sections: - # Moved this one to 'held' - # - file: active/power_gen/ngcc/ngcc_soec_doc - - file: active/power_gen/ngcc/ngcc_doc root: index + diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data/00Readme.txt b/idaes_examples/notebooks/active/power_gen/ngcc/data/00Readme.txt deleted file mode 100644 index b3331ebb..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/data/00Readme.txt +++ /dev/null @@ -1 +0,0 @@ -This directory contains full saved model results. diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/gt_soec_base.svg b/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/gt_soec_base.svg deleted file mode 100644 index dd408aac..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/gt_soec_base.svg +++ /dev/null @@ -1,662 +0,0 @@ - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - cmp1 - cmb1 - gts1 - inject1 - - - - - - - - - - gts2 - - - gts3 - - - - - - - - - - splt1 - mx1 - mx2 - mx3 - Blade Cooling Air - - - - - - - - - - - - - - - - - - - - NGPreheater - - To HRSG - - - - Summary - total GT power: - 477.00 MW - - - - - - - air01 - - - - air02 - - - - air03 - - - - air04 - - - - fuel01 - - - - fuel02 - - - feed_air1 - - - st02 - - - - st01 - - - - air05 - - - - air06 - - - exhaust_1 - - - g01 - - - - g02 - - - - air09 - - - - air10 - - - - air07 - - - - g03 - - - - g04 - - - - g05 - - - - g07 - - - - g06 - - - - g08 - - - - air08 - - - - - 299.82 K - 25.951 kg/s - 31.026 bar - 1.000% - 93.100% - 0.000% - 1.600% - T: - F: - P: - yCO2: - yCH4: - yO2: - yN2: - - - 3.200% - yC2H6: - 0.700% - yC3H8: - 0.400% - yC4H10: - - - - 325.67 K - 16.495 kg/s - 43.430 bar - T: - F: - P: - - - - - - 460.20 K - 16.495 kg/s - 43.430 bar - T: - F: - P: - - - - - NG PreharerUses Hot WaterFrom HRSG - - - 446.91 K - 25.951 kg/s - 31.026 bar - 1.000% - 93.100% - 0.000% - 1.600% - T: - F: - P: - yCO2: - yCH4: - yO2: - yN2: - - - 3.200% - yC2H6: - 0.700% - yC3H8: - 0.400% - yC4H10: - - - power: - 481.33 MW - - - isentr. efficiency: - 84.02% - isentr. head: - 367.27 kJ/kg - inlet vol. flow: - 883.3 m**3/s - - 288.15 K - 1101.114 kg/s - 1.034 bar - 0.030% - 0.990% - 0.920% - 20.740% - 77.320% - T: - F: - P: - yCO2: - yH2O: - yAr: - yO2: - yN2: - - - - - - 288.17 K - 1101.114 kg/s - 1.099 bar - T: - F: - P: - - - - - - 709.64 K - 1101.114 kg/s - 19.230 bar - T: - F: - P: - - - - - - 709.64 K - 1008.735 kg/s - 19.230 bar - T: - F: - P: - - - - - - - 691.78 K - 1034.687 kg/s - 19.230 bar - 0.070% - 3.843% - 19.884% - 74.195% - T: - F: - P: - yCO2: - yCH4: - yO2: - yN2: - - - 0.132% - yC2H6: - 0.029% - yC3H8: - 0.017% - yC4H10: - - - - 1641.35 K - 1034.816 kg/s - 18.269 bar - 4.324% - 9.218% - 0.000% - 11.471% - 74.106% - T: - F: - P: - yCO2: - yH2O: - yCH4: - yO2: - yN2: - - - 0.000% - yC2H6: - 0.000% - yC3H8: - 0.000% - yC4H10: - 0.881% - yAr: - - - - power: - -374.61 MW - - - isentr. efficiency: - 88.52% - isentr. head: - -408.94 kJ/kg - inlet vol. flow: - 273.5 m**3/s - - - - 898.00 K - 1127.195 kg/s - 1.100 bar - 3.978% - 8.555% - 0.884% - 12.218% - 74.365% - T: - F: - P: - yCO2: - yH2O: - yAr: - yO2: - yN2: - - - - - 899.61 K - 1116.944 kg/s - 1.100 bar - 4.014% - 8.623% - 0.884% - 12.141% - 74.338% - T: - F: - P: - yCO2: - yH2O: - yAr: - yO2: - yN2: - - - - - - 1094.57 K - 1116.944 kg/s - 2.800 bar - 4.014% - 8.623% - 0.884% - 12.141% - 74.338% - T: - F: - P: - yCO2: - yH2O: - yAr: - yO2: - yN2: - - - - - - 709.76 K - 14.770 kg/s - 2.800 bar - T: - F: - P: - - - - - - - 1099.27 K - 1102.174 kg/s - 2.800 bar - 4.066% - 8.723% - 0.883% - 12.028% - 74.299% - T: - F: - P: - yCO2: - yH2O: - yAr: - yO2: - yN2: - - - - - - 1329.39 K - 1102.174 kg/s - 7.139 bar - 4.066% - 8.723% - 0.883% - 12.028% - 74.299% - T: - F: - P: - yCO2: - yH2O: - yAr: - yO2: - yN2: - - - - - - 1365.42 K - 1034.816 kg/s - 7.139 bar - 4.324% - 9.218% - 0.881% - 11.471% - 74.106% - T: - F: - P: - yCO2: - yH2O: - yAr: - yO2: - yN2: - - - - - power: - -264.27 MW - - - isentr. efficiency: - 88.18% - isentr. head: - -268.31 kJ/kg - inlet vol. flow: - 1280.1 m**3/s - - - - 709.77 K - 10.252 kg/s - 1.100 bar - T: - F: - P: - - - - - - 85.0% - opening: - - - - - - 85.0% - opening: - - - - - - 85.0% - opening: - - - - - - 709.73 K - 67.357 kg/s - 7.139 bar - T: - F: - P: - - - - - - - power: - -319.46 MW - - - isentr. efficiency: - 88.35% - isentr. head: - -328.07 kJ/kg - inlet vol. flow: - 602.3 m**3/s - - - \ No newline at end of file diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/hrsg_soec_base.svg b/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/hrsg_soec_base.svg deleted file mode 100644 index b66362d3..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/hrsg_soec_base.svg +++ /dev/null @@ -1,1332 +0,0 @@ - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IPSH1 - IPSH2 - IPSH3 - HPSH3 - HPSH2 - HPSH1 - HPEVAP - HPECON5 - LPECON - LPEVAP - LPDRUM - HPSH4 - - - - - - - - - - - - - - - - - - - - - - - HPECON4 - HPECON3 - - - - - - - LPSH1 - - - - - - - - - - - - Gas Turbine Exhaust - HP Steam - IP Steam - - Feedwater - - - - - - - HPECON1 - - - - - HPECON2 - - - - - - - - - IPECON1 - IPECON2 - - - - - - - - - - - - - - - IPEVAP - - - - - - - Cold Reheat - - - - - From HP ECON2 - To HP ECON3 - - - LP Steam - - - - Mixer1 - - LP_FGsplit - - - - - LP_Mixer2 - IPPump - HPPump - IP_Mixer1 - IP_Splitter2 - To Ejector - To Reclaimer - To Dryer - To NG Preheater - From NG Preheater - To Stack or Capture - IP_Splitter1 - Splitter1 - - - - - - - - SOEC Makeup - - - - - lp01 - - - - lp02 - - - - lp03 - - - - lp04 - - - - lp12 - - - - lp05 - - - - lp13 - - - - g30 - - - - g19 - - - - hp03 - - - - hp04 - - - - hp05 - - - - g18 - - - - hp06 - - - - hp06b - - - - g15 - - - - ip06 - - - - g14 - - - - g17 - - - - g16 - - - - hp07 - - - - hp08 - - - - hp09 - - - - hp10 - - - - hp11 - - - - g13 - - - - g12 - - - - g11 - - - - g08 - - - - g09 - - - - ip10 - - - - ip09 - - - - ip08 - - - - ip07 - - - - g10 - - - - g28 - - - - ip11 - - - - ip012 - - - - ip013 - - - - ip14 - - - - ip015 - - - - lp09 - - - - lp08 - - - - lp06 - - - - hp01 - - - - hp02 - - - - hp03 - - - - ip01 - - - - ip02 - - - - ip03 - - - - g25 - - - - g26 - - - - g27 - - - - ip05 - - - - ip04 - - - - g24 - - - - g23 - - - - g29 - - - - lp10 - - - - lp11 - - - - g21 - - - - g20 - - - - g22 - - - - - - - F:T:P: - 1113.174 kg/s - 387.07 K - 1.010 bar - - - - - - - F:T:P:x: - 136.770 kg/s - 353.07 K - 6.550 bar - ? - - - - - - F:T:P: - 1113.174 kg/s - 413.53 K - 1.010 bar - - - - - - - - - F:T:P:x: - 16.495 kg/s - 325.67 K - 43.430 bar - ? - - - - - - - - F:T:P:x: - 153.265 kg/s - 435.43 K - 6.550 bar - ? - - - - - - - - F:T:P:x: - 38.644 kg/s - 435.43 K - 6.550 bar - ? - - - - - - - - F:T:P:x: - 153.265 kg/s - 398.89 K - 6.550 bar - ? - - - - - - - - F:T:P: - 556.587 kg/s - 542.30 K - 1.046 bar - - - - - - - - F:T:P:x: - 209.119 kg/s - 435.43 K - 6.550 bar - ? - - - - - - - - F:T:P:x: - 136.770 kg/s - 407.52 K - 6.550 bar - ? - - - - - - - F:T:P:x: - 35.922 kg/s - 435.43 K - 6.550 bar - ? - - - - - - - - F:T:P:x: - 35.922 kg/s - 436.13 K - 43.850 bar - ? - - - - - - - - F:T:P:x: - 35.922 kg/s - 460.20 K - 43.430 bar - ? - - - - - - - - F:T:P:x: - 38.644 kg/s - 557.00 K - 6.550 bar - ? - - - - - - - - F:T:P: - 556.587 kg/s - 559.12 K - 1.046 bar - - - - - - - - F:T:P: - 556.587 kg/s - 559.12 K - 1.046 bar - - - - - - - - F:T:P: - 1113.174 kg/s - 550.72 K - 1.046 bar - - - - - - - - F:T:P:x: - 19.427 kg/s - 514.32 K - 42.433 bar - ? - - - - - - - - F:T:P:x: - 170.475 kg/s - 435.43 K - 6.550 bar - ? - - - - - - - - F:T:P:x: - 16.495 kg/s - 460.20 K - 43.430 bar - ? - - - - - - - - F:T:P:x: - 134.553 kg/s - 435.43 K - 6.550 bar - ? - - - - - - - - F:T:P: - 1113.174 kg/s - 480.81 K - 1.010 bar - - - - - - - - F:T:P:x: - 134.553 kg/s - 439.77 K - 244.000 bar - ? - - - - - - - - F:T:P:x: - 19.427 kg/s - 460.20 K - 43.430 bar - ? - - - - - - - - F:T:P: - 1113.174 kg/s - 522.78 K - 1.046 bar - - - - - - - - F:T:P: - 1113.174 kg/s - 518.84 K - 1.012 bar - - - - - - - - F:T:P: - 1113.174 kg/s - 516.91 K - 1.011 bar - - - - - - - - F:T:P: - 1113.174 kg/s - 513.81 K - 1.010 bar - - - - - - - - F:T:P:x: - 134.553 kg/s - 507.40 K - 243.913 bar - ? - - - - - - - - F:T:P:x: - 134.553 kg/s - 511.22 K - 243.829 bar - ? - - - - - - - - F:T:P:x: - 153.186 kg/s - 857.71 K - 19.521 bar - ? - - - - - - - - F:T:P:x: - 153.186 kg/s - 705.69 K - 22.993 bar - ? - - - - - - - - F:T:P:x: - 153.186 kg/s - 578.32 K - 24.002 bar - ? - - - - - - - - F:T:P:x: - 19.427 kg/s - 560.00 K - 42.264 bar - ? - - - - - - - - F:T:P:x: - 133.759 kg/s - 585.07 K - 24.002 bar - ? - - - - - - - - F:T:P:x: - 19.427 kg/s - 527.44 K - 42.433 bar - ? - - - - - - - - F:T:P:x: - 134.553 kg/s - 585.07 K - 24.002 bar - ? - - - - - - - - F:T:P:x: - 134.553 kg/s - 859.52 K - 172.456 bar - ? - - - - - - - - F:T:P: - 1113.174 kg/s - 898.00 K - 1.100 bar - - - - - - - - F:T:P: - 1113.174 kg/s - 880.42 K - 1.098 bar - - - - - - - - F:T:P:x: - 134.553 kg/s - 735.87 K - 173.183 bar - ? - - - - - - - - F:T:P:x: - 134.553 kg/s - 797.65 K - 172.850 bar - ? - - - - - - - T:P: - 787.01 K - 1.093 bar - - - - - - - F:T:P: - 1113.174 kg/s - 577.58 K - 1.047 bar - - - - - - - F:T:P: - 1113.174 kg/s - 579.36 K - 1.081 bar - - - - - - - - T:P: - 752.65 K - 1.083 bar - - - - - - T:P: - 840.94 K - 1.096 bar - - - - - - - F:T:P: - 1113.174 kg/s - 559.12 K - 1.046 bar - - - - - - - - F:T:P: - 1113.174 kg/s - 569.74 K - 1.047 bar - - - - - - - - F:T:P:x: - 134.553 kg/s - 532.18 K - 243.747 bar - ? - - - - - - - - F:T:P:x: - 134.553 kg/s - 547.20 K - 243.668 bar - ? - - - - - - - - F:T:P:x: - 134.553 kg/s - 559.82 K - 243.590 bar - ? - - - - - - - - F:T:P:x: - 134.553 kg/s - 627.24 K - 173.590 bar - ? - - - - - - - - F:T:P:x: - 134.553 kg/s - 658.59 K - 173.421 bar - ? - - - - - - - T:P: - 586.13 K - 1.082 bar - - - - - - T:P: - 722.09 K - 1.082 bar - - - - - - - F:T:P:x: - 134.553 kg/s - 559.33 K - 173.590 bar - ? - - - - - - - T:P: - 821.12 K - 1.095 bar - - - - - - \ No newline at end of file diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/soec_soec_base.svg b/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/soec_soec_base.svg deleted file mode 100644 index 87fae4f2..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/soec_soec_base.svg +++ /dev/null @@ -1,760 +0,0 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - soec - Hydrogen Side - Oxygen Side - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hstrm03 - - - - feed_hx01 - sweep_hx - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - water_heater01 - water_heater02 - - - - - - - - - - h2_precooler - dryer - - - - - - - - - - - - - - - - - - - - - - - - - - ic01 - ic02 - cmp01 - cmp02 - cmp03 - ic03 - cmp04 - From Steam Cycle - Hydrogen to Pipeline - Makeup Water - ToHRSGLP Drum - - - - - - ostrm05 - - - - feed01b - - - - feed01 - - - - sweep02 - - - - hstrm01 - - - - ostrm02 - - - - - - hstrm04 - - - - hstrm05 - - - - water01 - - - - water00 - - - - hstrm14 - - - - feed03 - - - - feed02 - - - - hstrm02 - - - - ostrm01 - - - - sweep01 - - - - sweep01b - - - - hstrm06 - - - - hstrm07 - - - - hstrm08 - - - - hstrm09 - - - - hstrm10 - - - - hstrm11 - - - - hstrm12 - - - - hstrm13 - - - - dryout - - - - ostrm04 - - - - sweep03 - - - - sweep04 - - - - water04 - - - - water05 - - - - ostrm06 - - - - ostrm03 - - - - water03 - - - - water02 - - - - - Summary: - - SOEC Electric Power:SOEC Current:Cell Potential:Current Density:SOEC Power/H2:H2 Product Rate:Sweep Turbine Power:Sweep Compressor Power:Feed heater Power:Sweep heater Power:Pump Power:Compressor Power:Total electric Power:Total Power/H2:Water utilization:Estimated number of cells: - - 635.854 MW - -478.622 MA - 1.289 V - 127.165 MJ/kg - 5.000 kg/s - -27.187 MW - 19.604 MW - 10.798 MW - 21.225 MW - 685.882 MW - 38.103 kWh/kg - 0.035 MW - 78.3% - 25.552 MW - 1.0884e+06 cells - -7997 A/m**2 - - - - F:T:P: - 3.100 kmol/s - 577.11 K - 2.900 bar - - - - - - - F:T:P:yH2: - 3.439 kmol/s - 998.28 K - 2.900 bar - - 79.999% - - - - - - - F:T:P:yO2: - 5.904 kmol/s - 886.25 K - 2.900 bar - - 21.345% - - - - - - F:T:P: - 3.100 kmol/s - 998.28 K - 2.900 bar - - - - - - F:T:P: - 5.653 kmol/s - 881.93 K - 2.900 bar - - - - - F:T:P: - 0.251 kmol/s - 981.90 K - 2.900 bar - - - - - - - - F:T:P:yH2: - 3.100 kmol/s - 647.10 K - 2.900 bar - - 79.999% - - - - - - - - T:P: - 342.34 K - 1.010 bar - - - - - - T:P:VF: - 431.98 K - 6.000 bar - - - 23.68% - - T:P:VF: - 431.98 K - 6.000 bar - - 18.20% - - - F:T:P: - 3.100 kmol/s - 319.86 K - 2.900 bar - - - - - F:T:P: - 1.542 kmol/s - 288.19 K - 6.000 bar - - - - - F:T:P: - 1.558 kmol/s - 288.19 K - 6.000 bar - - - - - - - - F:T:P: - 3.100 kmol/s - 288.15 K - 1.010 bar - - - - - T:P: - 288.19 K - 6.000 bar - - - - - - - F:T:P: - 2.480 kmol/s - 319.86 K - 2.900 bar - - - - - - T:P: - 300.00 K - 2.900 bar - - - - - T:P: - 393.99 K - 6.612 bar - - - - - T:P: - 300.00 K - 6.612 bar - - - - - - - - T:P: - 394.06 K - 15.076 bar - - - - - - T:P: - 371.12 K - 65.000 bar - - - - - - T:P: - 300.00 K - 15.076 bar - - - - - - T:P: - 394.21 K - 34.373 bar - - - - - T:P: - 300.00 K - 34.373 bar - - - - - - - F:T:P: - 5.653 kmol/s - 288.15 K - 1.010 bar - - - - - - F:T:P: - 6.893 kmol/s - 478.62 K - 1.010 bar - - - - - - F:T:P: - 5.653 kmol/s - 407.28 K - 2.900 bar - - - - - - F:T:P: - 6.893 kmol/s - 608.89 K - 2.900 bar - - - - - - F:T:P: - 6.893 kmol/s - 981.90 K - 2.900 bar - - - - - - - F:T:P:yH2: - 3.439 kmol/s - 878.92 K - 2.900 bar - - 7.886% - - - - - - - - F:T:P:yO2: - 7.144 kmol/s - 981.90 K - 2.900 bar - - 35.000% - - - - - F:T:P: - 3.439 kmol/s - 958.38 K - 2.900 bar - - - - - - F:T:P: - 5.904 kmol/s - 995.83 K - 2.900 bar - - - - - - F:T:P: - 0.339 kmol/s - 998.28 K - 2.900 bar - - - - - F:T:P: - 3.100 kmol/s - 868.44 K - 2.900 bar - - - - - - - \ No newline at end of file diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/st_soec_base.svg b/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/st_soec_base.svg deleted file mode 100644 index 4c16fab6..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/st_soec_base.svg +++ /dev/null @@ -1,465 +0,0 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HRSG - Cold Flue Gas - Gas Turbine Exhaust - Makeup Water - HP - IP - LP - Condensate Pump - Condenser - - - Cold Reheat - Hot Reheat - - - - - - - From Dryer - From Reclaimer - - - - - - - - - - - To Reclaimer - To Dryer - To Ejector - - - - - - - From NG Preheater - To NG Preheater - - - - - - - - - - CaptureReboiler - - - - - To SOEC - - - - - - - - t01 - - - - t02 - - - - t11 - - - - t15 - - - - t14 - - - - t13 - - - - t10 - - - - t09 - - - - t13 - - - - t04 - - - - t05 - - - - t03 - - - - t06 - - - - t07 - - - - t08 - - - - t12 - - - - cw01 - - - - cw02 - - - - t18 - - - - t17 - - - - t16 - - - - - - 134.553 kg/s - 859.52 K - 172.456 bar - 63.535 kJ/mol - 1.000 - - - - F:T:P:H:X: - - - 153.186 kg/s - 857.71 K - 19.521 bar - 65.873 kJ/mol - 1.000 - - - F:T:P:H:X: - - - - - - - 0.793 kg/s - 306.25 K - 1.013 bar - 2.500 kJ/mol - 0.000 - - - F:T:P:H:X: - - - 3603.056 kg/s - 289.70 K - 5.000 bar - 1.260 kJ/mol - 0.000 - - - F:T:P:H:X: - - - 71.938 kg/s - 307.61 K - 0.055 bar - 45.225 kJ/mol - 0.978 - - - F:T:P:H:X: - - - - 38.644 kg/s - 557.00 K - 6.550 bar - 54.529 kJ/mol - 1.000 - - - F:T:P:H:X: - - - 55.854 kg/s - 577.11 K - 2.900 bar - 55.449 kJ/mol - 1.000 - - - F:T:P:H:X: - - - - - - - 64.038 kg/s - 577.11 K - 2.900 bar - 55.449 kJ/mol - 1.000 - - - F:T:P:H:X: - - - 153.186 kg/s - 583.43 K - 2.900 bar - 55.681 kJ/mol - 1.000 - - - F:T:P:H:X: - - - 134.553 kg/s - 585.07 K - 24.002 bar - 54.783 kJ/mol - 1.000 - - - F:T:P:H:X: - - - - 71.938 kg/s - 577.11 K - 2.900 bar - 55.449 kJ/mol - 1.000 - - - F:T:P:H:X: - - - - - - 136.770 kg/s - 353.07 K - 6.550 bar - 6.038 kJ/mol - 0.000 - - - - F:T:P:H:X: - - - - 0.001 kg/s - 487.00 K - 20.000 bar - 50.496 kJ/mol - 1.000 - - - F:T:P:H:X: - - - 0.000 kg/s - 476.00 K - 16.000 bar - 50.393 kJ/mol - 1.000 - - - F:T:P:H:X: - - - 71.938 kg/s - 307.61 K - 0.055 bar - 2.601 kJ/mol - 0.000 - - - F:T:P:H:X: - - - 3603.056 kg/s - 300.99 K - 5.000 bar - 2.111 kJ/mol - 0.000 - - - F:T:P:H:X: - - - - 64.038 kg/s - 404.22 K - 2.900 bar - 9.926 kJ/mol - 0.000 - - - F:T:P:H:X: - - - - 72.731 kg/s - 307.59 K - 0.055 bar - 2.600 kJ/mol - 0.000 - - - F:T:P:H:X: - - - - 72.731 kg/s - 307.65 K - 6.550 bar - 2.615 kJ/mol - 0.000 - - - F:T:P:H:X: - - - \ No newline at end of file diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/00Readme.txt b/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/00Readme.txt deleted file mode 100644 index 9fc0de07..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/00Readme.txt +++ /dev/null @@ -1 +0,0 @@ -This directory contains tabulated model results. diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc.csv b/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc.csv deleted file mode 100644 index bd74029e..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc.csv +++ /dev/null @@ -1,101 +0,0 @@ -,st_power (MW),gt_power (MW),gross_power (MW),net_power (MW),lhv_efficiency (%),hhv_efficiency (%),combustor_temperature (K),fuel_flow (kg/s),st_throttle_delta_pressure (bar),st_condenser_pressure (bar),st_throttle_inlet_temperature (K),st_throttle_outlet_temperature (K),fuel_cost_rate (USD_2018/h),other_variable_cost_rate (USD_2018/h),total_variable_cost_rate (USD_2018/h) -650.0,215.39330487553852,481.0013493932915,696.39465426883,650.0,52.744074825695066,47.600771162003966,1642.247816940331,26.109447338280205,-4.863429297495247,0.09343316586276104,858.3305941557788,856.6514975916158,20594.375476034616,3665.798834734161,24260.174310768776 -646.0,214.61094659406908,477.59269176099696,692.203638355066,646.0,52.698790971428956,47.55990313291485,1641.5143778145093,25.9710714907792,-5.453899925996578,0.09303274324956412,858.3930903747474,856.5095632003962,20485.228617300756,3646.3706938795344,24131.59931118029 -645.0,214.41526281611982,476.740621633062,691.1558844491817,645.0,52.68738924950068,47.5496132423792,1641.3300437200753,25.936480117806628,-5.601511585724672,0.09293285116330405,858.4087963385343,856.4741447481821,20457.94394466871,3641.51402215103,24099.45796681974 -640.0,213.4361801420672,472.48094027995575,685.9171204220229,640.0,52.62988134886113,47.49771318673509,1640.402492727773,25.763542851292634,-6.339503619112701,0.09243473585069148,858.4878220994792,856.2974591758798,20321.536040118142,3617.233415141029,23938.76945525917 -635.0,212.45605468614454,468.22230663151134,680.6783613176559,635.0,52.57153522639919,47.445056647916665,1639.4650199882526,25.590635260262953,-7.077420424725511,0.09193880520672576,858.567688757183,856.1214550932906,20185.151542729684,3592.9569746058833,23778.108517335568 -630.0,211.47486506929354,463.9647423048062,675.4396073740998,630.0,52.51233276147628,47.39162727230746,1638.5174829674686,25.41775793459038,-7.81527010894534,0.09144505770711417,858.6484135840955,855.9461491255493,20048.790917777893,3568.6847833644647,23617.475701142357 -625.0,210.49259709767026,459.7082613789606,670.2008584766309,625.0,52.452255883685126,47.337408751624054,1637.559734435803,25.24491120666458,-8.553063956561566,0.09095348623969805,858.7300144620111,855.7715574594366,19912.454427442117,3544.4168880846964,23456.871315526812 -620.0,209.50923623055124,455.45287835183393,664.9621145823852,620.0,52.391285885031266,47.282384202169716,1636.591624111989,25.07209548008432,-9.290813671996723,0.09046408340537021,858.8125097118034,855.5976966308666,19776.142390069363,3520.1533454323467,23296.29573550171 -615.0,208.52477250339916,451.1986029502377,659.7233754536369,615.0,52.329403829145235,47.22653653414255,1635.6129973803274,24.89931102500382,-10.028533258094532,0.08997683803896846,858.8959182301865,855.4245830087045,19639.855018749455,3495.894193337403,23135.74921208686 -610.0,207.53918145882923,446.9454602666974,654.4846417255267,610.0,52.26658879908758,47.16984687030465,1634.6236998474374,24.72655880267609,-10.766232016103539,0.08949174838732744,858.9802590170057,855.2522347614017,19503.593071690906,3471.639566760981,22975.232638451886 -605.0,206.55245161819045,442.69346176875035,649.2459133869409,605.0,52.20282032530908,47.11229673718142,1633.62357059065,24.55383929506797,-11.503924793069661,0.08900880292361699,859.0655518821238,855.0806689972738,19367.356929055193,3447.3895333718247,22814.746462427018 -600.0,205.56456681305716,438.4426239583346,644.0071907713917,600.0,52.13807675895817,47.05386659699476,1632.6124463447538,24.381153270283455,-12.241625511582255,0.08852799256030318,859.1518170099436,854.9099035828395,19231.1471967005,3423.1442010126893,22654.29139771319 -595.0,204.57547918734832,434.1929968815723,638.7684760689206,595.0,52.07233272521172,46.99453354933066,1631.5901683630966,24.208502948988205,-12.979337320563445,0.08804932891838571,859.2390742509256,854.7399598796587,19094.96562622354,3398.90388146779,22493.86950769133 -590.0,203.5852306698162,429.94453590580775,633.529766575624,590.0,52.00557026480943,46.934281386214245,1630.556551403751,24.035886802799592,-13.71709745247244,0.08757276121212383,859.3273463349262,854.5708502871206,18958.811012080394,3374.6683601503096,22333.479372230704 -585.0,202.5937755889622,425.6972889851636,628.2910645741257,585.0,51.93776247209213,46.87308582567397,1629.5114286499188,23.863307171289694,-14.454911946545991,0.08709829747340309,859.4166542148805,854.4025963884434,18822.68519965772,3350.4379655390744,22173.123165196794 -580.0,201.60109566281855,421.4512752819068,623.0523709447253,580.0,51.86888400398899,46.81092399595183,1628.4546225060658,23.690765338763235,-15.192798163319171,0.0866259256788527,859.5070200928936,854.2352171301637,18686.58920197786,3326.212877952059,22012.80207992992 -575.0,200.60717198173495,417.20651475174196,617.813686733477,575.0,51.79890845807853,46.74777206924104,1627.3859515713496,23.518262744261705,-15.930774582985029,0.0861556328044914,859.5984666938027,854.068731658611,18550.52415411505,3301.993299432478,21852.517453547527 -570.0,199.6119849625183,412.9630282005694,612.5750131630876,570.0,51.72780831550451,46.68360521016851,1626.3052305492972,23.34580099118761,-16.66886093245483,0.08568740469543303,859.6910172697344,853.9031592806322,18414.491320786718,3277.7794551000356,21692.270775886755 -565.0,198.61551429931845,408.72083734333086,607.3363516426492,565.0,51.65555488404748,46.61839752441762,1625.2122701580897,23.173381855873906,-17.407078325011227,0.08522122592310885,859.7846956026913,853.7385194176474,18278.492103112832,3253.571594354084,21532.063697466918 -560.0,197.6177389114321,404.4799648640487,602.0977037754808,560.0,51.582118242743825,46.55212200874777,1624.1068770423883,23.00100729448041,-18.145449412858298,0.08475707963003394,859.8795260047061,853.5748315524629,18142.52804405557,3229.369991841891,21371.89803589746 -555.0,196.61863688842945,400.2404344757316,596.859071364161,555.0,51.50746718989202,46.48475050407081,1622.9888536879112,22.828679447431075,-18.88399855250507,0.08429494736264313,859.9755333152656,853.4121151684865,18006.60083191932,3205.174948081639,21211.77578000096 -550.0,195.6181854332243,396.0022709784406,591.6204564116649,550.0,51.43156919677391,46.416253653685054,1621.857998340181,22.656400640430526,-19.622751982327244,0.08383480889343668,860.0727428940274,853.2503896795387,17870.712301152496,3180.986789605144,21051.69909075764 -545.0,194.61636080430506,391.7655003129501,586.3818611172552,545.0,51.35439037002649,46.346600869316454,1620.7141049290021,22.4841733808816,-20.361738011129404,0.08337664203438114,860.1711806121377,853.0896743539882,17734.864429521804,3156.8058684548805,20891.670297976685 -540.0,193.61313825835782,387.5301496071578,581.1432878655157,540.0,51.275895426190765,46.275760308149216,1619.5569630006048,22.312000348331335,-21.100987215178233,0.0829204224450316,860.2708728348092,852.9299882265893,17599.059330576296,3132.6325608425805,20731.691891418875 -535.0,192.60849199562844,383.2962472110753,575.9047392067038,535.0,51.19604768269531,46.2036988646887,1618.3863576593428,22.13988437733075,-21.840532640485403,0.08246612343976482,860.3718464006996,852.7713500047513,17463.29924012768,3108.4672647427265,20571.766504870404 -530.0,191.60239511068355,379.0638227156672,570.6662178263507,530.0,51.114809070152575,46.13038218185854,1617.2020695210451,21.9678284309172,-22.58041000523615,0.08201371580059712,860.4741285933305,852.6137779661576,17327.58649533396,3084.3103961694446,20411.896891503402 -525.0,190.59481955218442,374.83290694965814,565.4277265018426,525.0,51.03214017146405,46.0557746862926,1616.0038746800083,21.795835562765305,-23.32065789576551,0.08156316760374675,860.5777471046309,852.4572898501233,17191.92350484518,3060.1623838624414,20252.08588870762 -520.0,189.58573609620035,370.60353194747404,560.1892680436745,520.0,50.94800029363989,45.97983965315111,1614.7915446912748,21.62390886599266,-24.06131794742113,0.08111444407035245,860.6827299892467,852.3019027443327,17056.312708422887,3036.0236620992737,20092.33637052216 -515.0,188.57511433854077,366.37573088058963,554.9508452191305,515.0,50.86234757837038,45.90253930590979,1613.564846569437,21.45205140667266,-24.80243499963021,0.08066750745385726,860.7891056083505,852.1476329694768,16920.756524496912,3011.89466136045,19932.65118585736 -510.0,187.56292271253744,362.14953794394097,549.7124606564784,510.0,50.775139157042204,45.82383495625988,1612.3235428040884,21.280266140371783,-25.54405721235267,0.0802223169786644,860.8969025616091,851.9944959649297,16785.257284332456,2987.7757966111767,19773.033080943635 -505.0,186.54912853954295,357.9249881887341,544.4741167282771,505.0,50.6863313549176,45.74368718837688,1611.0673913908272,21.108555810549593,-26.286236129356965,0.07977882884621298,861.0061496059234,851.8425061792868,16649.81715189092,2963.667453036583,19613.4846049275 -500.0,185.53369811996396,353.7021172935912,539.2358154135551,500.0,50.59587994735071,45.66205609015207,1609.7961458747811,20.936922828511303,-27.02902667251707,0.07933699632536474,861.1168755596187,851.6916769700688,16514.438029139987,2939.569969186917,19454.007998326902 -495.0,184.51659687267679,349.4809612671807,533.9975581398575,495.0,50.503740468051284,45.578901531396184,1608.5095554012041,20.765369135831595,-27.772487051235682,0.078896769943321,861.2291091907994,851.5420205169968,16379.121447537504,2915.483617661676,19294.60506519918 -490.0,183.49778953005915,345.2615560781221,528.7593456081813,490.0,50.40986856536102,45.49418348537363,1607.2073647648058,20.593896051807796,-28.516678572498773,0.07845809779066752,861.3428790886716,851.3935477529051,16243.868447706967,2891.40858369184,19135.277031398808 -485.0,182.4772403941548,341.0439372119646,523.5211776061194,485.0,50.31422039730226,45.40786238532824,1605.8893144463443,20.422504110516837,-29.26166534068915,0.07802092594899145,861.458213516867,851.2462683152626,16108.679450912792,2867.3449422624767,18976.02439317527 -480.0,181.45491365672973,336.8281391604717,518.2830528172015,480.0,50.21675304991835,45.31989950202956,1604.5551406215284,20.2511928943607,-30.007513842391305,0.07758519904134863,861.5751402479204,851.1001905192759,15973.554127765752,2843.2926347423036,18816.846762508056 -475.0,180.43077378167266,332.61419485558594,513.0449686372585,475.0,50.11742495664827,45.230257322252356,1603.204575124675,20.079960873366705,-30.75429242056267,0.07715086089454906,861.6936863783008,850.9553213505112,15838.491271467745,2819.2514463212583,18657.742717789002 -470.0,179.4047859427074,328.40213506832134,507.80692101102875,470.0,50.01619628984669,45.13889990211786,1601.837345347372,19.90880526167773,-31.502070654202257,0.0767178552880386,861.8138781236114,850.8116664709383,15703.488684615393,2795.2209858615397,18498.709670476932 -465.0,178.37691650277844,324.19198780136753,502.5689043041459,465.0,49.91302929015556,45.04579316434689,1600.4531740522327,19.737721904202868,-32.25091867348383,0.07628612674826758,861.9357405937188,850.669230227465,15568.543089793393,2771.2006699832236,18339.74375977662 -460.0,177.34713351437256,319.98377771167446,497.330911226047,460.0,49.80788849658286,44.9509051059027,1599.0517790837307,19.566705206812806,-33.000906454831444,0.07585562133145807,862.0592975477332,850.5280156468781,15433.650074514642,2747.1897132636063,18180.839787778248 -455.0,176.31540721342094,315.77752560464097,492.0929328180619,455.0,49.70074084115138,44.85420588341004,1597.6328729628358,19.395748122315602,-33.752103153136105,0.07542628732463622,862.1845711288809,850.3880243965427,15298.804080158357,2723.187126268187,18021.991206426545 -450.0,175.28171047434992,311.57324804295257,486.85495851730246,450.0,49.59155557807856,44.75566774924108,1596.196162359929,19.22484220135876,-34.504576536828964,0.0749980757876364,862.311581579477,850.2492566871969,15163.998442120115,2699.19172269738,17863.190164817497 -445.0,174.2460191918393,307.3709571092798,481.61697630111905,445.0,49.480304029080166,44.65526482165552,1594.7413474505054,19.053977712331708,-35.25839259232969,0.07457094086110339,862.4403469365424,850.111711094029,15029.225484387503,2675.2021362209757,17704.42762060848 -440.0,173.20831255655494,303.1706603523906,476.3789729089455,440.0,49.3669591432358,44.55297268758565,1593.268121170222,18.883143827550015,-36.01361535556164,0.0741448397796064,862.5708827092677,849.9753842759945,14894.476666396797,2651.2168466186295,17545.693513015427 -435.0,172.16857319863297,298.9723609307352,471.1409341293682,435.0,49.25149489016418,44.44876785498565,1591.7761683972342,18.712328865282316,-36.77030700814018,0.07371973255571478,862.7032015407236,849.8402705816462,14759.742773936803,2627.234213760751,17386.976987697555 -430.0,171.13225203583738,294.770085353877,465.9023373897143,430.0,49.13534326993093,44.343942683379346,1590.2647134417214,18.540970481222836,-37.5332175221805,0.07328984970905425,862.8319905130074,849.6991182128778,14624.58024611441,2603.1752838083653,17227.755529922775 -425.0,170.10687198032218,290.55558920069,460.6624611810122,425.0,49.02055843304805,44.24035101414661,1588.7326816326618,18.368287869330366,-38.308705697227175,0.07284736276735479,862.9495536087703,849.5415811928473,14488.373205750071,2578.9304306235126,17067.303636373585 -420.0,169.07939013053394,286.3431125512023,455.4225026817362,420.0,48.90366525669099,44.13485659877275,1587.1807311050834,18.19557907988968,-39.0855657006151,0.0724059500508119,863.0683806726084,849.3847173338154,14352.145517294246,2554.6819020783755,16906.82741937262 -415.0,168.04975766957492,282.13269875499776,450.1824564245727,415.0,48.784612639891726,44.02741331936691,1585.608499204108,18.02284041129453,-39.863838391491,0.07196559384004507,863.1884959357851,849.2285394120562,14215.89426102721,2530.429178462843,16746.323439490054 -410.0,167.01792404044903,277.9243928363667,444.94231687681577,410.0,48.663347436950474,43.917973212697184,1584.0156141596442,17.850068142600463,-40.64356576985844,0.0715262762060817,863.309924351335,849.0730606033045,14079.61650197578,2506.171737351689,16585.788239327467 -405.0,165.98383684940728,273.71824160243017,439.7020784518374,405.0,48.53981431910908,43.806486345352745,1582.4016947611356,17.677258545256276,-41.42479112658672,0.07108797888081372,863.4326916284328,848.9182944669278,13943.309299166838,2481.909055251697,16425.218354418535 -400.0,164.94744173962403,269.5142937789599,434.46173551858385,400.0,48.413955633090275,43.69290068607765,1580.7663500328833,17.50440789307071,-42.20755919076897,0.07065068314026395,863.5568242675674,848.7642549318498,13806.96971348867,2457.640609000983,16264.610322489654 -395.0,163.90868225989584,265.3126001472391,429.22128240713494,395.0,48.285711260370725,43.577161978766696,1579.1091789004913,17.331512468917328,-42.99191628025197,0.07021436969002168,863.682349597396,848.610956283072,13670.59481297967,2433.365876710381,16103.960689690051 -390.0,162.86749972956324,261.11321368045606,423.98071341001923,390.0,48.15501847798675,43.459213616844636,1577.429769847504,17.158568567851134,-43.777910452504386,0.06977901855619784,863.8092958133319,848.4584131498771,13534.181675286574,2409.0843382010103,15943.266013487584 -385.0,161.82383310067945,256.9161896783195,418.74002277899893,385.0,48.021811821264066,43.338996519381716,1575.7277005609465,16.985572496465203,-44.56559165331133,0.0693446089848221,863.9376920179408,848.3066404967274,13397.727387157034,2384.795474913952,15782.522862070986 -380.0,160.77759517422803,252.72161088961832,413.4992060638463,380.0,47.88602001156767,43.216446358432016,1574.002547918326,16.812521599586475,-45.35500315083104,0.06891113298562711,864.0675673563527,848.1556558383974,13261.22985426748,2360.4989140596113,15621.728768327092 -375.0,159.72876624062283,248.52948852088474,408.2582547615076,375.0,47.74757744463656,43.09150392709074,1572.253846691052,16.639410163687227,-46.146216214093116,0.06847854112274605,864.1989546476921,848.0054704256074,13124.684569952798,2336.193853451598,15460.878423404396 -370.0,158.67725443546735,244.33990980388978,403.0171642393571,370.0,47.60640680441248,42.96409944872407,1570.4811497889207,16.466235486020526,-46.93927887948865,0.06804682305177831,864.3318851099394,847.8561023655187,12988.089402364536,2311.8799136208872,15299.969315985423 -365.0,157.6229878292493,240.1529406391217,397.77592846837103,365.0,47.46243031010922,42.83416272728786,1568.6839878862113,16.29299384151117,-47.73425003044933,0.06761595412480285,864.4663919181838,847.7075679527532,12851.44141327131,2287.5565715622934,15138.997984833604 -360.0,156.56589141164199,235.96864989023535,392.53454130187737,360.0,47.31556675993745,42.70162047933169,1566.8618788565943,16.119681462900182,-48.53119110107578,0.06718590858856886,864.6025093878833,847.5598838351174,12714.737631168417,2263.223298347978,14977.960929516394 -355.0,155.50588694225365,231.78710950921428,387.2929964514679,355.0,47.16573138574153,42.56639620281071,1565.0143273094798,15.94629452295882,-49.330166193170534,0.06675665955310203,864.7402730287993,847.4130670309828,12577.97503724871,2238.87955663027,14816.854593878981 -350.0,154.4428927968889,227.6083946646699,382.0512874615588,350.0,47.012835699235985,42.42841003831622,1563.1408240995238,15.772829115706038,-50.13124219183371,0.06632817896722315,864.8797196017913,847.2671349504275,12441.150550587541,2214.5247980045824,14655.675348592124 -345.0,153.37682380777915,223.43258387544748,376.80940768322665,345.0,46.85678732730344,42.28757862043446,1561.2408458066436,15.599281237190507,-50.93448888226083,0.0659004375981481,865.020887178607,847.1221054193669,12304.261012984118,2190.158460311173,14494.419473295291 -340.0,152.3075910960107,219.25975915184316,371.5673502478539,340.0,46.69748983388573,42.14381491700586,1559.3138541841397,15.425646766309443,-51.73997907070009,0.06547340501212115,865.1638152048731,846.977996705839,12167.303173831986,2165.779964942093,14333.08313877408 -335.0,151.23510189442607,215.09000614656804,366.32510804099417,335.0,46.53484252614121,41.9970280541848,1557.3592955724253,15.251921446025325,-52.54778871244971,0.06504704955326407,865.3085445664035,846.8348275475112,12030.273675303306,2141.3887142039885,14171.662389507295 -330.0,150.15925935920993,210.92341431748653,361.08267367669646,330.0,46.36874024276677,41.84712312540328,1555.3766002760099,15.078100865204005,-53.35799704973574,0.06462133831798832,865.4551176589816,846.6926171795817,11893.169038023287,2116.984088768145,14010.153126791432 -325.0,149.07996236846367,206.76007710392415,355.8400394723878,325.0,46.19907312260963,41.694000982546356,1553.3651819013742,14.904180441163877,-54.17068676200277,0.06419623712281762,865.6035784616917,846.5513853622093,11755.98564730547,2092.5654452203735,13848.551092525842 -320.0,147.99710530622698,202.60009211799309,350.59719742422004,320.0,46.025726351918024,41.53755800784953,1551.3244366532103,14.73015540289594,-54.98594413080432,0.06377171046390112,865.7539726138651,846.4111524067785,11618.71973991621,2068.1321137050854,13686.851853621296 -315.0,146.91057783045812,198.44356135227625,345.35413918273434,315.0,45.84857988874536,41.37768586517746,1549.2537425865328,14.556020774806042,-55.80385922120616,0.06334772146694892,865.9063474956517,846.2719392002916,11481.367391251015,2043.6833956426804,13525.050786893695 -310.0,145.82026462359238,194.29059140490935,340.11085602850176,310.0,45.66750816312417,41.2142712294352,1547.1524588118023,14.381771360743718,-56.62452608128062,0.06292423182674027,866.060752312183,846.1337672272869,11343.924502736969,2019.2185614871805,13363.14306422415 -305.0,144.72604512432298,190.14129372311035,334.8673388474333,305.0,45.482379751607326,41.047195492846384,1545.0199246500943,14.207401728031392,-57.44804296109904,0.06250120173557362,866.2172381811799,845.9966585886152,11206.386789235434,1994.7368484839071,13201.123637719342 -300.0,143.62779323930135,185.99578486599296,329.6235781052943,300.0,45.29305702472957,40.87633444679227,1542.8554587348488,14.032906191162041,-58.274512552818514,0.062078589800063116,866.375858223898,845.8606360163745,11068.749766183211,1970.2374583806115,13038.987224563823 -295.0,142.52537703297122,181.85418678812184,324.3795638210931,295.0,45.0993957656686,40.701557937658855,1540.6583580567133,13.858278794851927,-59.10404225297956,0.06165635294586788,866.5366676589501,845.7257228840817,10931.008736225062,1945.719555048061,12876.728291273123 -290.0,141.41865839422653,177.71662714465918,319.1352855388857,290.0,44.90124475825272,40.52272949501967,1538.4278969470995,13.683513296100564,-59.93674444931749,0.06123444630933326,866.6997238987836,845.5919432110156,10793.158775063104,1921.1822619612324,12714.341037024336 -285.0,140.30749267758745,173.58323962001433,313.8907322976018,285.0,44.69844534205173,40.33970593011169,1536.1633259962505,13.508603144950412,-60.77273683396265,0.060812823115028315,866.8650866480856,845.4593216592293,10655.194716280637,1896.6246594979534,12551.81937577859 -280.0,139.1917283167399,169.45416428179314,308.645892598533,280.0,44.49083093198636,40.15233690228979,1533.863870900741,13.333541463631306,-61.61214274586189,0.060391434537563626,867.0328180034135,845.3278835214265,10517.111134891857,1872.0457820107501,12389.156916902606 -275.0,138.07120631570353,165.32954805979352,303.4007543754971,275.0,44.27822648558726,39.96046443823554,1531.5287312908597,13.158321027914589,-62.45509151051212,0.05997022959456329,867.202982548495,845.1976547055535,10378.902332634529,1847.444615208946,12226.346947843474 -270.0,136.9457601648844,161.20954476986077,298.1553049347452,270.0,44.06044799782464,39.763922476048236,1529.1570792001814,12.982934225574086,-63.301718992100604,0.05954915477447817,867.3756474711557,845.0686616641041,10240.562305205236,1822.820090326532,12063.382395531768 -265.0,135.81521480504716,157.09431614027704,292.90953094532415,265.0,43.8373018124499,39.562536243740645,1526.7480579970131,12.807373053390132,-64.15216783674713,0.059128154128776526,867.5508826325914,844.9409313871897,10102.084739896216,1798.1710837015264,11900.255823597743 -260.0,134.67938881450382,152.98402941664975,287.66341823115357,260.0,43.608584389394764,39.35612204931994,1524.3007791784653,12.631628963426738,-65.00658902413431,0.058707167606965156,867.7287607988084,844.8144910837295,9963.462894343262,1773.4963951931002,11736.959289536362 -255.0,133.5380788305465,148.87887378507153,282.4169526156181,255.0,43.374079241046736,39.14448451582038,1521.8143303570366,12.455693509612768,-65.86513660445561,0.05828613870812867,867.9093569467448,844.6893694030211,9824.690106530195,1748.7948389623748,11573.48494549257 -250.0,132.39109489492128,144.77902282321105,277.1701177181323,250.0,43.13356181146862,38.92742098472885,1519.2877505650836,12.279556677100633,-66.72798227025437,0.05786499520878965,868.0927502099278,844.5655931150029,9685.75847703546,1724.065008912312,11409.823485947772 -245.0,131.23823531942574,140.68466102234197,271.92289634176774,245.0,42.8867948945235,38.70471738090839,1516.7200434891163,12.103207942835748,-67.59530676757625,0.05744366179426007,868.2790227166074,844.4431890627618,9546.659705578517,1699.3054275929758,11245.965133171492 -240.0,130.0792497246881,136.59602286893008,266.67527259361816,240.0,42.63352179103695,38.47614203703526,1514.1102002778432,11.926637887515081,-68.46728501540389,0.0570220784773225,868.4682575954206,844.3221875736308,9407.386362486088,1674.5147725225233,11081.901135008611 -235.0,128.9139171500055,132.51330990650325,261.4272270565087,235.0,42.373478059953214,38.24145629884879,1511.457144846567,11.749834536304936,-69.34412046667086,0.0566001588848791,868.6605433540076,844.2026143781524,9267.929002356352,1649.6913624194303,10917.620364775783 -230.0,127.74197388548238,128.43676711144963,256.178740996932,230.0,42.106378894416125,38.00040313224553,1508.7597795425982,11.572786556049367,-70.2260164536524,0.0561778269136246,868.8559699661664,844.0844970844031,9128.278685924304,1624.8336060945262,10753.11229201883 -225.0,126.56318029397278,124.36661186253443,250.9297921565072,225.0,41.83192918816508,37.752716208057194,1506.0169357188681,11.395480067629807,-71.11320506310625,0.055754980853178274,869.0546326890698,843.9678585260862,8988.424465743396,1599.9395549023243,10588.36402064572 -220.0,125.37723864253407,120.3031209273222,245.68035956985628,220.0,41.54980872048471,37.49810653168028,1503.2274282350295,11.21790230253115,-72.00591504386132,0.05533153466183094,869.2566274251845,843.8527237472082,8848.356270378916,1575.007416127447,10423.363686506364 -215.0,124.18387315270208,116.24654533364179,240.43041848634385,215.0,41.25968447995432,37.23627356508305,1500.389994725571,11.04003775883386,-72.90440683290299,0.054907375074995775,869.4620554057403,843.7391119783814,8708.061872365939,1550.035013281137,10258.096885647075 -210.0,122.98273794903895,112.19720784368486,235.17994579272383,210.0,40.96119356184475,36.966889791951665,1497.5033592530367,10.861872312522685,-73.8089364246543,0.05448240734948378,869.6710178333042,843.6270443609375,8567.53013109051,1525.0203633341107,10092.55049442462 -205.0,121.77350988143411,108.15540418395156,229.9289140653857,205.0,40.6539577698234,36.6896138955194,1494.566159490493,10.683388720905517,-74.71979656236739,0.05405650563294279,869.8836215824955,843.5165347049638,8426.747446016745,1499.9610453909806,9926.708491407726 -200.0,120.55583090599671,104.121463926534,224.67729483253072,200.0,40.33757210306503,36.40408036834932,1491.5769846761045,10.504569101894965,-75.63729545779452,0.05362954055715563,870.0999760906825,843.4075940888116,8285.699712272282,1474.8545487844663,9760.554261056748 -195.0,119.32931246742855,100.0957455446194,219.42505801204794,195.0,40.011603657737496,36.10989852094092,1488.5343679468915,10.325394521907503,-76.56176155005302,0.05320137472306254,870.3201941649075,843.3002299559882,8144.37199559509,1449.698215215926,9594.070210811016 -190.0,118.09354757410902,96.07862325358423,214.17217082769326,190.0,39.675591796434645,35.80665263464083,1485.4367712906144,10.145844199292561,-77.49355191775226,0.05277185425079246,870.5443937772243,843.1944449150577,8002.747904021392,1424.4891269158077,9427.2370309372 -185.0,116.84811386687173,92.07048337937617,208.91859724624788,185.0,39.32904650800596,35.49390048141265,1482.2825761230633,9.965895116795803,-78.43305749715299,0.05234080504434443,870.7727000701751,843.0902369717692,7860.809282207948,1399.2240522330144,9260.033334440963 -180.0,115.59250555517927,88.07179637399102,203.6643019291703,180.0,38.97143280139529,35.17115923950015,1479.0701339650136,9.785525057465561,-79.380676799154,0.051908065343407146,871.0052435904864,842.987607514134,7718.5386060670735,1373.899871879939,9092.438477947013 -175.0,114.32621749703942,84.08302707169454,198.40924456873398,175.0,38.60218300043203,34.837916589300036,1475.797689298694,9.604708414035978,-80.33685496387105,0.051473441664840455,871.2421700983942,842.886557369295,7575.915677329496,1348.5129905646504,8924.428667894146 -170.0,113.04869663775678,80.10468598551596,193.15338262327273,170.0,38.220683545331255,34.49361880190507,1472.4634114827122,9.42341837236499,-81.30206520976633,0.051036733067036814,871.4836434712845,842.7870970384819,7432.919345776957,1323.0596435482985,8755.978989325256 -165.0,111.75933627418527,76.13733137409253,187.8966676482778,165.0,37.8262693701456,34.13766566483504,1469.0653879657095,9.241626970021603,-82.27680886754621,0.05059773427935732,871.7298532926413,842.6892551138378,7289.527555454166,1297.5359048708415,8587.063460325007 -160.0,110.45748904329777,72.18157023312652,182.6390592764243,160.0,37.418217472881906,33.7694046791592,1465.6016153022863,9.059305165809343,-83.26161820719658,0.05015623373579286,871.9810231685442,842.5930865006655,7145.717399506886,1271.9376971122258,8417.655096619112 diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc_soec_stream_5kg_gt.csv b/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc_soec_stream_5kg_gt.csv deleted file mode 100644 index b0e311f5..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc_soec_stream_5kg_gt.csv +++ /dev/null @@ -1,28 +0,0 @@ -,mass flow (kg/s),mole flow (kmol/s),mole percent Ar (%),mole percent C2H6 (%),mole percent C3H8 (%),mole percent C4H10 (%),mole percent CH4 (%),mole percent CO2 (%),mole percent H2O (%),mole percent N2 (%),mole percent O2 (%),pressure (bar),temperature (K),volumetric flow (m**3/s) -air01,1101.1142875033825,38.1597014708379,0.9199999999999999,,,,,0.03,0.9900000000000001,77.32,20.74,1.03421,288.15,883.3174737153919 -air02,1101.1142875033825,38.1597014708379,0.9199999999999999,,,,,0.03,0.9900000000000001,77.32,20.74,1.098871958521849,288.1700180921796,831.3580235443553 -air03,1101.1142875033825,38.1597014708379,0.9199999999999999,,,,,0.03,0.9900000000000001,77.32,20.74,19.23025927413236,709.6448666689283,117.77866908228957 -air04a,1008.73520077831,34.95825507096401,0.9199999999999999,,,,,0.03,0.9900000000000001,77.32,20.739999999999995,19.23025927413236,709.6448666689283,107.89750959775876 -air04b,1008.73520077831,34.95825507096401,0.9199999999999999,9.999999999999999e-19,9.999999999999999e-19,9.999999999999999e-19,9.999999999999999e-19,0.03,0.9900000000000001,77.32,20.739999999999995,19.23025927413236,709.6448666689283,107.89750959775876 -air05,67.35725204415158,2.3343014063768694,0.9199999999999998,,,,,0.029999999999999992,0.9899999999999999,77.32,20.739999999999995,19.23025927413236,709.6448666689283,7.2047448560385075 -air06a,67.35725204415158,2.3343014063768694,0.9199999999999998,,,,,0.029999999999999992,0.9899999999999999,77.32,20.739999999999995,7.138926752662028,709.7299446049434,19.337625919680875 -air06b,67.35725204415158,2.3343014063768694,0.9199999999999998,,,,,0.029999999999999992,0.9899999999999999,77.32,20.739999999999995,7.138926752662028,709.7299446049434,19.337625919680875 -air07,14.7702720810366,0.5118716373514288,0.9199999999999999,,,,,0.03,0.9900000000000002,77.32,20.74,19.23025927413236,709.6448666689283,1.5798750478773045 -air08a,14.7702720810366,0.5118716373514288,0.9199999999999999,,,,,0.03,0.9900000000000002,77.32,20.74,2.799729194545529,709.7563948522172,10.798449886106164 -air08b,14.7702720810366,0.5118716373514288,0.9199999999999999,,,,,0.03,0.9900000000000002,77.32,20.74,2.799729194545529,709.7563948522172,10.798449886106164 -air09,10.251562599884059,0.35527335614558614,0.9199999999999999,,,,,0.029999999999999992,0.9900000000000001,77.32,20.739999999999995,19.23025927413236,709.6448666689283,1.0965395806149794 -air10a,10.251562599884059,0.35527335614558614,0.9199999999999999,,,,,0.029999999999999992,0.9900000000000001,77.32,20.739999999999995,1.100407319690911,709.7661542563852,19.0592203466656 -air10b,10.251562599884059,0.35527335614558614,0.9199999999999999,,,,,0.029999999999999992,0.9900000000000001,77.32,20.739999999999995,1.100407319690911,709.7661542563852,19.0592203466656 -fuel01,25.95136985716061,1.5050225988620711,9.999999999999999e-18,3.2,0.7000000000000001,0.4,93.10000000000001,1.0,1e-17,1.6,9.999999999999999e-18,31.026400000000002,299.817,1.1232652188390537 -fuel02,25.95136985716061,1.5050225988620711,9.999999999999999e-18,3.2,0.7000000000000001,0.4,93.10000000000001,1.0,1e-17,1.6,9.999999999999999e-18,31.026400000000002,446.9152950258822,1.7793820780548608 -g01,1034.686570635471,36.46327766982608,0.8820269794862983,0.1320800713520058,0.02889251560825127,0.016510008919000726,3.842704575897418,0.07003677162857677,0.9491377279254736,74.1946553116332,19.883956037549815,19.23025927413236,691.7793343522841,109.703373905701 -g02a,1034.8162733024383,36.506923325193085,0.8809724768861166,3.579949500067161e-18,1.78711157592441e-18,9.999999999999999e-19,9.999999999999999e-19,4.3244428199900025,9.217873630554871,74.10595229147015,11.470758781098874,18.26874631042574,1641.34663263546,273.54123346480657 -g02b,1034.8162733024383,36.50692332519309,0.8809724768861162,,,,,4.324442819990002,9.217873630554871,74.10595229147012,11.470758781098873,18.26874631042574,1641.34663263546,273.5412334648066 -g03,1034.8162733024383,36.506923325193085,0.8809724768861164,,,,,4.3244428199900025,9.217873630554871,74.10595229147013,11.470758781098874,7.138926752662028,1365.41933936123,581.3896126652335 -g04,1102.1735253465897,38.84122473156996,0.8833179745557123,,,,,4.066353020206737,8.723390330400731,74.29911190829564,12.027826766541176,7.138926752662028,1329.388517341602,602.2622008585412 -g05,1102.1735253465893,38.841224731569945,0.8833179745557123,,,,,4.066353020206737,8.723390330400731,74.29911190829564,12.027826766541176,2.799729194545529,1099.2683038098435,1268.8288839509657 -g06,1116.9437974276261,39.35309636892138,0.8837951031722132,,,,,4.013851570002851,8.622800960415955,74.33840505359888,12.141147312810103,2.799729194545529,1094.5654231668736,1280.0531254964085 -g07,1116.9437974276261,39.35309636892138,0.8837951031722132,,,,,4.013851570002851,8.622800960415955,74.33840505359888,12.141147312810103,1.100407319690911,899.6056443854467,2675.690182940732 -g08,1127.1953600275106,39.70836972506697,0.8841190307294001,,,,,3.97820779194144,8.554509795788102,74.36508157672507,12.218081804815975,1.100407319690911,898,2695.0281360424083 -st01,16.495737138359196,0.9156531636586919,,,,,,,100.0,,,43.430327782067046,460.19724622427833,0.018712234085710395 -st02,16.495737138359196,0.9156531636586919,,,,,,,100.0,,,43.430327782067046,325.67522660654794,0.016684026118343208 diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc_soec_stream_5kg_hrsg_gas.csv b/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc_soec_stream_5kg_hrsg_gas.csv deleted file mode 100644 index 502d7a57..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc_soec_stream_5kg_hrsg_gas.csv +++ /dev/null @@ -1,63 +0,0 @@ -,mass flow (kg/s),mole flow (kmol/s),mole percent CO2 (%),mole percent H2O (%),mole percent N2 (%),mole percent O2 (%),pressure (bar),temperature (K),volumetric flow (m**3/s) -g08,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.100407319690911,897.9999999999999,2670.437103598008 -g09,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0983976234630537,880.4212761145732,2622.9525369173016 -g10,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0964275365694918,840.9399887250095,2509.831455347732 -g11,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0945510285786115,821.1168733835063,2454.8697293193786 -g12,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0927200013019978,787.0106783313902,2356.846075681646 -g13,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0831848281426264,752.6474409743767,2273.7803472227038 -g14,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0815037494144273,722.0918059320115,2184.861313357406 -g15,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0815037494144273,586.1346173939501,1773.490350455747 -g16,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.08130776288593,579.3641717447459,1753.3224805405098 -g17,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0468339191061942,577.578949695999,1805.4815636859348 -g18,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.046634710215391,569.7441688779903,1781.3294298140815 -g19,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0464946419848498,559.1157295086687,1748.3331356713077 -g20,556.5870024323505,19.67865023576763,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0464946419848498,559.1157295086687,874.1665678356538 -g21,556.5870024323505,19.67865023576763,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0464946419848498,542.3018533449368,847.8783994970893 -g22,556.5870024323505,19.67865023576763,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0464946419848498,559.1157295086687,874.1665678356538 -g23,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0464946369848498,550.7175953460716,1722.0725050736237 -g24,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0464946369848498,522.782287223579,1634.7198828857051 -g25,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0115336788768345,518.8355316360592,1678.4517094927521 -g26,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.0113506196604183,516.9142453368858,1672.5389614555236 -g27,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.010181334184424,513.8060789128559,1664.4064346536982 -g28,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.01,480.81217281926723,1557.8067019861517 -g29,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.01,413.52941829103173,1339.8140390350563 -g30,1113.174004864701,39.35730047153526,4.013693621080585,8.630816486855723,75.02842213527906,12.327067756784619,1.01,387.06665144070695,1254.0760359582732 -hp01,134.55265070815372,7.468812049210355,,100.0,,,244.00000000000003,439.7716861441845,0.1470858268513 -hp02,134.55265070815372,7.468812049210355,,100.0,,,243.91268919460944,507.40428459634364,0.16000791801962613 -hp03,134.55265070815372,7.468812049210355,,100.0,,,243.82922382793305,511.21900489057447,0.16093614695911893 -hp04,134.55265070815372,7.468812049210355,,100.0,,,243.74717461694942,532.1802222450606,0.16656720586305637 -hp05,134.55265070815372,7.468812049210355,,100.0,,,243.66778525582257,547.1951232564138,0.1712809118286105 -hp06,134.55265070815372,7.468812049210355,,100.0,,,243.59045984919203,559.8210311205518,0.1758168855115598 -hp06b,134.55265070815372,7.468812049210355,,100.0,,,173.590459849192,559.3317956986742,0.17795010526342944 -hp07,134.55265070815372,7.468812049210355,,100.0,,,173.590459849192,627.2415196971301,1.085943475853971 -hp08,134.55265070815372,7.468812049210355,,100.0,,,173.4207108107916,658.5905761135058,1.5632148728576785 -hp09,134.55265070815372,7.468812049210355,,100.0,,,173.18280741729558,735.8696298569129,2.153276220810655 -hp10,134.55265070815372,7.468812049210355,,100.0,,,172.84976247178454,797.6526965832767,2.5045886415721395 -hp11,134.55265070815372,7.468812049210355,,100.0,,,172.45564969165318,859.5175621108472,2.817233457007133 -ip01,35.92277251384842,1.9940182135424476,,100.0,,,43.85,436.12545209746065,0.03961655002925777 -ip02,35.92277251384842,1.9940182135424476,,100.0,,,43.430327782067046,460.19724622427833,0.04074963868839372 -ip03,19.427035375489222,1.0783650498837554,,100.0,,,43.430327782067046,460.19724622427833,0.02203740460268332 -ip04,16.495737138359196,0.9156531636586919,,100.0,,,43.430327782067046,460.19724622427833,0.018712234085710395 -ip05,19.427035375489222,1.0783650498837554,,100.0,,,42.43281224594589,514.3170079206308,0.023907323009632837 -ip06,19.427035375489222,1.0783650498837554,,100.0,,,42.43281224594589,527.4354277663331,0.9114689101591396 -ip07,19.427035375489222,1.0783650498837554,,100.0,,,42.26432313893727,559.9971958796934,1.0322971894791337 -ip08,153.18582544446483,8.503111108003768,,100.0,,,24.001353467539808,578.3211012074823,16.016766266724154 -ip09,153.18582544446483,8.503111108003768,,100.0,,,22.992808951743164,705.684543188747,21.14788913147699 -ip10,153.18582544446483,8.503111108003768,,100.0,,,19.520691685069558,857.7119925922289,30.76017176329674 -ip11,134.55265070815372,7.468812049210355,,100.0,,,24.001353467539808,585.0649232898572,14.276257190177793 -ip12,0.09956896152403376,0.005526920916415662,,100.0,,,24.001353467539808,585.0649232898572,0.010564430320731566 -ip13,0.6574242513600467,0.03649261567244221,,100.0,,,24.001353467539808,585.0649232898572,0.0697537926312095 -ip14,0.03686742629403412,0.0020464545014836372,,100.0,,,24.001353467539808,585.0649232898572,0.003911694470108715 -ip15,133.75879006897563,7.4247460581200135,,100.0,,,24.001353467539808,585.0649232898572,14.192027272755743 -lp01,136.7681176025771,7.5917892313662545,,100.0,,,6.550000000000001,353.06884621222355,0.14069504884796233 -lp02,136.7681176025771,7.5917892313662545,,100.0,,,6.550000000000001,407.52227269824976,0.14686244230616405 -lp03,16.495737138359196,0.9156531636586919,,100.0,,,43.430327782067046,325.67522660654794,0.016684026118343208 -lp04,153.26385474093627,8.507442395024945,,100.0,,,6.550000000000001,398.89093783760757,0.16328580861772787 -lp05,153.26385474093627,8.507442395024945,,100.0,,,6.550000000000001,435.4346835656702,8.063613518420778 -lp06,170.47542322200218,9.462830262752803,,100.0,,,6.550000000000001,435.4346835656702,0.18832810554602078 -lp08,35.92277251384842,1.9940182135424476,,100.0,,,6.550000000000001,435.4346835656702,0.03968470977006257 -lp09,134.55265070815372,7.468812049210355,,100.0,,,6.550000000000001,435.4346835656702,0.1486433957759582 -lp10,38.642136035599805,2.1449659275454467,,100.0,,,6.550000000000001,435.4346835656704,11.224668176408528 -lp11,38.642136035599805,2.1449659275454467,,100.0,,,6.550000000000001,557.0014244510184,14.893932875124152 -lp12,55.85370451666565,3.100353795273301,,100.0,,,6.000000000000001,431.97647726522246,3.7417430545775936 -lp13,209.11755925760193,11.607796190298247,,100.0,,,6.550000000000001,435.4346835656702,11.412996281954559 diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc_soec_stream_5kg_hrsg_steam.csv b/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc_soec_stream_5kg_hrsg_steam.csv deleted file mode 100644 index e16c76df..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc_soec_stream_5kg_hrsg_steam.csv +++ /dev/null @@ -1 +0,0 @@ -"" diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc_soec_stream_5kg_soec.csv b/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc_soec_stream_5kg_soec.csv deleted file mode 100644 index 83d612ea..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc_soec_stream_5kg_soec.csv +++ /dev/null @@ -1,37 +0,0 @@ -,mass flow (kg/s),mole flow (kmol/s),mole percent Ar (%),mole percent CO2 (%),mole percent H2 (%),mole percent H2O (%),mole percent N2 (%),mole percent O2 (%),pressure (bar),temperature (K),vapor fraction (%),volumetric flow (m**3/s) -feed01,89.61866574418417,9.57396116155975,,,54.09342512462085,45.90657487537917,,,2.9000019322230313,933.8458240129759,100,256.33073611509946 -feed01b,89.61866574418417,9.57396116155975,,,54.09342512462085,45.90657487537917,,,2.9000019322230313,933.8669616235236,100,256.3365460174378 -feed02,55.85370451666565,3.100353795273301,,,,100.0,,,2.9000019322230313,877.9961223458092,100.0,77.94102953778706 -feed02b,55.85374172091119,3.100353795273301,,,9.999999999995476e-18,100.0,,,2.9000019322230313,877.9961223540182,100,77.91642162643353 -feed03,55.85370451666565,3.100353795273301,,,,100.0,,,2.9000019322230313,577.1102804957496,100.0,50.948589166646144 -hstrm01,49.935699904423196,9.573961161559746,,,79.99995883661028,20.00004116338974,,,2.9000019322230313,967.4643177776798,100,265.65376422216326 -hstrm02,33.764928568947866,6.473607366286448,,,79.99995883661,20.000041163389994,,,2.9000019322230313,967.4643177776798,100,179.62660762143173 -hstrm03,16.17077133547535,3.100353795273297,,,79.99995883661073,20.00004116338927,,,2.9000019322230313,967.4643177776798,100,86.0271566007315 -hstrm04,16.17077133547535,3.100353795273297,,,79.99995883661073,20.00004116338927,,,2.9000019322230313,602.4465664839423,100,53.55525015796257 -hstrm05,16.17077133547535,3.100353795273297,,,79.99995883661073,20.00004116338927,,,2.9000019322230313,294.75226272676224,100,26.121279191431913 -hstrm06,5.0,2.4802817600079368,,,100.0,,,,2.9000019322230313,294.75226272676224,100,20.976825941300547 -hstrm07,5.0,2.4802817600079368,,,100.0,,,,2.9000019322230313,300.0,100,21.350454371783325 -hstrm08,5.0,2.4802817600079368,,,100.0,,,,6.612004405468509,393.9866864366824,100,12.311420895494079 -hstrm09,5.0,2.4802817600079368,,,100.0,,,,6.612004405468509,300.0,100,9.374059779630024 -hstrm10,5.0,2.4802817600079368,,,100.0,,,,15.0753700444682,394.05874524164653,100,5.41410916182838 -hstrm11,5.0,2.4802817600079368,,,100.0,,,,15.0753700444682,300.0,100,4.121612517514159 -hstrm12,5.0,2.4802817600079368,,,100.0,,,,34.37184370138749,394.21234870669565,100,2.389378079851893 -hstrm13,5.0,2.4802817600079368,,,100.0,,,,34.37184370138749,300.0,100,1.8186847921311518 -hstrm15,5.0,2.4802817600079368,,,100.0,,,,65.0,371.12240958068446,100,1.2015292283646866 -ostrm01,318.8335048810722,10.83700564134388,0.7544802344616545,0.024602616341140887,,0.8118863392576493,63.40914318323383,34.99988762670572,2.9000019322230313,980.5252648776553,100,304.8796177978298 -ostrm02,116.03551660012269,3.943994369289493,0.7544802344616657,0.024602616341141248,,0.8118863392576614,63.40914318323478,34.99988762670474,2.9000019322230313,980.5252648776553,100,110.9571717226365 -ostrm03,202.79798828094954,6.893011272054389,0.7544802344616496,0.024602616341140728,,0.8118863392576441,63.40914318323341,34.99988762670615,2.9000019322230313,980.5252648776553,100,193.92244607519336 -ostrm04,202.79798828094954,6.893011272054389,0.7544802344616496,0.024602616341140728,,0.8118863392576442,63.40914318323341,34.99988762670615,2.9000019322230313,604.5778899789707,100,119.57711835270436 -ostrm05,202.79798828094954,6.893011272054389,0.7544802344616496,0.024602616341140734,,0.8118863392576442,63.40914318323341,34.99988762670615,1.01,475.1115826888095,100,269.6473463175309 -ostrm06,202.79798828094954,6.893011272054389,0.7544802344616496,0.024602616341140734,,0.8118863392576442,63.40914318323342,34.99988762670615,1.01,328.8753414905283,100,186.5476262132615 -sweep01,279.1514771324358,9.59686476133991,0.8519768406138049,0.02778185349827624,,0.9168011654431159,71.60309708289064,26.60034305755416,2.9000019322230313,924.79976956185,100,254.65769060295526 -sweep01b,279.1514771324358,9.59686476133991,0.8519768406138049,0.02778185349827624,,0.9168011654431159,71.60309708289064,26.60034305755416,2.9000019322230313,924.8252418782765,100,254.66470154513897 -sweep02,163.1159604025825,5.652870392050419,0.9199999999999998,0.029999999999999992,,0.9900000000000001,77.32,20.739999999999995,2.9000019322230313,885.200742658851,100,143.58356599817895 -sweep03,163.1159604025825,5.652870392050419,0.9199999999999998,0.029999999999999992,,0.9900000000000001,77.32,20.739999999999995,2.9000019322230313,407.2817360484109,100,66.02141552694867 -sweep04,163.11596040258246,5.652870392050418,0.9199999999999999,0.03,,0.9900000000000001,77.32,20.74,1.01,288.15,100,133.99110886628762 -water00,55.85370451666565,3.100353795273301,,,,100.0,,,1.01,288.15,0.0,0.055903879941630215 -water01,55.85370451666565,3.100353795273301,,,,100.0,,,6.000000000000001,288.18502058879545,0.0,0.055891150815121304 -water02,27.905264669703694,1.5489786035769046,,,,100.0,,,6.000000000000001,288.18502058879545,0.0,0.02792397334584878 -water03,27.948439846961964,1.5513751916963967,,,,100.0,,,6.000000000000001,288.18502058879545,0.0,0.02796717746927253 -water04,27.905264669703694,1.5489786035769046,,,,100.0,,,6.000000000000001,431.97647726522246,20.67714732394928,1.8452784022549624 -water05,27.948439846961964,1.5513751916963967,,,,100.0,,,6.000000000000001,431.97647726522246,21.227035370301635,1.896464652326651 diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc_soec_stream_5kg_st.csv b/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc_soec_stream_5kg_st.csv deleted file mode 100644 index fdd016f2..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/data_tabulated/ngcc_soec_stream_5kg_st.csv +++ /dev/null @@ -1,23 +0,0 @@ -,mass flow (kg/s),molar enthalpy (kJ/mol),mole flow (kmol/s),pressure (bar),temperature (K),vapor fraction (dimensionless),volumetric flow (m**3/s) -cw01,3603.0536,1.26,200.0,5.0,289.69843477991503,0.0,3.606515207717081 -cw02,3603.0536,2.111008036933931,200.0,5.0,300.99462904753096,0.0,3.615859145650672 -t01,134.55265070815372,63.534903396933515,7.468812049210355,172.45564969165318,859.5175621108472,1.0,2.817233457007133 -t02,134.55265070815372,54.783128896807774,7.468812049210355,24.001353467539808,585.0649232898572,1.0,14.276257190177793 -t02_dummy,134.55265070815372,54.783128896807774,7.468812049210355,24.001353467539808,585.0649232898572,1.0,14.276257190177793 -t03,153.18582544446483,65.87276785422965,8.503111108003768,19.520691685069558,857.7119925922289,1.0,30.76017176329674 -t03_dummy,153.18582544446483,65.87276785422965,8.503111108003768,19.520691685069558,857.7119925922289,1.0,30.76017176329674 -t04,153.18582544446483,55.68138097716851,8.503111108003768,2.9000019322230313,583.426280651301,1.0,141.3024118589549 -t05,38.642136035599805,54.529100006059785,2.1449659275454467,6.550000000000001,557.0014244510184,1.0,14.893932875124152 -t06,71.93661235183913,55.44926362736577,3.9930914351004456,2.9000019322230313,577.1102804957496,1.0,65.61908364843642 -t07,71.93661235183913,45.22489925091178,3.9930914351004456,0.05462634650024956,307.6085861455058,0.978005002851286,1824.1849215459354 -t08,71.93661235183913,2.600879702883339,3.9930914351004456,0.05462634650024956,307.6085861455052,0.0,0.07235803247502383 -t09,72.72979021236004,2.599779527196466,4.037119526190787,0.05462634650024956,307.59397467622864,0.0,0.07315549209200829 -t10,72.72979021236004,2.614490046301378,4.037119526190787,6.550000000000001,307.6494870116652,0.0,0.07313576523966817 -t11,136.7681176025771,6.037915966829335,7.5917892313662545,6.550000000000001,353.06884621222355,0.0,0.14069504884796233 -t12,0.7931778605209012,2.5,0.044028091090340775,1.01325,306.24808547589186,0.0,0.0007974260736106698 -t13,64.03764461155986,9.925546423707624,3.554631805175469,2.9000019322230313,404.218610659449,0.0,0.06856789697745799 -t14,3.42290092e-05,50.392922742736474,1.9e-06,16.0,475.9999999999998,1.0,4.256381861378689e-06 -t15,0.000648549648,50.49588623927032,3.6e-05,20.0,487.0000000000003,1.0,6.491796070568314e-05 -t16,191.82796148006466,55.44926362736577,10.648077035549216,2.9000019322230313,577.1102804957496,1.0,174.98148215409515 -t17,64.03764461155986,55.44926362736577,3.554631805175469,2.9000019322230313,577.1102804957496,1.0,58.4138093390126 -t18,55.85370451666565,55.44926362736577,3.100353795273301,2.9000019322230313,577.1102804957496,1.0,50.948589166646144 diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/gas_turbine_init.json.gz b/idaes_examples/notebooks/active/power_gen/ngcc/gas_turbine_init.json.gz deleted file mode 100644 index 9f98593e..00000000 Binary files a/idaes_examples/notebooks/active/power_gen/ngcc/gas_turbine_init.json.gz and /dev/null differ diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/hrsg_init.json.gz b/idaes_examples/notebooks/active/power_gen/ngcc/hrsg_init.json.gz deleted file mode 100644 index 9dd547c5..00000000 Binary files a/idaes_examples/notebooks/active/power_gen/ngcc/hrsg_init.json.gz and /dev/null differ diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/index.md b/idaes_examples/notebooks/active/power_gen/ngcc/index.md deleted file mode 100644 index 92640132..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/index.md +++ /dev/null @@ -1 +0,0 @@ -# Natural gas combined cycle diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc.ipynb b/idaes_examples/notebooks/active/power_gen/ngcc/ngcc.ipynb deleted file mode 100644 index 7a640f1f..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc.ipynb +++ /dev/null @@ -1,344 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "tags": [ - "header", - "hide-cell" - ] - }, - "outputs": [], - "source": [ - "###############################################################################\n", - "# The Institute for the Design of Advanced Energy Systems Integrated Platform\n", - "# Framework (IDAES IP) was produced under the DOE Institute for the\n", - "# Design of Advanced Energy Systems (IDAES).\n", - "#\n", - "# Copyright (c) 2018-2023 by the software owners: The Regents of the\n", - "# University of California, through Lawrence Berkeley National Laboratory,\n", - "# National Technology & Engineering Solutions of Sandia, LLC, Carnegie Mellon\n", - "# University, West Virginia University Research Corporation, et al.\n", - "# All rights reserved. Please see the files COPYRIGHT.md and LICENSE.md\n", - "# for full copyright and license information.\n", - "###############################################################################" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# NGCC Baseline and Turndown\n", - "Maintainer: John Eslick \n", - "Author: John Eslick \n", - "Updated: 2023-06-01 \n", - "\n", - "This notebook runs a series of net electric power outputs from 650 MW to 160 MW (about 100% to 25%) for an NGCC with 97% CO2 capture. The NGCC model is based on the NETL report \"Cost and Performance Baseline for Fossil Energy Plants Volume 1: Bituminous Coal and Natural Gas to Electricity.\" Sept 2019, Case B31B (https://www.netl.doe.gov/projects/files/CostAndPerformanceBaselineForFossilEnergyPlantsVol1BitumCoalAndNGtoElectBBRRev4-1_092419.pdf)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Imports\n", - "\n", - "Import the modules that will be used." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import numpy as np\n", - "import pandas as pd\n", - "from IPython.core.display import SVG\n", - "import pyomo.environ as pyo\n", - "import idaes\n", - "from idaes.core.solvers import use_idaes_solver_configuration_defaults\n", - "import idaes.core.util.scaling as iscale\n", - "import idaes.core.util as iutil\n", - "from idaes_examples.mod.power_gen import ngcc\n", - "import pytest\n", - "import logging\n", - "\n", - "logging.getLogger(\"pyomo\").setLevel(logging.ERROR)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Make Output Directories\n", - "\n", - "This notebook can produce a large number of output files. To make it easier to manage, some subdirectories are used to organize output. This ensures that the directories exist." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "def make_directory(path):\n", - " \"\"\"Make a directory if it doesn't exist\"\"\"\n", - " try:\n", - " os.mkdir(path)\n", - " except FileExistsError:\n", - " pass\n", - "\n", - "\n", - "make_directory(\"data\")\n", - "make_directory(\"data_pfds\")\n", - "make_directory(\"data_tabulated\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Global Solver Settings\n", - "\n", - "Use the IDAES configuration system for solver settings. These will apply to all Ipopt instances created, including the ones created in initialization methods." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "use_idaes_solver_configuration_defaults()\n", - "idaes.cfg.ipopt.options.nlp_scaling_method = \"user-scaling\"\n", - "idaes.cfg.ipopt.options.linear_solver = \"ma57\"\n", - "idaes.cfg.ipopt.options.OF_ma57_automatic_scaling = \"yes\"\n", - "idaes.cfg.ipopt.options.ma57_pivtol = 1e-5\n", - "idaes.cfg.ipopt.options.ma57_pivtolmax = 0.1\n", - "solver = pyo.SolverFactory(\"ipopt\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create the NGCC model\n", - "\n", - "Create the NGCC model and initialize it or read the saved initialization if available. The base initialized NGCC model is configured to match the baseline report with 90% capture using a Cansolv system." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "m = pyo.ConcreteModel()\n", - "m.fs = ngcc.NgccFlowsheet(dynamic=False)\n", - "iscale.calculate_scaling_factors(m)\n", - "m.fs.initialize(\n", - " load_from=\"ngcc_init.json.gz\",\n", - " save_to=\"ngcc_init.json.gz\",\n", - ")\n", - "res = solver.solve(m, tee=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Show PFDs with baseline results\n", - "\n", - "This displays PFDs in the notebook, and saves them to files. The full NGCC model is too big to show well in a single PFD, so it is broken into the three main sections, gas turbine, heat recovery steam generator (HRSG), and steam turbine." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "def display_pfd():\n", - " print(\"\\n\\nGas Turbine Section\\n\")\n", - " display(SVG(m.fs.gt.write_pfd()))\n", - " print(\"\\n\\nHRSG Section\\n\")\n", - " display(SVG(m.fs.hrsg.write_pfd()))\n", - " print(\"\\n\\nSteam Turbine Section\\n\")\n", - " display(SVG(m.fs.st.write_pfd()))\n", - "\n", - "\n", - "display_pfd()\n", - "\n", - "m.fs.gt.write_pfd(fname=\"data_pfds/gt_baseline.svg\")\n", - "m.fs.hrsg.write_pfd(fname=\"data_pfds/hrsg_baseline.svg\")\n", - "m.fs.st.write_pfd(fname=\"data_pfds/st_baseline.svg\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Test key model outputs against NETL baseline" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "# Assert results approximately agree with baseline report\n", - "assert pyo.value(m.fs.net_power_mw[0]) == pytest.approx(646)\n", - "assert pyo.value(m.fs.gross_power[0]) == pytest.approx(-690e6, rel=0.001)\n", - "assert pyo.value(100 * m.fs.lhv_efficiency[0]) == pytest.approx(52.8, abs=0.1)\n", - "assert pyo.value(\n", - " m.fs.total_variable_cost_rate[0] / m.fs.net_power_mw[0]\n", - ") == pytest.approx(37.2799, rel=0.01)\n", - "assert pyo.value(m.fs.fuel_cost_rate[0] / m.fs.net_power_mw[0]) == pytest.approx(\n", - " 31.6462, rel=0.01\n", - ")\n", - "assert pyo.value(\n", - " m.fs.other_variable_cost_rate[0] / m.fs.net_power_mw[0]\n", - ") == pytest.approx(5.63373, rel=0.01)\n", - "assert pyo.value(m.fs.gt.gt_power[0]) == pytest.approx(-477e6, rel=0.001)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "from matplotlib import pyplot as plt\n", - "\n", - "\n", - "variables = [\"net_power\", \"gross_power\", \"gt_power\"]\n", - "netl_baseline = [646, 690, 477]\n", - "idaes_prediction = [\n", - " pyo.value(m.fs.net_power_mw[0]),\n", - " -pyo.value(m.fs.gross_power[0]) * 1e-6,\n", - " -pyo.value(m.fs.gt.gt_power[0]) * 1e-6,\n", - "]\n", - "\n", - "label_location = np.arange(len(variables))\n", - "\n", - "width = 0.4\n", - "\n", - "fig, ax = plt.subplots()\n", - "netl_data = ax.bar(variables, netl_baseline, label=\"NETL Baseline\")\n", - "idaes_sim = ax.bar(\n", - " label_location + (width / 2), idaes_prediction, width, label=\"IDAES Prediction\"\n", - ")\n", - "\n", - "ax.set_ylabel(\"Power (MW)\")\n", - "ax.set_xticks(label_location)\n", - "ax.set_xticklabels(variables)\n", - "ax.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Run turndown cases 5 MW interval\n", - "\n", - "Here we set the CO2 capture rate to 97% and set the specific reboiler duty to PZ advanced solvent system. The minimum power is 160 MW net, which corresponds to a bit under 25%. This is roughly the minimum load for the NGCC modeled. Results are tabulated for tags in the tags_output tag group in a Pandas data frame. \n", - "\n", - "To run the series, change run_series to True. Running the turndown series takes a while, unless previous saved results are available. " - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "run_series = False\n", - "if run_series:\n", - " idaes.cfg.ipopt.options.tol = 1e-6\n", - " idaes.cfg.ipopt.options.max_iter = 50\n", - " solver = pyo.SolverFactory(\"ipopt\")\n", - "\n", - " m.fs.cap_specific_reboiler_duty.fix(2.4e6)\n", - " m.fs.cap_fraction.fix(0.97)\n", - " powers = np.linspace(650, 160, int((650 - 160) / 5) + 1)\n", - " powers = list(powers)\n", - " powers.insert(1, 646)\n", - "\n", - " df = pd.DataFrame(columns=m.fs.tags_output.table_heading())\n", - "\n", - " for p in powers:\n", - " print(\"Simulation for net power = \", p)\n", - " fname = f\"data/ngcc_{int(p)}.json.gz\"\n", - " if os.path.exists(fname):\n", - " iutil.from_json(m, fname=fname, wts=iutil.StoreSpec(suffix=False))\n", - " else:\n", - " m.fs.net_power_mw.fix(p)\n", - " res = solver.solve(m, tee=False, symbolic_solver_labels=True)\n", - " if not pyo.check_optimal_termination(res):\n", - " break\n", - " iutil.to_json(m, fname=fname)\n", - " df.loc[m.fs.tags_output[\"net_power\"].value] = m.fs.tags_output.table_row(\n", - " numeric=True\n", - " )\n", - " if abs(p - 650) < 0.1:\n", - " m.fs.gt.streams_dataframe().to_csv(\n", - " \"data_tabulated/ngcc_stream_650mw_gt.csv\"\n", - " )\n", - " m.fs.st.steam_streams_dataframe().to_csv(\n", - " \"data_tabulated/ngcc_stream_650mw_st.csv\"\n", - " )\n", - " m.fs.hrsg.steam_streams_dataframe().to_csv(\n", - " \"data_tabulated/ngcc_stream_650mw_hrsg_steam.csv\"\n", - " )\n", - " m.fs.hrsg.flue_gas_streams_dataframe().to_csv(\n", - " \"data_tabulated/ngcc_stream_650mw_hrsg_gas.csv\"\n", - " )\n", - " df.to_csv(\"data_tabulated/ngcc.csv\")\n", - "\n", - " # Display the results from the run stored in a pandas dataframe\n", - " pd.set_option(\"display.max_rows\", None)\n", - " pd.set_option(\"display.max_columns\", None)\n", - " display(df)\n", - "\n", - " # Plot results\n", - " plt.plot(df[\"net_power (MW)\"], df[\"lhv_efficiency (%)\"])\n", - " plt.grid()\n", - " plt.xlabel(\"Net Power (MW)\")\n", - " plt.ylabel(\"LHV Efficiency (%)\")\n", - " plt.title(\"Net Power vs. Efficiency\")\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_init.json.gz b/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_init.json.gz deleted file mode 100644 index d27944ab..00000000 Binary files a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_init.json.gz and /dev/null differ diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_test.ipynb b/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_test.ipynb deleted file mode 100644 index 900511dc..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_test.ipynb +++ /dev/null @@ -1,344 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "tags": [ - "header", - "hide-cell" - ] - }, - "outputs": [], - "source": [ - "###############################################################################\n", - "# The Institute for the Design of Advanced Energy Systems Integrated Platform\n", - "# Framework (IDAES IP) was produced under the DOE Institute for the\n", - "# Design of Advanced Energy Systems (IDAES).\n", - "#\n", - "# Copyright (c) 2018-2023 by the software owners: The Regents of the\n", - "# University of California, through Lawrence Berkeley National Laboratory,\n", - "# National Technology & Engineering Solutions of Sandia, LLC, Carnegie Mellon\n", - "# University, West Virginia University Research Corporation, et al.\n", - "# All rights reserved. Please see the files COPYRIGHT.md and LICENSE.md\n", - "# for full copyright and license information.\n", - "###############################################################################" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# NGCC Baseline and Turndown\n", - "Maintainer: John Eslick \n", - "Author: John Eslick \n", - "Updated: 2023-06-01 \n", - "\n", - "This notebook runs a series of net electric power outputs from 650 MW to 160 MW (about 100% to 25%) for an NGCC with 97% CO2 capture. The NGCC model is based on the NETL report \"Cost and Performance Baseline for Fossil Energy Plants Volume 1: Bituminous Coal and Natural Gas to Electricity.\" Sept 2019, Case B31B (https://www.netl.doe.gov/projects/files/CostAndPerformanceBaselineForFossilEnergyPlantsVol1BitumCoalAndNGtoElectBBRRev4-1_092419.pdf)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Imports\n", - "\n", - "Import the modules that will be used." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import numpy as np\n", - "import pandas as pd\n", - "from IPython.core.display import SVG\n", - "import pyomo.environ as pyo\n", - "import idaes\n", - "from idaes.core.solvers import use_idaes_solver_configuration_defaults\n", - "import idaes.core.util.scaling as iscale\n", - "import idaes.core.util as iutil\n", - "from idaes_examples.mod.power_gen import ngcc\n", - "import pytest\n", - "import logging\n", - "\n", - "logging.getLogger(\"pyomo\").setLevel(logging.ERROR)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Make Output Directories\n", - "\n", - "This notebook can produce a large number of output files. To make it easier to manage, some subdirectories are used to organize output. This ensures that the directories exist." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "def make_directory(path):\n", - " \"\"\"Make a directory if it doesn't exist\"\"\"\n", - " try:\n", - " os.mkdir(path)\n", - " except FileExistsError:\n", - " pass\n", - "\n", - "\n", - "make_directory(\"data\")\n", - "make_directory(\"data_pfds\")\n", - "make_directory(\"data_tabulated\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Global Solver Settings\n", - "\n", - "Use the IDAES configuration system for solver settings. These will apply to all Ipopt instances created, including the ones created in initialization methods." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "use_idaes_solver_configuration_defaults()\n", - "idaes.cfg.ipopt.options.nlp_scaling_method = \"user-scaling\"\n", - "idaes.cfg.ipopt.options.linear_solver = \"ma57\"\n", - "idaes.cfg.ipopt.options.OF_ma57_automatic_scaling = \"yes\"\n", - "idaes.cfg.ipopt.options.ma57_pivtol = 1e-5\n", - "idaes.cfg.ipopt.options.ma57_pivtolmax = 0.1\n", - "solver = pyo.SolverFactory(\"ipopt\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create the NGCC model\n", - "\n", - "Create the NGCC model and initialize it or read the saved initialization if available. The base initialized NGCC model is configured to match the baseline report with 90% capture using a Cansolv system." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "m = pyo.ConcreteModel()\n", - "m.fs = ngcc.NgccFlowsheet(dynamic=False)\n", - "iscale.calculate_scaling_factors(m)\n", - "m.fs.initialize(\n", - " load_from=\"ngcc_init.json.gz\",\n", - " save_to=\"ngcc_init.json.gz\",\n", - ")\n", - "res = solver.solve(m, tee=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Show PFDs with baseline results\n", - "\n", - "This displays PFDs in the notebook, and saves them to files. The full NGCC model is too big to show well in a single PFD, so it is broken into the three main sections, gas turbine, heat recovery steam generator (HRSG), and steam turbine." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "def display_pfd():\n", - " print(\"\\n\\nGas Turbine Section\\n\")\n", - " display(SVG(m.fs.gt.write_pfd()))\n", - " print(\"\\n\\nHRSG Section\\n\")\n", - " display(SVG(m.fs.hrsg.write_pfd()))\n", - " print(\"\\n\\nSteam Turbine Section\\n\")\n", - " display(SVG(m.fs.st.write_pfd()))\n", - "\n", - "\n", - "display_pfd()\n", - "\n", - "m.fs.gt.write_pfd(fname=\"data_pfds/gt_baseline.svg\")\n", - "m.fs.hrsg.write_pfd(fname=\"data_pfds/hrsg_baseline.svg\")\n", - "m.fs.st.write_pfd(fname=\"data_pfds/st_baseline.svg\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Test key model outputs against NETL baseline" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "# Assert results approximately agree with baseline reoprt\n", - "assert pyo.value(m.fs.net_power_mw[0]) == pytest.approx(646)\n", - "assert pyo.value(m.fs.gross_power[0]) == pytest.approx(-690e6, rel=0.001)\n", - "assert pyo.value(100 * m.fs.lhv_efficiency[0]) == pytest.approx(52.8, abs=0.1)\n", - "assert pyo.value(\n", - " m.fs.total_variable_cost_rate[0] / m.fs.net_power_mw[0]\n", - ") == pytest.approx(37.2799, rel=0.01)\n", - "assert pyo.value(m.fs.fuel_cost_rate[0] / m.fs.net_power_mw[0]) == pytest.approx(\n", - " 31.6462, rel=0.01\n", - ")\n", - "assert pyo.value(\n", - " m.fs.other_variable_cost_rate[0] / m.fs.net_power_mw[0]\n", - ") == pytest.approx(5.63373, rel=0.01)\n", - "assert pyo.value(m.fs.gt.gt_power[0]) == pytest.approx(-477e6, rel=0.001)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "from matplotlib import pyplot as plt\n", - "\n", - "\n", - "variables = [\"net_power\", \"gross_power\", \"gt_power\"]\n", - "netl_baseline = [646, 690, 477]\n", - "idaes_prediction = [\n", - " pyo.value(m.fs.net_power_mw[0]),\n", - " -pyo.value(m.fs.gross_power[0]) * 1e-6,\n", - " -pyo.value(m.fs.gt.gt_power[0]) * 1e-6,\n", - "]\n", - "\n", - "label_location = np.arange(len(variables))\n", - "\n", - "width = 0.4\n", - "\n", - "fig, ax = plt.subplots()\n", - "netl_data = ax.bar(variables, netl_baseline, label=\"NETL Baseline\")\n", - "idaes_sim = ax.bar(\n", - " label_location + (width / 2), idaes_prediction, width, label=\"IDAES Prediction\"\n", - ")\n", - "\n", - "ax.set_ylabel(\"Power (MW)\")\n", - "ax.set_xticks(label_location)\n", - "ax.set_xticklabels(variables)\n", - "ax.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Run turndown cases 5 MW interval\n", - "\n", - "Here we set the CO2 capture rate to 97% and set the specific reboiler duty to PZ advanced solvent system. The minimum power is 160 MW net, which corresponds to a bit under 25%. This is roughly the minimum load for the NGCC modeled. Results are tabulated for tags in the tags_output tag group in a Pandas data frame. \n", - "\n", - "To run the series, change run_series to True. Running the turndown series takes a while, unless previous saved results are available. " - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "run_series = False\n", - "if run_series:\n", - " idaes.cfg.ipopt.options.tol = 1e-6\n", - " idaes.cfg.ipopt.options.max_iter = 50\n", - " solver = pyo.SolverFactory(\"ipopt\")\n", - "\n", - " m.fs.cap_specific_reboiler_duty.fix(2.4e6)\n", - " m.fs.cap_fraction.fix(0.97)\n", - " powers = np.linspace(650, 160, int((650 - 160) / 5) + 1)\n", - " powers = list(powers)\n", - " powers.insert(1, 646)\n", - "\n", - " df = pd.DataFrame(columns=m.fs.tags_output.table_heading())\n", - "\n", - " for p in powers:\n", - " print(\"Simulation for net power = \", p)\n", - " fname = f\"data/ngcc_{int(p)}.json.gz\"\n", - " if os.path.exists(fname):\n", - " iutil.from_json(m, fname=fname, wts=iutil.StoreSpec(suffix=False))\n", - " else:\n", - " m.fs.net_power_mw.fix(p)\n", - " res = solver.solve(m, tee=False, symbolic_solver_labels=True)\n", - " if not pyo.check_optimal_termination(res):\n", - " break\n", - " iutil.to_json(m, fname=fname)\n", - " df.loc[m.fs.tags_output[\"net_power\"].value] = m.fs.tags_output.table_row(\n", - " numeric=True\n", - " )\n", - " if abs(p - 650) < 0.1:\n", - " m.fs.gt.streams_dataframe().to_csv(\n", - " \"data_tabulated/ngcc_stream_650mw_gt.csv\"\n", - " )\n", - " m.fs.st.steam_streams_dataframe().to_csv(\n", - " \"data_tabulated/ngcc_stream_650mw_st.csv\"\n", - " )\n", - " m.fs.hrsg.steam_streams_dataframe().to_csv(\n", - " \"data_tabulated/ngcc_stream_650mw_hrsg_steam.csv\"\n", - " )\n", - " m.fs.hrsg.flue_gas_streams_dataframe().to_csv(\n", - " \"data_tabulated/ngcc_stream_650mw_hrsg_gas.csv\"\n", - " )\n", - " df.to_csv(\"data_tabulated/ngcc.csv\")\n", - "\n", - " # Display the results from the run stored in a pandas dataframe\n", - " pd.set_option(\"display.max_rows\", None)\n", - " pd.set_option(\"display.max_columns\", None)\n", - " display(df)\n", - "\n", - " # Plot results\n", - " plt.plot(df[\"net_power (MW)\"], df[\"lhv_efficiency (%)\"])\n", - " plt.grid()\n", - " plt.xlabel(\"Net Power (MW)\")\n", - " plt.ylabel(\"LHV Efficiency (%)\")\n", - " plt.title(\"Net Power vs. Efficiency\")\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.9" - } - }, - "nbformat": 4, - "nbformat_minor": 3 -} diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_usr.ipynb b/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_usr.ipynb deleted file mode 100644 index 900511dc..00000000 --- a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_usr.ipynb +++ /dev/null @@ -1,344 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "tags": [ - "header", - "hide-cell" - ] - }, - "outputs": [], - "source": [ - "###############################################################################\n", - "# The Institute for the Design of Advanced Energy Systems Integrated Platform\n", - "# Framework (IDAES IP) was produced under the DOE Institute for the\n", - "# Design of Advanced Energy Systems (IDAES).\n", - "#\n", - "# Copyright (c) 2018-2023 by the software owners: The Regents of the\n", - "# University of California, through Lawrence Berkeley National Laboratory,\n", - "# National Technology & Engineering Solutions of Sandia, LLC, Carnegie Mellon\n", - "# University, West Virginia University Research Corporation, et al.\n", - "# All rights reserved. Please see the files COPYRIGHT.md and LICENSE.md\n", - "# for full copyright and license information.\n", - "###############################################################################" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# NGCC Baseline and Turndown\n", - "Maintainer: John Eslick \n", - "Author: John Eslick \n", - "Updated: 2023-06-01 \n", - "\n", - "This notebook runs a series of net electric power outputs from 650 MW to 160 MW (about 100% to 25%) for an NGCC with 97% CO2 capture. The NGCC model is based on the NETL report \"Cost and Performance Baseline for Fossil Energy Plants Volume 1: Bituminous Coal and Natural Gas to Electricity.\" Sept 2019, Case B31B (https://www.netl.doe.gov/projects/files/CostAndPerformanceBaselineForFossilEnergyPlantsVol1BitumCoalAndNGtoElectBBRRev4-1_092419.pdf)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Imports\n", - "\n", - "Import the modules that will be used." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import numpy as np\n", - "import pandas as pd\n", - "from IPython.core.display import SVG\n", - "import pyomo.environ as pyo\n", - "import idaes\n", - "from idaes.core.solvers import use_idaes_solver_configuration_defaults\n", - "import idaes.core.util.scaling as iscale\n", - "import idaes.core.util as iutil\n", - "from idaes_examples.mod.power_gen import ngcc\n", - "import pytest\n", - "import logging\n", - "\n", - "logging.getLogger(\"pyomo\").setLevel(logging.ERROR)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Make Output Directories\n", - "\n", - "This notebook can produce a large number of output files. To make it easier to manage, some subdirectories are used to organize output. This ensures that the directories exist." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "def make_directory(path):\n", - " \"\"\"Make a directory if it doesn't exist\"\"\"\n", - " try:\n", - " os.mkdir(path)\n", - " except FileExistsError:\n", - " pass\n", - "\n", - "\n", - "make_directory(\"data\")\n", - "make_directory(\"data_pfds\")\n", - "make_directory(\"data_tabulated\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Global Solver Settings\n", - "\n", - "Use the IDAES configuration system for solver settings. These will apply to all Ipopt instances created, including the ones created in initialization methods." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "use_idaes_solver_configuration_defaults()\n", - "idaes.cfg.ipopt.options.nlp_scaling_method = \"user-scaling\"\n", - "idaes.cfg.ipopt.options.linear_solver = \"ma57\"\n", - "idaes.cfg.ipopt.options.OF_ma57_automatic_scaling = \"yes\"\n", - "idaes.cfg.ipopt.options.ma57_pivtol = 1e-5\n", - "idaes.cfg.ipopt.options.ma57_pivtolmax = 0.1\n", - "solver = pyo.SolverFactory(\"ipopt\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create the NGCC model\n", - "\n", - "Create the NGCC model and initialize it or read the saved initialization if available. The base initialized NGCC model is configured to match the baseline report with 90% capture using a Cansolv system." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "m = pyo.ConcreteModel()\n", - "m.fs = ngcc.NgccFlowsheet(dynamic=False)\n", - "iscale.calculate_scaling_factors(m)\n", - "m.fs.initialize(\n", - " load_from=\"ngcc_init.json.gz\",\n", - " save_to=\"ngcc_init.json.gz\",\n", - ")\n", - "res = solver.solve(m, tee=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Show PFDs with baseline results\n", - "\n", - "This displays PFDs in the notebook, and saves them to files. The full NGCC model is too big to show well in a single PFD, so it is broken into the three main sections, gas turbine, heat recovery steam generator (HRSG), and steam turbine." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "def display_pfd():\n", - " print(\"\\n\\nGas Turbine Section\\n\")\n", - " display(SVG(m.fs.gt.write_pfd()))\n", - " print(\"\\n\\nHRSG Section\\n\")\n", - " display(SVG(m.fs.hrsg.write_pfd()))\n", - " print(\"\\n\\nSteam Turbine Section\\n\")\n", - " display(SVG(m.fs.st.write_pfd()))\n", - "\n", - "\n", - "display_pfd()\n", - "\n", - "m.fs.gt.write_pfd(fname=\"data_pfds/gt_baseline.svg\")\n", - "m.fs.hrsg.write_pfd(fname=\"data_pfds/hrsg_baseline.svg\")\n", - "m.fs.st.write_pfd(fname=\"data_pfds/st_baseline.svg\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Test key model outputs against NETL baseline" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "# Assert results approximately agree with baseline reoprt\n", - "assert pyo.value(m.fs.net_power_mw[0]) == pytest.approx(646)\n", - "assert pyo.value(m.fs.gross_power[0]) == pytest.approx(-690e6, rel=0.001)\n", - "assert pyo.value(100 * m.fs.lhv_efficiency[0]) == pytest.approx(52.8, abs=0.1)\n", - "assert pyo.value(\n", - " m.fs.total_variable_cost_rate[0] / m.fs.net_power_mw[0]\n", - ") == pytest.approx(37.2799, rel=0.01)\n", - "assert pyo.value(m.fs.fuel_cost_rate[0] / m.fs.net_power_mw[0]) == pytest.approx(\n", - " 31.6462, rel=0.01\n", - ")\n", - "assert pyo.value(\n", - " m.fs.other_variable_cost_rate[0] / m.fs.net_power_mw[0]\n", - ") == pytest.approx(5.63373, rel=0.01)\n", - "assert pyo.value(m.fs.gt.gt_power[0]) == pytest.approx(-477e6, rel=0.001)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "from matplotlib import pyplot as plt\n", - "\n", - "\n", - "variables = [\"net_power\", \"gross_power\", \"gt_power\"]\n", - "netl_baseline = [646, 690, 477]\n", - "idaes_prediction = [\n", - " pyo.value(m.fs.net_power_mw[0]),\n", - " -pyo.value(m.fs.gross_power[0]) * 1e-6,\n", - " -pyo.value(m.fs.gt.gt_power[0]) * 1e-6,\n", - "]\n", - "\n", - "label_location = np.arange(len(variables))\n", - "\n", - "width = 0.4\n", - "\n", - "fig, ax = plt.subplots()\n", - "netl_data = ax.bar(variables, netl_baseline, label=\"NETL Baseline\")\n", - "idaes_sim = ax.bar(\n", - " label_location + (width / 2), idaes_prediction, width, label=\"IDAES Prediction\"\n", - ")\n", - "\n", - "ax.set_ylabel(\"Power (MW)\")\n", - "ax.set_xticks(label_location)\n", - "ax.set_xticklabels(variables)\n", - "ax.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Run turndown cases 5 MW interval\n", - "\n", - "Here we set the CO2 capture rate to 97% and set the specific reboiler duty to PZ advanced solvent system. The minimum power is 160 MW net, which corresponds to a bit under 25%. This is roughly the minimum load for the NGCC modeled. Results are tabulated for tags in the tags_output tag group in a Pandas data frame. \n", - "\n", - "To run the series, change run_series to True. Running the turndown series takes a while, unless previous saved results are available. " - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "run_series = False\n", - "if run_series:\n", - " idaes.cfg.ipopt.options.tol = 1e-6\n", - " idaes.cfg.ipopt.options.max_iter = 50\n", - " solver = pyo.SolverFactory(\"ipopt\")\n", - "\n", - " m.fs.cap_specific_reboiler_duty.fix(2.4e6)\n", - " m.fs.cap_fraction.fix(0.97)\n", - " powers = np.linspace(650, 160, int((650 - 160) / 5) + 1)\n", - " powers = list(powers)\n", - " powers.insert(1, 646)\n", - "\n", - " df = pd.DataFrame(columns=m.fs.tags_output.table_heading())\n", - "\n", - " for p in powers:\n", - " print(\"Simulation for net power = \", p)\n", - " fname = f\"data/ngcc_{int(p)}.json.gz\"\n", - " if os.path.exists(fname):\n", - " iutil.from_json(m, fname=fname, wts=iutil.StoreSpec(suffix=False))\n", - " else:\n", - " m.fs.net_power_mw.fix(p)\n", - " res = solver.solve(m, tee=False, symbolic_solver_labels=True)\n", - " if not pyo.check_optimal_termination(res):\n", - " break\n", - " iutil.to_json(m, fname=fname)\n", - " df.loc[m.fs.tags_output[\"net_power\"].value] = m.fs.tags_output.table_row(\n", - " numeric=True\n", - " )\n", - " if abs(p - 650) < 0.1:\n", - " m.fs.gt.streams_dataframe().to_csv(\n", - " \"data_tabulated/ngcc_stream_650mw_gt.csv\"\n", - " )\n", - " m.fs.st.steam_streams_dataframe().to_csv(\n", - " \"data_tabulated/ngcc_stream_650mw_st.csv\"\n", - " )\n", - " m.fs.hrsg.steam_streams_dataframe().to_csv(\n", - " \"data_tabulated/ngcc_stream_650mw_hrsg_steam.csv\"\n", - " )\n", - " m.fs.hrsg.flue_gas_streams_dataframe().to_csv(\n", - " \"data_tabulated/ngcc_stream_650mw_hrsg_gas.csv\"\n", - " )\n", - " df.to_csv(\"data_tabulated/ngcc.csv\")\n", - "\n", - " # Display the results from the run stored in a pandas dataframe\n", - " pd.set_option(\"display.max_rows\", None)\n", - " pd.set_option(\"display.max_columns\", None)\n", - " display(df)\n", - "\n", - " # Plot results\n", - " plt.plot(df[\"net_power (MW)\"], df[\"lhv_efficiency (%)\"])\n", - " plt.grid()\n", - " plt.xlabel(\"Net Power (MW)\")\n", - " plt.ylabel(\"LHV Efficiency (%)\")\n", - " plt.title(\"Net Power vs. Efficiency\")\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.9" - } - }, - "nbformat": 4, - "nbformat_minor": 3 -} diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/steam_turbine_init.json.gz b/idaes_examples/notebooks/active/power_gen/ngcc/steam_turbine_init.json.gz deleted file mode 100644 index 213d5bef..00000000 Binary files a/idaes_examples/notebooks/active/power_gen/ngcc/steam_turbine_init.json.gz and /dev/null differ diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/gt_baseline.svg b/idaes_examples/notebooks/docs/power_gen/ngcc/data_pfds/gt_baseline.svg similarity index 100% rename from idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/gt_baseline.svg rename to idaes_examples/notebooks/docs/power_gen/ngcc/data_pfds/gt_baseline.svg diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/hrsg_baseline.svg b/idaes_examples/notebooks/docs/power_gen/ngcc/data_pfds/hrsg_baseline.svg similarity index 100% rename from idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/hrsg_baseline.svg rename to idaes_examples/notebooks/docs/power_gen/ngcc/data_pfds/hrsg_baseline.svg diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/st_baseline.svg b/idaes_examples/notebooks/docs/power_gen/ngcc/data_pfds/st_baseline.svg similarity index 100% rename from idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/st_baseline.svg rename to idaes_examples/notebooks/docs/power_gen/ngcc/data_pfds/st_baseline.svg diff --git a/idaes_examples/notebooks/docs/power_gen/ngcc/gas_turbine_init.json.gz b/idaes_examples/notebooks/docs/power_gen/ngcc/gas_turbine_init.json.gz new file mode 100644 index 00000000..1c4ca1bc Binary files /dev/null and b/idaes_examples/notebooks/docs/power_gen/ngcc/gas_turbine_init.json.gz differ diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/gas_turbine_template.svg b/idaes_examples/notebooks/docs/power_gen/ngcc/gas_turbine_template.svg similarity index 100% rename from idaes_examples/notebooks/active/power_gen/ngcc/gas_turbine_template.svg rename to idaes_examples/notebooks/docs/power_gen/ngcc/gas_turbine_template.svg diff --git a/idaes_examples/notebooks/docs/power_gen/ngcc/hrsg_init.json.gz b/idaes_examples/notebooks/docs/power_gen/ngcc/hrsg_init.json.gz new file mode 100644 index 00000000..65dbfe64 Binary files /dev/null and b/idaes_examples/notebooks/docs/power_gen/ngcc/hrsg_init.json.gz differ diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/hrsg_template.svg b/idaes_examples/notebooks/docs/power_gen/ngcc/hrsg_template.svg similarity index 100% rename from idaes_examples/notebooks/active/power_gen/ngcc/hrsg_template.svg rename to idaes_examples/notebooks/docs/power_gen/ngcc/hrsg_template.svg diff --git a/idaes_examples/notebooks/docs/power_gen/ngcc/index.md b/idaes_examples/notebooks/docs/power_gen/ngcc/index.md new file mode 100644 index 00000000..81a36a46 --- /dev/null +++ b/idaes_examples/notebooks/docs/power_gen/ngcc/index.md @@ -0,0 +1 @@ +# Natural gas combined cycle \ No newline at end of file diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_doc.ipynb b/idaes_examples/notebooks/docs/power_gen/ngcc/ngcc.ipynb similarity index 97% rename from idaes_examples/notebooks/active/power_gen/ngcc/ngcc_doc.ipynb rename to idaes_examples/notebooks/docs/power_gen/ngcc/ngcc.ipynb index 4c941108..e0502cfe 100644 --- a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_doc.ipynb +++ b/idaes_examples/notebooks/docs/power_gen/ngcc/ngcc.ipynb @@ -3,6 +3,7 @@ { "cell_type": "code", "execution_count": 1, + "id": "c886cc60", "metadata": { "tags": [ "header", @@ -27,18 +28,20 @@ }, { "cell_type": "markdown", + "id": "b8b80323", "metadata": {}, "source": [ "# NGCC Baseline and Turndown\n", - "Maintainer: John Eslick \n", + "Maintainer: Javal Vyas \n", "Author: John Eslick \n", - "Updated: 2023-06-01 \n", + "Updated: 2024-07-25 \n", "\n", - "This notebook runs a series of net electric power outputs from 650 MW to 160 MW (about 100% to 25%) for an NGCC with 97% CO2 capture. The NGCC model is based on the NETL report \"Cost and Performance Baseline for Fossil Energy Plants Volume 1: Bituminous Coal and Natural Gas to Electricity.\" Sept 2019, Case B31B (https://www.netl.doe.gov/projects/files/CostAndPerformanceBaselineForFossilEnergyPlantsVol1BitumCoalAndNGtoElectBBRRev4-1_092419.pdf)." + "This notebook runs a series of net electric power outputs from 650 MW to 160 MW (about 100% to 25%) for an NGCC with 97% CO2 capture. The NGCC model is based on the NETL report \"Cost and Performance Baseline for Fossil Energy Plants Volume 1, Bituminous Coal and Natural Gas to Electricity.\" Sept 2019, Case B31B [resource](https://www.osti.gov/servlets/purl/1893822). Another valuable resource for gaining a deeper understanding of the mathematical model would be the publication referenced [here](https://www.sciencedirect.com/science/article/pii/S1750583617302414). " ] }, { "cell_type": "markdown", + "id": "ee336f74", "metadata": {}, "source": [ "## Imports\n", @@ -49,6 +52,7 @@ { "cell_type": "code", "execution_count": 2, + "id": "82c19b96", "metadata": {}, "outputs": [], "source": [ @@ -62,6 +66,7 @@ "import idaes.core.util.scaling as iscale\n", "import idaes.core.util as iutil\n", "from idaes_examples.mod.power_gen import ngcc\n", + "import idaes.logger as idaeslog\n", "import pytest\n", "import logging\n", "\n", @@ -70,6 +75,7 @@ }, { "cell_type": "markdown", + "id": "253dc19f", "metadata": {}, "source": [ "## Make Output Directories\n", @@ -80,6 +86,7 @@ { "cell_type": "code", "execution_count": 3, + "id": "0e45525b", "metadata": {}, "outputs": [], "source": [ @@ -98,6 +105,7 @@ }, { "cell_type": "markdown", + "id": "6630fdb1", "metadata": {}, "source": [ "## Global Solver Settings\n", @@ -108,6 +116,7 @@ { "cell_type": "code", "execution_count": 4, + "id": "42e0b37d", "metadata": {}, "outputs": [], "source": [ @@ -122,6 +131,7 @@ }, { "cell_type": "markdown", + "id": "050b533f", "metadata": {}, "source": [ "## Create the NGCC model\n", @@ -132,244 +142,23 @@ { "cell_type": "code", "execution_count": 5, + "id": "9913783b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "2023-11-02 10:27:04 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:04 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:04 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:04 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:04 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:04 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:04 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:04 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:04 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:05 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:05 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:05 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:05 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:05 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:05 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:07 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:07 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:07 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:09 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:09 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:09 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:09 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:09 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:09 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:09 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:10 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:10 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:10 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:10 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:10 [WARNING] idaes.models.properties.general_helmholtz.helmholtz_state: Helmholtz EoS packages using Mixed phase representation ignore the 'has_phase_equilibrium' configuration argument. However, setting this to True can result in errors when constructing material balances due to only having a single phase (thus phase transfer terms cannot be constructed).\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:11 [INFO] idaes.init.fs: NGCC load initial from ngcc_init.json.gz\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "2024-07-25 03:12:25 [INFO] idaes.init.fs: NGCC load initial from ngcc_init.json.gz\n", "Ipopt 3.13.2: nlp_scaling_method=user-scaling\n", "tol=1e-06\n", "max_iter=200\n", "linear_solver=ma57\n", "ma57_pivtol=1e-05\n", "ma57_pivtolmax=0.1\n", - "option_file_name=C:\\Users\\dkgun\\AppData\\Local\\Temp\\tmp6k86_an1_ipopt.opt\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "option_file_name=C:\\Users\\javal\\AppData\\Local\\Temp\\tmpa9m4gkwo_ipopt.opt\n", "\n", - "Using option file \"C:\\Users\\dkgun\\AppData\\Local\\Temp\\tmp6k86_an1_ipopt.opt\".\n", + "Using option file \"C:\\Users\\javal\\AppData\\Local\\Temp\\tmpa9m4gkwo_ipopt.opt\".\n", "\n", "\n", "******************************************************************************\n", @@ -407,32 +196,20 @@ " inequality constraints with only upper bounds: 0\n", "\n", "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", - " 0 0.0000000e+00 3.50e+01 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + " 0 0.0000000e+00 3.50e+01 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", "Reallocating memory for MA57: lfact (111709)\n", - " 1 0.0000000e+00 3.49e-01 1.18e+04 -1.0 3.22e+03 - 9.90e-01 9.90e-01h 1\n", - " 2 0.0000000e+00 3.15e-03 5.40e+02 -1.0 3.05e+03 - 9.89e-01 9.91e-01h 1\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 3 0.0000000e+00 3.09e-07 9.98e+02 -1.0 3.77e+01 - 9.90e-01 1.00e+00h 1\n", + " 1 0.0000000e+00 3.49e-01 1.12e+04 -1.0 3.06e+03 - 9.90e-01 9.90e-01h 1\n", + " 2 0.0000000e+00 3.15e-03 5.15e+02 -1.0 3.02e+03 - 9.89e-01 9.91e-01h 1\n", + " 3 0.0000000e+00 2.95e-07 9.98e+02 -1.0 3.74e+01 - 9.90e-01 1.00e+00h 1\n", "\n", "Number of Iterations....: 3\n", "\n", " (scaled) (unscaled)\n", "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", "Dual infeasibility......: 0.0000000000000000e+00 0.0000000000000000e+00\n", - "Constraint violation....: 3.0880664780852385e-07 3.0880664780852385e-07\n", + "Constraint violation....: 2.9462398742907681e-07 2.9462398742907681e-07\n", "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", - "Overall NLP error.......: 3.0880664780852385e-07 3.0880664780852385e-07\n", + "Overall NLP error.......: 2.9462398742907681e-07 2.9462398742907681e-07\n", "\n", "\n", "Number of objective function evaluations = 4\n", @@ -442,8 +219,8 @@ "Number of equality constraint Jacobian evaluations = 4\n", "Number of inequality constraint Jacobian evaluations = 0\n", "Number of Lagrangian Hessian evaluations = 3\n", - "Total CPU secs in IPOPT (w/o function evaluations) = 0.079\n", - "Total CPU secs in NLP function evaluations = 1.060\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.085\n", + "Total CPU secs in NLP function evaluations = 1.396\n", "\n", "EXIT: Optimal Solution Found.\n" ] @@ -454,14 +231,16 @@ "m.fs = ngcc.NgccFlowsheet(dynamic=False)\n", "iscale.calculate_scaling_factors(m)\n", "m.fs.initialize(\n", - " load_from=\"ngcc_init.json.gz\",\n", - " save_to=\"ngcc_init.json.gz\",\n", + " load_from='ngcc_init.json.gz',\n", + " save_to='ngcc_init.json.gz',\n", + " outlvl=idaeslog.INFO_HIGH,\n", ")\n", "res = solver.solve(m, tee=True)" ] }, { "cell_type": "markdown", + "id": "90988591", "metadata": {}, "source": [ "## Show PFDs with baseline results\n", @@ -472,6 +251,7 @@ { "cell_type": "code", "execution_count": 6, + "id": "ca2cf4a0", "metadata": {}, "outputs": [ { @@ -1154,11 +934,7 @@ "" ] }, - "metadata": { - "filenames": { - "image/svg+xml": "C:\\Users\\dkgun\\src\\dangunter\\examples\\idaes_examples\\notebooks\\_build\\jupyter_execute\\active\\power_gen\\ngcc\\ngcc_doc_11_1.svg" - } - }, + "metadata": {}, "output_type": "display_data" }, { @@ -2511,11 +2287,7 @@ "" ] }, - "metadata": { - "filenames": { - "image/svg+xml": "C:\\Users\\dkgun\\src\\dangunter\\examples\\idaes_examples\\notebooks\\_build\\jupyter_execute\\active\\power_gen\\ngcc\\ngcc_doc_11_3.svg" - } - }, + "metadata": {}, "output_type": "display_data" }, { @@ -3001,11 +2773,7 @@ "" ] }, - "metadata": { - "filenames": { - "image/svg+xml": "C:\\Users\\dkgun\\src\\dangunter\\examples\\idaes_examples\\notebooks\\_build\\jupyter_execute\\active\\power_gen\\ngcc\\ngcc_doc_11_5.svg" - } - }, + "metadata": {}, "output_type": "display_data" } ], @@ -3028,6 +2796,7 @@ }, { "cell_type": "markdown", + "id": "e41a86bf", "metadata": {}, "source": [ "## Test key model outputs against NETL baseline" @@ -3036,6 +2805,7 @@ { "cell_type": "code", "execution_count": 7, + "id": "70964b53", "metadata": {}, "outputs": [], "source": [ @@ -3058,12 +2828,13 @@ { "cell_type": "code", "execution_count": 8, + "id": "3602759a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -3072,16 +2843,12 @@ }, { "data": { - "image/png": "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XnsNhYWFMDY2hpmZmXTFp3379hg1ahRGjBjR4N93RURERHQ/NRqg3K5dO6xatQqfffYZTp48iYsXL+LOnTto2rQpfH190bRp0/qqk4iIiKhWavV1EUZGRvD19YWvr28dl0NERERUt/g0FhEREckaww4RERHJGsMOERERyRrDDhEREclajcNOWVkZTExMcOrUqfqoh4iIiKhO1TjsKJVKtGjRAuXl5fVRDxEREVGdqtVtrOnTp2PatGm4fv16XddDREREVKdq9Tk7//73v3Hu3Dm4uLjAzc0NVlZWeu1Hjx6tk+KIiIiIHletws7AgQPruAwiIiKi+lGrsPP+++/XdR1ERERE9aLWj57n5+dj9erViI6OlsbuHD16FJcvX66z4oiIiIgeV62u7Jw8eRIhISFQq9W4cOECRo8eDTs7O2zYsAE5OTn44osv6rpOIiIiolqp1ZWdSZMmYcSIETh79izMzc2l5c8//zz2799fZ8URERERPa5ahZ3U1FS8+eabVZY3a9YMOp3usYsiIiIiqiu1CjtmZmYoLCyssvzMmTNwcHB47KKIiIiI6kqtws4LL7yAWbNmoaysDACgUCiQk5ODqVOnIiwsrE4LJCIiInoctQo7CxcuRFFRERwdHXHnzh0EBQWhdevWaNKkCT766KO6rpGIiIio1mr1NJZarcbOnTvxv//9DydPnkRRURGee+45hISE1HV9RERERI+lVmGnuLgY5ubmCAwMRGBgYF3XRERERFRnahV2bGxs0LlzZwQFBaFbt27QarWwsLCo69qIiIiIHlutxuzs2rULvXv3RkpKCl544QXY2toiMDAQ06dPx86dO+u6RiIiIqJaq1XYCQwMxLRp07Bjxw7k5+dj7969aN26NebPn4/evXvXdY1EREREtVar21jAvc/USUxMlKaSkhL069cPwcHBdVgeERER0eOpVdhp1qwZ7ty5g+DgYAQHB2Pq1Klo27YtFApFXddHRERE9FhqdRvLwcEBt2/fhk6ng06nQ25uLu7cuVPXtRERERE9tlqFnePHj0On0+G9995DSUkJpk2bhqZNm6JLly6YPn16XddIREREVGu1HrNjY2ODF154AQEBAejSpQt+/PFHfPXVV0hJSeGnKBMREVGjUauws2HDBmlgckZGBuzs7BAYGIiFCxciKCiormskIiIiqrVahZ2xY8eia9eu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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGdCAYAAAD0e7I1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABF2UlEQVR4nO3deVhU9f4H8PcAw+4Mi8CAIuBSQKGYC4xwBRVFU9OkMkPFckkvZmiaoV4jMzXT3C5q1wXqpu1qhfuGehUQcUMhXEIxdcBSQFQW4fv7w4fza8IFEBg8vV/Pc57Hc77fc87nDEfmzTnfM6MQQggQERERyZSRoQsgIiIiqk8MO0RERCRrDDtEREQkaww7REREJGsMO0RERCRrDDtEREQkaww7REREJGsMO0RERCRrJoYuoDGoqKjAlStX0KRJEygUCkOXQ0RERNUghMDNmzfh4uICI6MHX79h2AFw5coVuLq6GroMIiIiqoVLly6hefPmD2xn2AHQpEkTAPdeLJVKZeBqiIiIqDoKCwvh6uoqvY8/CMMOIN26UqlUDDtERERPmEcNQeEAZSIiIpI1hh0iIiKSNYYdIiIikjWO2SEioirKy8tRVlZm6DLob87Y2BgmJiaP/bEwDDtERKSnqKgIv/32G4QQhi6FCJaWlnB2doapqWmtt2HQsOPu7o6LFy9WWf7Pf/4TsbGxKC4uxjvvvIOvv/4aJSUlCA0NxfLly+Hk5CT1zcnJwbhx47B3715YW1sjIiICc+fOhYkJcxwRUU2Vl5fjt99+g6WlJRwcHPhBq2QwQgiUlpbi2rVryM7ORps2bR76wYEPY9BEkJqaivLycmn+1KlT6NmzJ15++WUAwMSJE7F582Z89913UKvVGD9+PAYNGoSDBw8CuPefsm/fvtBoNDh06BCuXr2K4cOHQ6lUYs6cOQY5JiKiJ1lZWRmEEHBwcICFhYWhy6G/OQsLCyiVSly8eBGlpaUwNzev1XYUohFdp4yKikJCQgLOnj2LwsJCODg4YP369XjppZcAAL/88gu8vLyQlJQEf39/bN26Ff369cOVK1ekqz0rV67E1KlTce3atWpf8iosLIRarUZBQQE/Z4eI/taKi4uRnZ0NDw+PWr+xENWlh52T1X3/bjRPY5WWluLLL7/EG2+8AYVCgbS0NJSVlSEkJETq4+npiRYtWiApKQkAkJSUBB8fH73bWqGhoSgsLMTp06cfuK+SkhIUFhbqTURERCRPjSbsbNq0Cfn5+RgxYgQAQKfTwdTUFDY2Nnr9nJycoNPppD5/DjqV7ZVtDzJ37lyo1Wpp4vdiERERyVejGcW7Zs0a9OnTBy4uLvW+r+joaEyaNEmar/xuDSIiuj/39zY36P4uzOvboPv7O7hw4QI8PDxw7Ngx+Pr6IjExEd26dcONGzeqXFiQm0ZxZefixYvYtWsXRo0aJS3TaDQoLS1Ffn6+Xt/c3FxoNBqpT25ubpX2yrYHMTMzk74Hi9+HRUT05BsxYgQUCgXmzZunt3zTpk16T5QlJiZCoVDcd9LpdHB3d39gu0KhkO4+KBQKbNq0qdr1/Xm7xsbGcHFxwciRI3Hjxo26OPxa6dKlC65evQq1Wm2wGhpKowg7cXFxcHR0RN++/5/kO3ToAKVSid27d0vLsrKykJOTA61WCwDQarVIT09HXl6e1Gfnzp1QqVTw9vZuuAMgIiKDMzc3x8cff1ytAJGVlYWrV6/qTY6OjkhNTZXmf/jhhyp9lyxZUuv6Zs2ahatXryInJwfr1q3D/v37MWHChFpv73GZmppCo9H8LT5ewOBhp6KiAnFxcYiIiND7bBy1Wo2RI0di0qRJ2Lt3L9LS0vD6669Dq9XC398fANCrVy94e3tj2LBhOHHiBLZv344ZM2YgMjISZmZmhjokIiIygJCQEGg0GsydO/eRfR0dHaHRaPQmIyMjODg4SPN2dnZV+j7OVZAmTZpAo9GgWbNm6NatGyIiInD06FGp/Y8//sCQIUPQrFkzWFpawsfHB1999ZXeNr7//nv4+PjAwsIC9vb2CAkJwa1bt6T21atXw8vLC+bm5vD09MTy5csfWE/lVa7KOyjx8fGwsbHB9u3b4eXlBWtra/Tu3RtXr17VW68m+2gsDD5mZ9euXcjJycEbb7xRpW3RokUwMjJCWFiY3ocKVjI2NkZCQgLGjRsHrVYLKysrREREYNasWQ15CESNWkOPtWiMLpi/ZugSDCumwNAVNAhjY2PMmTMHr732GiZMmIDmzZsbuqQHunz5Mn7++Wf4+flJy4qLi9GhQwdMnToVKpUKmzdvxrBhw9CqVSt07twZV69exZAhQzB//ny8+OKLuHnzJg4cOCB90vW6deswc+ZM/Pvf/0b79u1x7NgxjB49WnpvrI7bt29jwYIF+O9//wsjIyMMHToUkydPxrp16+psH4Zg8LDTq1evB34kubm5OWJjYxEbG/vA9d3c3LBly5b6Ko+IiJ4gL774Inx9ffH+++9jzZo1D+z31yDk5ub20I8sqQtTp07FjBkzUF5ejuLiYvj5+eHTTz+V2ps1a4bJkydL82+99Ra2b9+Ob7/9Vgo7d+/exaBBg+Dm5gYA8PHxkfq///77WLhwIQYNGgQA8PDwQEZGBj777LNqB5GysjKsXLkSrVq1AgCMHz9e7wJCXezDEAwedoiIiOrSxx9/jO7du+sFh786cOAAmjRpIs0rlcp6r2vKlCkYMWIEhBC4dOkSpk2bhr59+2L//v0wNjZGeXk55syZg2+//RaXL19GaWkpSkpKYGlpCQBo164devToAR8fH4SGhqJXr1546aWXYGtri1u3buH8+fMYOXIkRo8eLe3z7t27Nbr1ZmlpKQUdAHB2dpbGxdbVPgyBYYeIiGSla9euCA0NRXR0tPT01F95eHg0+OPWTZs2RevWrQEAbdq0weLFi6HVarF3716EhITgk08+wZIlS7B48WL4+PjAysoKUVFRKC0tBXDvNt3OnTtx6NAh7NixA8uWLcP06dORkpIiBaJVq1bp3RqrXK+6/hr6FAqFdPelqKioTvZhCAw7REQkO/PmzYOvry+efvppQ5fyQJUB4c6dOwCAgwcPYsCAARg6dCiAew/wnDlzRu/pYoVCgYCAAAQEBGDmzJlwc3PDxo0bMWnSJLi4uODXX39FeHh4vdTr5ORU7/uoLww7REQkOz4+PggPD8fSpUvv256Xl4fi4mK9Zfb29jW6nZWdnY3jx4/rLWvTpg2srKzu2//mzZvQ6XTSbax3330XDg4O6NKli7Tu999/j0OHDsHW1haffvopcnNzpbCTkpKC3bt3o1evXnB0dERKSgquXbsGLy8vAMAHH3yACRMmQK1Wo3fv3igpKcGRI0dw48YNvQ/SfRwNsY/6wLBDRESP9CR+ovGsWbPwzTff3Lftfld8Kr9kurru9+Z+4MABBAYG3rf/zJkzMXPmTACAg4MDOnXqhB07dsDe3h4AMGPGDPz6668IDQ2FpaUlxowZg4EDB6Kg4N7TdCqVCvv378fixYtRWFgINzc3LFy4EH369AEAjBo1CpaWlvjkk08wZcoUWFlZwcfHB1FRUdU+pkdpiH3Uh0b1reeGwm89Jznjo+d89Lwmj57zW8+psZHVt54TERER1QeGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIqK/geDgYL1POnZ3d8fixYsfa5t1sY2GwK+LICKiR4tRN/D+qv+pzwAwYsQI5OfnY9OmTdL8559/DgAwMTGBnZ0d2rZtiyFDhmDEiBEwMqr6t35oaCh27dqF5ORkdOrUqcr2K7f313W2bdsGADhx4gT+9a9/ITk5GYWFhdBoNPDz88OyZcvg6Oh437qDg4Oxb98+AICZmRlatmyJ8ePH45///GeNjr82UlNTH/g9Xn8VHx+PqKgo5Ofn13obhsQrO0REJEu9e/fG1atXceHCBWzduhXdunXD22+/jX79+uHu3bt6fXNycnDo0CGMHz8ea9eufej2/jx99dVXAIBr166hR48esLOzw/bt25GZmYm4uDi4uLjg1q1bD61z9OjRuHr1KjIyMvDKK68gMjJS2u5flZaW1uKVuD8HBwdYWloafBsNgWGHiIhkyczMDBqNBs2aNcNzzz2HadOm4ccff8TWrVsRHx+v1zcuLg79+vXDuHHj8NVXX+HOnTsP3N6fJ1tbWwDAwYMHUVBQgNWrV6N9+/bw8PBAt27dsGjRInh4eDy0TktLS2g0GrRs2RIxMTFo06YNfvrpJwD3rvyMHz8eUVFRaNq0KUJDQwEAp06dQp8+fWBtbQ0nJycMGzYMv//+u7TNW7duYfjw4bC2toazszMWLlxYZb9/vQWVn5+PN998E05OTjA3N8ezzz6LhIQEJCYm4vXXX0dBQQEUCgUUCgViYmLuu42cnBwMGDAA1tbWUKlUeOWVV5Cbmyu1x8TEwNfXF//973/h7u4OtVqNV199FTdv3nzoa/S4GHaIiOhvo3v37mjXrh02bNggLRNCIC4uDkOHDoWnpydat26N77//vkbb1Wg0uHv3LjZu3IjH/X5tCwsLvSs4n3/+OUxNTXHw4EGsXLkS+fn56N69O9q3b48jR45g27ZtyM3NxSuvvCKtM2XKFOzbtw8//vgjduzYgcTERBw9evSB+6yoqECfPn1w8OBBfPnll8jIyMC8efNgbGyMLl26YPHixVCpVNIVrcmTJ993GwMGDMD169exb98+7Ny5E7/++isGDx6s1+/8+fPYtGkTEhISkJCQgH379mHevHmP9Zo9CsfsEBHR34qnpydOnjwpze/atQu3b9+WrpoMHToUa9aswbBhw/TWS0hIgLW1td6yadOmYdq0afD398e0adPw2muvYezYsejcuTO6d++O4cOHw8nJqVp1lZeX46uvvsLJkycxZswYaXmbNm0wf/58aX727Nlo37495syZIy1bu3YtXF1dcebMGbi4uGDNmjX48ssv0aNHDwD3AlPz5s0fuO9du3bh8OHDyMzMxFNPPQUAaNmypdSuVquhUCig0WgeuI3du3cjPT0d2dnZcHV1BQB88cUXeOaZZ5CamiqNg6qoqEB8fDyaNGkCABg2bBh2796Njz76qFqvU23wyg4REf2tCCGgUCik+bVr12Lw4MEwMbn39/+QIUNw8OBBnD9/Xm+9bt264fjx43rT2LFjpfaPPvoIOp0OK1euxDPPPIOVK1fC09MT6enpD61n+fLlsLa2hoWFBUaPHo2JEydi3LhxUnuHDh30+p84cQJ79+6FtbW1NHl6egK4d9Xk/PnzKC0thZ+fn7SOnZ0dnn766QfWcPz4cTRv3lwKOrWRmZkJV1dXKegAgLe3N2xsbJCZmSktc3d3l4IOADg7OyMvL6/W+60OXtmpZ+7vbTZ0CQZ3wfw1Q5dgWDV8qoSI6ldmZqY0jub69evYuHEjysrKsGLFCqlPeXk51q5dq3e1wcrKCq1bt37otu3t7fHyyy/j5Zdfxpw5c9C+fXssWLDgvk9yVQoPD8f06dNhYWEBZ2fnKk+K/fVpp6KiIvTv3x8ff/xxlW05Ozvj3LlzD63xfiwsLGq8Tm0plUq9eYVCgYqKinrdJ6/sEBHR38aePXuQnp6OsLAwAMC6devQvHlznDhxQu+KzcKFCxEfH4/y8vJa78vU1BStWrV65NNYarUarVu3RrNmze77SPxfPffcczh9+jTc3d3RunVrvcnKygqtWrWCUqlESkqKtM6NGzdw5syZB26zbdu2+O233x7Yx9TU9JGvhZeXFy5duoRLly5JyzIyMpCfnw9vb+9HHld9YtghIiJZKikpgU6nw+XLl3H06FHMmTMHAwYMQL9+/TB8+HAAwJo1a/DSSy/h2Wef1ZtGjhyJ33//XfoMnT9v789T5RNQCQkJGDp0KBISEnDmzBlkZWVhwYIF2LJlCwYMGFCnxxUZGYnr169jyJAhSE1Nxfnz57F9+3a8/vrrKC8vh7W1NUaOHIkpU6Zgz549OHXq1AM/W6hSUFAQunbtirCwMOzcuRPZ2dnYunWrdPzu7u4oKirC7t278fvvv+P27dtVthESEgIfHx+Eh4fj6NGjOHz4MIYPH46goCB07NixTl+DmmLYISIiWdq2bRucnZ3h7u6O3r17Y+/evVi6dCl+/PFHGBsbIy0tDSdOnJCu8vyZWq1Gjx49sGbNmirb+/MUGBgI4N7YFEtLS7zzzjvw9fWFv78/vv32W6xevbrKQOfH5eLigoMHD6K8vBy9evWCj48PoqKiYGNjIwWaTz75BP/4xz/Qv39/hISEIDAwsMrYn7/64Ycf0KlTJwwZMgTe3t549913pas5Xbp0wdixYzF48GA4ODjoDZiupFAo8OOPP8LW1hZdu3ZFSEgIWrZsiW+++aZOj782FOJxn5GTgcLCQqjVahQUFEClUtXptjlmh2N2DD1mh+cgz8GanIPFxcXIzs6Gh4cHzM3N67Eooup52DlZ3fdvXtkhIiIiWWPYISIiIllj2CEiIiJZY9ghIiIiWWPYISIiIllj2CEioir4oC41FnVxLjLsEBGRxNjYGAD0vnWbyJAqP8Dwr18zURP8biwiIpKYmJjA0tIS165dg1KprNbXFxDVByEEbt++jby8PNjY2EhBvDYYdoiISKJQKODs7Izs7GxcvHjR0OUQwcbGBhqN5rG2wbBDRER6TE1N0aZNG97KIoNTKpWPdUWnEsMOERFVYWRkxK+LINngzVgiIiKSNYYdIiIikjWGHSIiIpI1g4edy5cvY+jQobC3t4eFhQV8fHxw5MgRqV0IgZkzZ8LZ2RkWFhYICQnB2bNn9bZx/fp1hIeHQ6VSwcbGBiNHjkRRUVFDHwoRERE1QgYNOzdu3EBAQACUSiW2bt2KjIwMLFy4ELa2tlKf+fPnY+nSpVi5ciVSUlJgZWWF0NBQFBcXS33Cw8Nx+vRp7Ny5EwkJCdi/fz/GjBljiEMiIiKiRsagT2N9/PHHcHV1RVxcnLTMw8ND+rcQAosXL8aMGTMwYMAAAMAXX3wBJycnbNq0Ca+++ioyMzOxbds2pKamomPHjgCAZcuW4fnnn8eCBQvg4uLSsAdFREREjYpBr+z89NNP6NixI15++WU4Ojqiffv2WLVqldSenZ0NnU6HkJAQaZlarYafnx+SkpIAAElJSbCxsZGCDgCEhITAyMgIKSkp991vSUkJCgsL9SYiIiKSJ4OGnV9//RUrVqxAmzZtsH37dowbNw4TJkzA559/DgDQ6XQAACcnJ731nJycpDadTgdHR0e9dhMTE9jZ2Ul9/mru3LlQq9XS5OrqWteHRkRERI2EQcNORUUFnnvuOcyZMwft27fHmDFjMHr0aKxcubJe9xsdHY2CggJpunTpUr3uj4iIiAzHoGHH2dkZ3t7eesu8vLyQk5MDANJ3YeTm5ur1yc3Nldo0Gg3y8vL02u/evYvr168/8Ls0zMzMoFKp9CYiIiKSJ4OGnYCAAGRlZektO3PmDNzc3ADcG6ys0Wiwe/duqb2wsBApKSnQarUAAK1Wi/z8fKSlpUl99uzZg4qKCvj5+TXAURAREVFjZtCnsSZOnIguXbpgzpw5eOWVV3D48GH85z//wX/+8x8A9759NyoqCrNnz0abNm3g4eGBf/3rX3BxccHAgQMB3LsS1Lt3b+n2V1lZGcaPH49XX32VT2IRERGRYcNOp06dsHHjRkRHR2PWrFnw8PDA4sWLER4eLvV59913cevWLYwZMwb5+fkIDAzEtm3b9L6gbt26dRg/fjx69OgBIyMjhIWFYenSpYY4JCIiImpkFEIIYegiDK2wsBBqtRoFBQV1Pn7H/b3Ndbq9J9EF89cMXYJhxRQYdPc8B3kOGvocJKov1X3/NvjXRRARERHVJ4YdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYOGnZiYGCgUCr3J09NTai8uLkZkZCTs7e1hbW2NsLAw5Obm6m0jJycHffv2haWlJRwdHTFlyhTcvXu3oQ+FiIiIGikTQxfwzDPPYNeuXdK8icn/lzRx4kRs3rwZ3333HdRqNcaPH49Bgwbh4MGDAIDy8nL07dsXGo0Ghw4dwtWrVzF8+HAolUrMmTOnwY+FiIiIGh+Dhx0TExNoNJoqywsKCrBmzRqsX78e3bt3BwDExcXBy8sLycnJ8Pf3x44dO5CRkYFdu3bByckJvr6++PDDDzF16lTExMTA1NS0oQ+HiIiIGhmDj9k5e/YsXFxc0LJlS4SHhyMnJwcAkJaWhrKyMoSEhEh9PT090aJFCyQlJQEAkpKS4OPjAycnJ6lPaGgoCgsLcfr06Qfus6SkBIWFhXoTERERyZNBw46fnx/i4+Oxbds2rFixAtnZ2fjHP/6BmzdvQqfTwdTUFDY2NnrrODk5QafTAQB0Op1e0Klsr2x7kLlz50KtVkuTq6tr3R4YERERNRoGvY3Vp08f6d9t27aFn58f3Nzc8O2338LCwqLe9hsdHY1JkyZJ84WFhQw8REREMmXw21h/ZmNjg6eeegrnzp2DRqNBaWkp8vPz9frk5uZKY3w0Gk2Vp7Mq5+83DqiSmZkZVCqV3kRERETy1KjCTlFREc6fPw9nZ2d06NABSqUSu3fvltqzsrKQk5MDrVYLANBqtUhPT0deXp7UZ+fOnVCpVPD29m7w+omIiKjxMehtrMmTJ6N///5wc3PDlStX8P7778PY2BhDhgyBWq3GyJEjMWnSJNjZ2UGlUuGtt96CVquFv78/AKBXr17w9vbGsGHDMH/+fOh0OsyYMQORkZEwMzMz5KERERFRI2HQsPPbb79hyJAh+OOPP+Dg4IDAwEAkJyfDwcEBALBo0SIYGRkhLCwMJSUlCA0NxfLly6X1jY2NkZCQgHHjxkGr1cLKygoRERGYNWuWoQ6JiIiIGhmDhp2vv/76oe3m5uaIjY1FbGzsA/u4ublhy5YtdV0aERERyUSjGrNDREREVNcYdoiIiEjWGHaIiIhI1hh2iIiISNYYdoiIiEjWDP6t50REJG/u7202dAkGd8H8NUOXYFgxBQbdPa/sEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrJnUdIX8/Hxs3LgRBw4cwMWLF3H79m04ODigffv2CA0NRZcuXeqjTiIiIqJaqfaVnStXrmDUqFFwdnbG7NmzcefOHfj6+qJHjx5o3rw59u7di549e8Lb2xvffPNNfdZMREREVG3VvrLTvn17REREIC0tDd7e3vftc+fOHWzatAmLFy/GpUuXMHny5DorlIiIiKg2qh12MjIyYG9v/9A+FhYWGDJkCIYMGYI//vjjsYsjIiIielzVvo1lb2+PkpKSam/4UcGIiIiIqCHUaICyWq2GVqtFt27d0K1bN/j7+0OpVNZXbURERESPrUaPnq9cuRJubm5Yu3YtgoKCYGNjg549e2Lu3LlITk5GeXl5fdVJREREVCs1CjsjRoxAfHw8Lly4gHPnzmHZsmVwcXHBypUrERAQAFtbW/Tt27e+aiUiIiKqsRp/zk6lli1bomXLlnjjjTeQnZ2NNWvWYNmyZdi2bVtd1kdERET0WGoVdnJycrB3714kJiYiMTERv//+O/z9/TF58mQEBQXVdY1EREREtVajsPPGG28gMTER169fR0BAAP7xj39gzJgx6NSpE0xMan2RiIiIiKje1CihxMfHo0WLFpg+fTp69OiB9u3bQ6FQ1FdtRERERI+tRmEnMzNTun21cOFClJSUIDAwEEFBQQgODsZzzz0HIyN+tygRERE1HjVKJk8//TTGjh2Lr7/+GjqdDgcPHsTzzz+Pw4cPo1+/frCzs0O/fv3qq1YiIiKiGnusgTbe3t6wt7eHra0tbG1t8fXXX2Pr1q11VRsRERHRY6tx2MnLy0NiYqJ0O+vMmTMwNTVF586dMXHiRHTr1q0+6iQiIiKqlRrdxvLy8oKzszOGDRuG9PR0vPTSS9ixYwdu3LiBffv2ISYmptaPns+bNw8KhQJRUVHSsuLiYkRGRsLe3h7W1tYICwtDbm6u3no5OTno27cvLC0t4ejoiClTpuDu3bu1qoGIiIjkp0ZXdgYOHIhu3bohMDAQlpaWdVZEamoqPvvsM7Rt21Zv+cSJE7F582Z89913UKvVGD9+PAYNGoSDBw8CAMrLy9G3b19oNBocOnQIV69exfDhw6FUKjFnzpw6q4+IiIieXDW6sjN37lz06tWrToNOUVERwsPDsWrVKtja2krLCwoKsGbNGnz66afo3r07OnTogLi4OBw6dAjJyckAgB07diAjIwNffvklfH190adPH3z44YeIjY1FaWlpndVIRERET64aXdmZNWtWtfrNnDmz2tuMjIxE3759ERISgtmzZ0vL09LSUFZWhpCQEGmZp6cnWrRogaSkJPj7+yMpKQk+Pj5wcnKS+oSGhmLcuHE4ffo02rdvf999lpSUoKSkRJovLCysdr1ERET0ZKlR2ImJiYGLiwscHR0hhLhvH4VCUe2w8/XXX+Po0aNITU2t0qbT6WBqagobGxu95U5OTtDpdFKfPwedyvbKtgeZO3cuPvjgg2rVSERERE+2GoWdPn36YM+ePejYsSPeeOMN9OvXr9YfInjp0iW8/fbb2LlzJ8zNzWu1jdqKjo7GpEmTpPnCwkK4uro2aA1ERETUMGqUVDZv3ozz58/Dz88PU6ZMQbNmzTB16lRkZWXVeMdpaWnIy8vDc889BxMTE5iYmGDfvn1YunQpTExM4OTkhNLSUuTn5+utl5ubC41GAwDQaDRVns6qnK/scz9mZmZQqVR6ExEREclTjS/LuLi4IDo6GllZWfjmm2+Ql5eHTp06ISAgAHfu3Kn2dnr06IH09HQcP35cmjp27Ijw8HDp30qlErt375bWycrKQk5ODrRaLQBAq9UiPT0deXl5Up+dO3dCpVLB29u7podGREREMvRYn6DcqVMnXLhwARkZGTh27BjKyspgYWFRrXWbNGmCZ599Vm+ZlZUV7O3tpeUjR47EpEmTYGdnB5VKhbfeegtarRb+/v4AgF69esHb2xvDhg3D/PnzodPpMGPGDERGRsLMzOxxDo2IiIhkolYDbpKSkjB69GhoNBosW7YMERERuHLlSp3fDlq0aBH69euHsLAwdO3aFRqNBhs2bJDajY2NkZCQAGNjY2i1WgwdOhTDhw+v9lNjREREJH81urIzf/58xMfH4/fff0d4eDgOHDhQ5YMAH0diYqLevLm5OWJjYxEbG/vAddzc3LBly5Y6q4GIiIjkpUZh57333kOLFi3wyiuvQKFQID4+/r79Pv3007qojYiIiOix1SjsdO3aFQqFAqdPn35gH4VC8dhFEREREdWVGoWdv95mIiIiImrsaveJgERERERPiGqHnXnz5uH27dvV6puSkoLNmzfXuigiIiKiulLtsJORkQE3Nzf885//xNatW3Ht2jWp7e7duzh58iSWL1+OLl26YPDgwWjSpEm9FExERERUE9Ues/PFF1/gxIkT+Pe//43XXnsNhYWFMDY2hpmZmXTFp3379hg1ahRGjBjR4N93RURERHQ/NRqg3K5dO6xatQqfffYZTp48iYsXL+LOnTto2rQpfH190bRp0/qqk4iIiKhWavV1EUZGRvD19YWvr28dl0NERERUt/g0FhEREckaww4RERHJGsMOERERyRrDDhEREclajcNOWVkZTExMcOrUqfqoh4iIiKhO1TjsKJVKtGjRAuXl5fVRDxEREVGdqtVtrOnTp2PatGm4fv16XddDREREVKdq9Tk7//73v3Hu3Dm4uLjAzc0NVlZWeu1Hjx6tk+KIiIiIHletws7AgQPruAwiIiKi+lGrsPP+++/XdR1ERERE9aLWj57n5+dj9erViI6OlsbuHD16FJcvX66z4oiIiIgeV62u7Jw8eRIhISFQq9W4cOECRo8eDTs7O2zYsAE5OTn44osv6rpOIiIiolqp1ZWdSZMmYcSIETh79izMzc2l5c8//zz2799fZ8URERERPa5ahZ3U1FS8+eabVZY3a9YMOp3usYsiIiIiqiu1CjtmZmYoLCyssvzMmTNwcHB47KKIiIiI6kqtws4LL7yAWbNmoaysDACgUCiQk5ODqVOnIiwsrE4LJCIiInoctQo7CxcuRFFRERwdHXHnzh0EBQWhdevWaNKkCT766KO6rpGIiIio1mr1NJZarcbOnTvxv//9DydPnkRRURGee+45hISE1HV9RERERI+lVmGnuLgY5ubmCAwMRGBgYF3XRERERFRnahV2bGxs0LlzZwQFBaFbt27QarWwsLCo69qIiIiIHlutxuzs2rULvXv3RkpKCl544QXY2toiMDAQ06dPx86dO+u6RiIiIqJaq1XYCQwMxLRp07Bjxw7k5+dj7969aN26NebPn4/evXvXdY1EREREtVar21jAvc/USUxMlKaSkhL069cPwcHBdVgeERER0eOpVdhp1qwZ7ty5g+DgYAQHB2Pq1Klo27YtFApFXddHRERE9FhqdRvLwcEBt2/fhk6ng06nQ25uLu7cuVPXtRERERE9tlqFnePHj0On0+G9995DSUkJpk2bhqZNm6JLly6YPn16XddIREREVGu1HrNjY2ODF154AQEBAejSpQt+/PFHfPXVV0hJSeGnKBMREVGjUauws2HDBmlgckZGBuzs7BAYGIiFCxciKCiormskIiIiqrVahZ2xY8eia9eu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", "text/plain": [ "
" ] }, - "metadata": { - "filenames": { - "image/png": "C:\\Users\\dkgun\\src\\dangunter\\examples\\idaes_examples\\notebooks\\_build\\jupyter_execute\\active\\power_gen\\ngcc\\ngcc_doc_14_1.png" - } - }, + "metadata": {}, "output_type": "display_data" } ], @@ -3115,6 +2882,7 @@ }, { "cell_type": "markdown", + "id": "6f43d5d6", "metadata": {}, "source": [ "## Run turndown cases 5 MW interval\n", @@ -3127,6 +2895,7 @@ { "cell_type": "code", "execution_count": 9, + "id": "cd410c4b", "metadata": {}, "outputs": [], "source": [ @@ -3186,13 +2955,6 @@ " plt.title(\"Net Power vs. Efficiency\")\n", " plt.show()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -3211,9 +2973,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.10.13" } }, "nbformat": 4, - "nbformat_minor": 3 + "nbformat_minor": 5 } diff --git a/idaes_examples/notebooks/docs/power_gen/ngcc/ngcc_doc.ipynb b/idaes_examples/notebooks/docs/power_gen/ngcc/ngcc_doc.ipynb new file mode 100644 index 00000000..4f2059d4 --- /dev/null +++ b/idaes_examples/notebooks/docs/power_gen/ngcc/ngcc_doc.ipynb @@ -0,0 +1,2964 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "header", + "hide-cell" + ] + }, + "outputs": [], + "source": [ + "###############################################################################\n", + "# The Institute for the Design of Advanced Energy Systems Integrated Platform\n", + "# Framework (IDAES IP) was produced under the DOE Institute for the\n", + "# Design of Advanced Energy Systems (IDAES).\n", + "#\n", + "# Copyright (c) 2018-2023 by the software owners: The Regents of the\n", + "# University of California, through Lawrence Berkeley National Laboratory,\n", + "# National Technology & Engineering Solutions of Sandia, LLC, Carnegie Mellon\n", + "# University, West Virginia University Research Corporation, et al.\n", + "# All rights reserved. Please see the files COPYRIGHT.md and LICENSE.md\n", + "# for full copyright and license information.\n", + "###############################################################################" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# NGCC Baseline and Turndown\n", + "Maintainer: Javal Vyas \n", + "Author: John Eslick \n", + "Updated: 2024-07-25 \n", + "\n", + "This notebook runs a series of net electric power outputs from 650 MW to 160 MW (about 100% to 25%) for an NGCC with 97% CO2 capture. The NGCC model is based on the NETL report \"Cost and Performance Baseline for Fossil Energy Plants Volume 1, Bituminous Coal and Natural Gas to Electricity.\" Sept 2019, Case B31B [resource](https://www.osti.gov/servlets/purl/1893822). Another valuable resource for gaining a deeper understanding of the mathematical model would be the publication referenced [here](https://www.sciencedirect.com/science/article/pii/S1750583617302414). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports\n", + "\n", + "Import the modules that will be used." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import numpy as np\n", + "import pandas as pd\n", + "from IPython.core.display import SVG\n", + "import pyomo.environ as pyo\n", + "import idaes\n", + "from idaes.core.solvers import use_idaes_solver_configuration_defaults\n", + "import idaes.core.util.scaling as iscale\n", + "import idaes.core.util as iutil\n", + "from idaes_examples.mod.power_gen import ngcc\n", + "import idaes.logger as idaeslog\n", + "import pytest\n", + "import logging\n", + "\n", + "logging.getLogger(\"pyomo\").setLevel(logging.ERROR)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Make Output Directories\n", + "\n", + "This notebook can produce a large number of output files. To make it easier to manage, some subdirectories are used to organize output. This ensures that the directories exist." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def make_directory(path):\n", + " \"\"\"Make a directory if it doesn't exist\"\"\"\n", + " try:\n", + " os.mkdir(path)\n", + " except FileExistsError:\n", + " pass\n", + "\n", + "\n", + "make_directory(\"data\")\n", + "make_directory(\"data_pfds\")\n", + "make_directory(\"data_tabulated\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Global Solver Settings\n", + "\n", + "Use the IDAES configuration system for solver settings. These will apply to all Ipopt instances created, including the ones created in initialization methods." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "use_idaes_solver_configuration_defaults()\n", + "idaes.cfg.ipopt.options.nlp_scaling_method = \"user-scaling\"\n", + "idaes.cfg.ipopt.options.linear_solver = \"ma57\"\n", + "idaes.cfg.ipopt.options.OF_ma57_automatic_scaling = \"yes\"\n", + "idaes.cfg.ipopt.options.ma57_pivtol = 1e-5\n", + "idaes.cfg.ipopt.options.ma57_pivtolmax = 0.1\n", + "solver = pyo.SolverFactory(\"ipopt\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create the NGCC model\n", + "\n", + "Create the NGCC model and initialize it or read the saved initialization if available. The base initialized NGCC model is configured to match the baseline report with 90% capture using a Cansolv system." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-07-25 03:12:25 [INFO] idaes.init.fs: NGCC load initial from ngcc_init.json.gz\n", + "Ipopt 3.13.2: nlp_scaling_method=user-scaling\n", + "tol=1e-06\n", + "max_iter=200\n", + "linear_solver=ma57\n", + "ma57_pivtol=1e-05\n", + "ma57_pivtolmax=0.1\n", + "option_file_name=C:\\Users\\javal\\AppData\\Local\\Temp\\tmpa9m4gkwo_ipopt.opt\n", + "\n", + "Using option file \"C:\\Users\\javal\\AppData\\Local\\Temp\\tmpa9m4gkwo_ipopt.opt\".\n", + "\n", + "\n", + "******************************************************************************\n", + "This program contains Ipopt, a library for large-scale nonlinear optimization.\n", + " Ipopt is released as open source code under the Eclipse Public License (EPL).\n", + " For more information visit http://projects.coin-or.org/Ipopt\n", + "\n", + "This version of Ipopt was compiled from source code available at\n", + " https://github.com/IDAES/Ipopt as part of the Institute for the Design of\n", + " Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE\n", + " Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.\n", + "\n", + "This version of Ipopt was compiled using HSL, a collection of Fortran codes\n", + " for large-scale scientific computation. All technical papers, sales and\n", + " publicity material resulting from use of the HSL codes within IPOPT must\n", + " contain the following acknowledgement:\n", + " HSL, a collection of Fortran codes for large-scale scientific\n", + " computation. See http://www.hsl.rl.ac.uk.\n", + "******************************************************************************\n", + "\n", + "This is Ipopt version 3.13.2, running with linear solver ma57.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 7661\n", + "Number of nonzeros in inequality constraint Jacobian.: 0\n", + "Number of nonzeros in Lagrangian Hessian.............: 5948\n", + "\n", + "Total number of variables............................: 2404\n", + " variables with only lower bounds: 87\n", + " variables with lower and upper bounds: 1447\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 2404\n", + "Total number of inequality constraints...............: 0\n", + " inequality constraints with only lower bounds: 0\n", + " inequality constraints with lower and upper bounds: 0\n", + " inequality constraints with only upper bounds: 0\n", + "\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 0 0.0000000e+00 3.50e+01 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + "Reallocating memory for MA57: lfact (111709)\n", + " 1 0.0000000e+00 3.49e-01 1.12e+04 -1.0 3.06e+03 - 9.90e-01 9.90e-01h 1\n", + " 2 0.0000000e+00 3.15e-03 5.15e+02 -1.0 3.02e+03 - 9.89e-01 9.91e-01h 1\n", + " 3 0.0000000e+00 2.95e-07 9.98e+02 -1.0 3.74e+01 - 9.90e-01 1.00e+00h 1\n", + "\n", + "Number of Iterations....: 3\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Dual infeasibility......: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Constraint violation....: 2.9462398742907681e-07 2.9462398742907681e-07\n", + "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Overall NLP error.......: 2.9462398742907681e-07 2.9462398742907681e-07\n", + "\n", + "\n", + "Number of objective function evaluations = 4\n", + "Number of objective gradient evaluations = 4\n", + "Number of equality constraint evaluations = 4\n", + "Number of inequality constraint evaluations = 0\n", + "Number of equality constraint Jacobian evaluations = 4\n", + "Number of inequality constraint Jacobian evaluations = 0\n", + "Number of Lagrangian Hessian evaluations = 3\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.085\n", + "Total CPU secs in NLP function evaluations = 1.396\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + } + ], + "source": [ + "m = pyo.ConcreteModel()\n", + "m.fs = ngcc.NgccFlowsheet(dynamic=False)\n", + "iscale.calculate_scaling_factors(m)\n", + "m.fs.initialize(\n", + " load_from='ngcc_init.json.gz',\n", + " save_to='ngcc_init.json.gz',\n", + " outlvl=idaeslog.INFO_HIGH,\n", + ")\n", + "res = solver.solve(m, tee=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Show PFDs with baseline results\n", + "\n", + "This displays PFDs in the notebook, and saves them to files. The full NGCC model is too big to show well in a single PFD, so it is broken into the three main sections, gas turbine, heat recovery steam generator (HRSG), and steam turbine." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Gas Turbine Section\n", + "\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " image/svg+xml\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " cmp1\n", + " cmb1\n", + " gts1\n", + " inject1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " gts2\n", + " \n", + " \n", + " gts3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " splt1\n", + " mx1\n", + " mx2\n", + " mx3\n", + " Blade Cooling Air\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " NGPreheater\n", + " \n", + " To HRSG\n", + " \n", + " \n", + " \n", + " \n", + " air01\n", + " \n", + " \n", + " air03\n", + " \n", + " \n", + " air02\n", + " \n", + " \n", + " air04\n", + " \n", + " \n", + " fuel01\n", + " \n", + " \n", + " fuel02\n", + " \n", + " \n", + " \n", + " \n", + " st02\n", + " st01\n", + " \n", + " \n", + " air05\n", + " \n", + " \n", + " air06\n", + " \n", + " \n", + " g02\n", + " \n", + " \n", + " g01\n", + " \n", + " \n", + " air09\n", + " \n", + " \n", + " air10\n", + " \n", + " \n", + " air07\n", + " \n", + " \n", + " g03\n", + " \n", + " \n", + " g04\n", + " \n", + " \n", + " g05\n", + " \n", + " \n", + " g06\n", + " \n", + " \n", + " g07\n", + " \n", + " \n", + " g08\n", + " \n", + " \n", + " air08\n", + " \n", + " \n", + " Summary\n", + " total GT power:\n", + " 476.99 MW\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " air01\n", + " \n", + " \n", + " \n", + " air02\n", + " \n", + " \n", + " \n", + " air03\n", + " \n", + " \n", + " \n", + " air04\n", + " \n", + " \n", + " \n", + " fuel01\n", + " \n", + " \n", + " \n", + " fuel02\n", + " \n", + " \n", + " feed_air1\n", + " \n", + " \n", + " st02\n", + " \n", + " \n", + " \n", + " st01\n", + " \n", + " \n", + " \n", + " air05\n", + " \n", + " \n", + " \n", + " air06\n", + " \n", + " \n", + " exhaust_1\n", + " \n", + " \n", + " g01\n", + " \n", + " \n", + " \n", + " g02\n", + " \n", + " \n", + " \n", + " air09\n", + " \n", + " \n", + " \n", + " air10\n", + " \n", + " \n", + " \n", + " air07\n", + " \n", + " \n", + " \n", + " g03\n", + " \n", + " \n", + " \n", + " g04\n", + " \n", + " \n", + " \n", + " g05\n", + " \n", + " \n", + " \n", + " g07\n", + " \n", + " \n", + " \n", + " g06\n", + " \n", + " \n", + " \n", + " g08\n", + " \n", + " \n", + " \n", + " air08\n", + " \n", + " \n", + " \n", + " \n", + " 299.82 K\n", + " 25.946 kg/s\n", + " 31.026 bar\n", + " 1.000%\n", + " 93.100%\n", + " 0.000%\n", + " 1.600%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yCH4:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " 3.200%\n", + " yC2H6:\n", + " 0.700%\n", + " yC3H8:\n", + " 0.400%\n", + " yC4H10:\n", + " \n", + " \n", + " \n", + " 335.99 K\n", + " 18.526 kg/s\n", + " 43.355 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 457.27 K\n", + " 18.526 kg/s\n", + " 43.355 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " NG PreharerUses Hot WaterFrom HRSG\n", + " \n", + " \n", + " 448.75 K\n", + " 25.946 kg/s\n", + " 31.026 bar\n", + " 1.000%\n", + " 93.100%\n", + " 0.000%\n", + " 1.600%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yCH4:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " 3.200%\n", + " yC2H6:\n", + " 0.700%\n", + " yC3H8:\n", + " 0.400%\n", + " yC4H10:\n", + " \n", + " \n", + " power:\n", + " 481.28 MW\n", + " \n", + " \n", + " isentr. efficiency:\n", + " 84.02%\n", + " isentr. head:\n", + " 367.27 kJ/kg\n", + " inlet vol. flow:\n", + " 883.2 m**3/s\n", + " \n", + " 288.15 K\n", + " 1100.984 kg/s\n", + " 1.034 bar\n", + " 0.030%\n", + " 0.990%\n", + " 0.920%\n", + " 20.740%\n", + " 77.320%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 288.17 K\n", + " 1100.984 kg/s\n", + " 1.099 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 709.64 K\n", + " 1100.984 kg/s\n", + " 19.226 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 709.64 K\n", + " 1008.614 kg/s\n", + " 19.226 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 691.89 K\n", + " 1034.561 kg/s\n", + " 19.226 bar\n", + " 0.070%\n", + " 3.842%\n", + " 19.884%\n", + " 74.195%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yCH4:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " 0.132%\n", + " yC2H6:\n", + " 0.029%\n", + " yC3H8:\n", + " 0.017%\n", + " yC4H10:\n", + " \n", + " \n", + " \n", + " 1641.38 K\n", + " 1034.691 kg/s\n", + " 18.265 bar\n", + " 4.324%\n", + " 9.217%\n", + " 0.000%\n", + " 11.471%\n", + " 74.106%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yCH4:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " 0.000%\n", + " yC2H6:\n", + " 0.000%\n", + " yC3H8:\n", + " 0.000%\n", + " yC4H10:\n", + " 0.881%\n", + " yAr:\n", + " \n", + " \n", + " \n", + " power:\n", + " -374.58 MW\n", + " \n", + " \n", + " isentr. efficiency:\n", + " 88.53%\n", + " isentr. head:\n", + " -408.95 kJ/kg\n", + " inlet vol. flow:\n", + " 273.6 m**3/s\n", + " \n", + " \n", + " \n", + " 898.00 K\n", + " 1127.060 kg/s\n", + " 1.100 bar\n", + " 3.978%\n", + " 8.554%\n", + " 0.884%\n", + " 12.219%\n", + " 74.365%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " 899.61 K\n", + " 1116.809 kg/s\n", + " 1.100 bar\n", + " 4.014%\n", + " 8.622%\n", + " 0.884%\n", + " 12.142%\n", + " 74.339%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1094.58 K\n", + " 1116.809 kg/s\n", + " 2.799 bar\n", + " 4.014%\n", + " 8.622%\n", + " 0.884%\n", + " 12.142%\n", + " 74.339%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 709.76 K\n", + " 14.769 kg/s\n", + " 2.799 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1099.28 K\n", + " 1102.041 kg/s\n", + " 2.799 bar\n", + " 4.066%\n", + " 8.723%\n", + " 0.883%\n", + " 12.028%\n", + " 74.299%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1329.41 K\n", + " 1102.041 kg/s\n", + " 7.137 bar\n", + " 4.066%\n", + " 8.723%\n", + " 0.883%\n", + " 12.028%\n", + " 74.299%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1365.44 K\n", + " 1034.691 kg/s\n", + " 7.137 bar\n", + " 4.324%\n", + " 9.217%\n", + " 0.881%\n", + " 11.471%\n", + " 74.106%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " power:\n", + " -264.25 MW\n", + " \n", + " \n", + " isentr. efficiency:\n", + " 88.19%\n", + " isentr. head:\n", + " -268.31 kJ/kg\n", + " inlet vol. flow:\n", + " 1280.2 m**3/s\n", + " \n", + " \n", + " \n", + " 709.77 K\n", + " 10.250 kg/s\n", + " 1.100 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 85.0%\n", + " opening:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 85.0%\n", + " opening:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 85.0%\n", + " opening:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 709.73 K\n", + " 67.350 kg/s\n", + " 7.137 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " power:\n", + " -319.43 MW\n", + " \n", + " \n", + " isentr. efficiency:\n", + " 88.35%\n", + " isentr. head:\n", + " -328.07 kJ/kg\n", + " inlet vol. flow:\n", + " 602.3 m**3/s\n", + " \n", + " \n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "HRSG Section\n", + "\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " image/svg+xml\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " IPSH1\n", + " IPSH2\n", + " IPSH3\n", + " HPSH3\n", + " HPSH2\n", + " HPSH1\n", + " HPEVAP\n", + " HPECON5\n", + " LPECON\n", + " LPEVAP\n", + " LPDRUM\n", + " HPSH4\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " HPECON4\n", + " HPECON3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " LPSH1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " Gas Turbine Exhaust\n", + " HP Steam\n", + " IP Steam\n", + " \n", + " Feedwater\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " HPECON1\n", + " \n", + " \n", + " \n", + " \n", + " HPECON2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " IPECON1\n", + " IPECON2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " IPEVAP\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " Cold Reheat\n", + " \n", + " \n", + " \n", + " \n", + " From HP ECON2\n", + " To HP ECON3\n", + " \n", + " \n", + " LP Steam\n", + " \n", + " \n", + " \n", + " Mixer1\n", + " \n", + " LP_FGsplit\n", + " \n", + " \n", + " \n", + " \n", + " LP_Mixer2\n", + " IPPump\n", + " HPPump\n", + " IP_Mixer1\n", + " IP_Splitter2\n", + " To Ejector\n", + " To Reclaimer\n", + " To Dryer\n", + " To NG Preheater\n", + " From NG Preheater\n", + " To Stack or Capture\n", + " IP_Splitter1\n", + " Splitter1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " SOEC Makeup\n", + " \n", + " \n", + " \n", + " \n", + " lp01\n", + " \n", + " \n", + " \n", + " lp02\n", + " \n", + " \n", + " \n", + " lp03\n", + " \n", + " \n", + " \n", + " lp04\n", + " \n", + " \n", + " \n", + " lp12\n", + " \n", + " \n", + " \n", + " lp05\n", + " \n", + " \n", + " \n", + " lp13\n", + " \n", + " \n", + " \n", + " g30\n", + " \n", + " \n", + " \n", + " g19\n", + " \n", + " \n", + " \n", + " hp03\n", + " \n", + " \n", + " \n", + " hp04\n", + " \n", + " \n", + " \n", + " hp05\n", + " \n", + " \n", + " \n", + " g18\n", + " \n", + " \n", + " \n", + " hp06\n", + " \n", + " \n", + " \n", + " hp06b\n", + " \n", + " \n", + " \n", + " g15\n", + " \n", + " \n", + " \n", + " ip06\n", + " \n", + " \n", + " \n", + " g14\n", + " \n", + " \n", + " \n", + " g17\n", + " \n", + " \n", + " \n", + " g16\n", + " \n", + " \n", + " \n", + " hp07\n", + " \n", + " \n", + " \n", + " hp08\n", + " \n", + " \n", + " \n", + " hp09\n", + " \n", + " \n", + " \n", + " hp10\n", + " \n", + " \n", + " \n", + " hp11\n", + " \n", + " \n", + " \n", + " g13\n", + " \n", + " \n", + " \n", + " g12\n", + " \n", + " \n", + " \n", + " g11\n", + " \n", + " \n", + " \n", + " g08\n", + " \n", + " \n", + " \n", + " g09\n", + " \n", + " \n", + " \n", + " ip10\n", + " \n", + " \n", + " \n", + " ip09\n", + " \n", + " \n", + " \n", + " ip08\n", + " \n", + " \n", + " \n", + " ip07\n", + " \n", + " \n", + " \n", + " g10\n", + " \n", + " \n", + " \n", + " g28\n", + " \n", + " \n", + " \n", + " ip11\n", + " \n", + " \n", + " \n", + " ip012\n", + " \n", + " \n", + " \n", + " ip013\n", + " \n", + " \n", + " \n", + " ip14\n", + " \n", + " \n", + " \n", + " ip015\n", + " \n", + " \n", + " \n", + " lp09\n", + " \n", + " \n", + " \n", + " lp08\n", + " \n", + " \n", + " \n", + " lp06\n", + " \n", + " \n", + " \n", + " hp01\n", + " \n", + " \n", + " \n", + " hp02\n", + " \n", + " \n", + " \n", + " hp03\n", + " \n", + " \n", + " \n", + " ip01\n", + " \n", + " \n", + " \n", + " ip02\n", + " \n", + " \n", + " \n", + " ip03\n", + " \n", + " \n", + " \n", + " g25\n", + " \n", + " \n", + " \n", + " g26\n", + " \n", + " \n", + " \n", + " g27\n", + " \n", + " \n", + " \n", + " ip05\n", + " \n", + " \n", + " \n", + " ip04\n", + " \n", + " \n", + " \n", + " g24\n", + " \n", + " \n", + " \n", + " g23\n", + " \n", + " \n", + " \n", + " g29\n", + " \n", + " \n", + " \n", + " lp10\n", + " \n", + " \n", + " \n", + " lp11\n", + " \n", + " \n", + " \n", + " g21\n", + " \n", + " \n", + " \n", + " g20\n", + " \n", + " \n", + " \n", + " g22\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " lp01\n", + " \n", + " \n", + " lp02\n", + " \n", + " \n", + " lp03\n", + " \n", + " \n", + " lp04\n", + " \n", + " \n", + " lp12\n", + " \n", + " \n", + " \n", + " lp05\n", + " \n", + " lp13\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " g30\n", + " \n", + " g29\n", + " g28\n", + " \n", + " \n", + " ip11\n", + " \n", + " ip06\n", + " g17\n", + " \n", + " \n", + " g16\n", + " g15\n", + " \n", + " \n", + " g14\n", + " hp07\n", + " \n", + " \n", + " hp08\n", + " hp06b\n", + " \n", + " hp06\n", + " \n", + " g19\n", + " \n", + " hp03\n", + " \n", + " g18\n", + " hp04\n", + " hp05\n", + " hp09\n", + " hp10\n", + " hp11\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " g12\n", + " g13\n", + " g11\n", + " g08\n", + " g09\n", + " ip08\n", + " ip09\n", + " ip10\n", + " ip07\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " g10\n", + " \n", + " ip14\n", + " ip13\n", + " ip12\n", + " ip15\n", + " \n", + " \n", + " \n", + " \n", + " ip06\n", + " \n", + " ip08\n", + " ip09\n", + " \n", + " \n", + " \n", + " hp01\n", + " hp02\n", + " hp03\n", + " \n", + " \n", + " \n", + " g27\n", + " g26\n", + " ip02\n", + " ip01\n", + " ip03\n", + " \n", + " \n", + " \n", + " \n", + " g25\n", + " \n", + " g24\n", + " \n", + " ip05\n", + " \n", + " ip04\n", + " \n", + " g23\n", + " \n", + " \n", + " g22\n", + " \n", + " lp11\n", + " lp10\n", + " g21\n", + " g20\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 382.51 K\n", + " 1.010 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 180.904 kg/s\n", + " 356.59 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 410.40 K\n", + " 1.010 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 0.000 kg/s\n", + " 443.56 K\n", + " 8.000 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 18.526 kg/s\n", + " 335.99 K\n", + " 43.355 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 199.430 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 22.669 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 199.430 kg/s\n", + " 394.15 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 556.520 kg/s\n", + " 547.38 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 199.430 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 180.904 kg/s\n", + " 399.98 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 40.345 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 40.345 kg/s\n", + " 436.13 K\n", + " 43.850 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 40.345 kg/s\n", + " 457.27 K\n", + " 43.355 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 22.669 kg/s\n", + " 557.10 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 556.520 kg/s\n", + " 557.25 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 556.520 kg/s\n", + " 557.25 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 552.32 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 21.818 kg/s\n", + " 510.22 K\n", + " 42.352 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 176.761 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 18.526 kg/s\n", + " 457.27 K\n", + " 43.355 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 479.13 K\n", + " 1.010 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 439.77 K\n", + " 244.000 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 21.818 kg/s\n", + " 457.27 K\n", + " 43.355 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 520.59 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 516.28 K\n", + " 1.012 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 514.35 K\n", + " 1.011 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 511.29 K\n", + " 1.010 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 504.84 K\n", + " 243.913 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 508.62 K\n", + " 243.829 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 157.430 kg/s\n", + " 855.94 K\n", + " 30.909 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 157.430 kg/s\n", + " 710.16 K\n", + " 33.408 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 157.430 kg/s\n", + " 600.93 K\n", + " 34.177 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 21.818 kg/s\n", + " 556.91 K\n", + " 42.146 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 135.612 kg/s\n", + " 610.47 K\n", + " 34.177 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 21.818 kg/s\n", + " 527.32 K\n", + " 42.352 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 610.47 K\n", + " 34.177 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 858.53 K\n", + " 172.428 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 898.00 K\n", + " 1.100 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 880.11 K\n", + " 1.098 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 735.19 K\n", + " 173.171 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 796.53 K\n", + " 172.830 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 786.52 K\n", + " 1.092 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 576.08 K\n", + " 1.047 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 577.92 K\n", + " 1.081 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 755.13 K\n", + " 1.083 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 840.55 K\n", + " 1.096 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 557.25 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 568.07 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 529.72 K\n", + " 243.746 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 544.93 K\n", + " 243.667 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 557.78 K\n", + " 243.589 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 627.24 K\n", + " 173.589 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 659.11 K\n", + " 173.415 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 584.88 K\n", + " 1.081 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 723.83 K\n", + " 1.081 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 557.34 K\n", + " 173.589 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 820.55 K\n", + " 1.094 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Steam Turbine Section\n", + "\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " image/svg+xml\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " HRSG\n", + " Cold Flue Gas\n", + " Gas Turbine Exhaust\n", + " Makeup Water\n", + " HP\n", + " IP\n", + " LP\n", + " Condensate Pump\n", + " Condenser\n", + " \n", + " \n", + " Cold Reheat\n", + " Hot Reheat\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " From Dryer\n", + " From Reclaimer\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " To Reclaimer\n", + " To Dryer\n", + " To Ejector\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " From NG Preheater\n", + " To NG Preheater\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " CaptureReboiler\n", + " \n", + " \n", + " \n", + " \n", + " To SOEC\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " t01\n", + " \n", + " \n", + " \n", + " t02\n", + " \n", + " \n", + " \n", + " t11\n", + " \n", + " \n", + " \n", + " t15\n", + " \n", + " \n", + " \n", + " t14\n", + " \n", + " \n", + " \n", + " t13\n", + " \n", + " \n", + " \n", + " t10\n", + " \n", + " \n", + " \n", + " t09\n", + " \n", + " \n", + " \n", + " t13\n", + " \n", + " \n", + " \n", + " t04\n", + " \n", + " \n", + " \n", + " t05\n", + " \n", + " \n", + " \n", + " t03\n", + " \n", + " \n", + " \n", + " t06\n", + " \n", + " \n", + " \n", + " t07\n", + " \n", + " \n", + " \n", + " t08\n", + " \n", + " \n", + " \n", + " t12\n", + " \n", + " \n", + " \n", + " cw01\n", + " \n", + " \n", + " \n", + " cw02\n", + " \n", + " \n", + " \n", + " t18\n", + " \n", + " \n", + " \n", + " t17\n", + " \n", + " \n", + " \n", + " t16\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " t01\n", + " \n", + " t02\n", + " \n", + " \n", + " t11\n", + " \n", + " \n", + " t15\n", + " \n", + " \n", + " t14\n", + " \n", + " \n", + " t10\n", + " \n", + " \n", + " t09\n", + " \n", + " \n", + " t13\n", + " \n", + " \n", + " t04\n", + " \n", + " \n", + " t05\n", + " \n", + " \n", + " t08\n", + " \n", + " \n", + " t12\n", + " \n", + " \n", + " cw01\n", + " \n", + " \n", + " cw02\n", + " \n", + " \n", + " t16\n", + " \n", + " \n", + " t18\n", + " \n", + " \n", + " t17\n", + " \n", + " t03\n", + " \n", + " t06\n", + " \n", + " t07\n", + " \n", + " \n", + " \n", + " 136.416 kg/s\n", + " 858.53 K\n", + " 172.428 bar\n", + " 63.487 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 157.430 kg/s\n", + " 855.94 K\n", + " 30.909 bar\n", + " 65.630 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 0.806 kg/s\n", + " 306.25 K\n", + " 1.013 bar\n", + " 2.500 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 3603.054 kg/s\n", + " 289.70 K\n", + " 5.000 bar\n", + " 1.260 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 111.286 kg/s\n", + " 316.88 K\n", + " 0.090 bar\n", + " 45.114 kJ/mol\n", + " 0.968\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 22.669 kg/s\n", + " 557.10 K\n", + " 6.550 bar\n", + " 54.533 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 0.002 kg/s\n", + " 577.72 K\n", + " 4.592 bar\n", + " 55.397 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 68.812 kg/s\n", + " 577.72 K\n", + " 4.592 bar\n", + " 55.397 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 157.430 kg/s\n", + " 581.07 K\n", + " 4.592 bar\n", + " 55.522 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 136.416 kg/s\n", + " 610.47 K\n", + " 34.177 bar\n", + " 55.412 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 111.286 kg/s\n", + " 577.72 K\n", + " 4.592 bar\n", + " 55.397 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 180.904 kg/s\n", + " 356.59 K\n", + " 6.550 bar\n", + " 6.304 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 0.001 kg/s\n", + " 487.00 K\n", + " 20.000 bar\n", + " 50.496 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 0.000 kg/s\n", + " 476.00 K\n", + " 16.000 bar\n", + " 50.393 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 111.286 kg/s\n", + " 316.88 K\n", + " 0.090 bar\n", + " 3.299 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 3603.054 kg/s\n", + " 306.85 K\n", + " 5.000 bar\n", + " 2.552 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 68.812 kg/s\n", + " 420.51 K\n", + " 4.592 bar\n", + " 11.184 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 112.092 kg/s\n", + " 316.80 K\n", + " 0.090 bar\n", + " 3.293 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 112.092 kg/s\n", + " 316.86 K\n", + " 6.550 bar\n", + " 3.308 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def display_pfd():\n", + " print(\"\\n\\nGas Turbine Section\\n\")\n", + " display(SVG(m.fs.gt.write_pfd()))\n", + " print(\"\\n\\nHRSG Section\\n\")\n", + " display(SVG(m.fs.hrsg.write_pfd()))\n", + " print(\"\\n\\nSteam Turbine Section\\n\")\n", + " display(SVG(m.fs.st.write_pfd()))\n", + "\n", + "\n", + "display_pfd()\n", + "\n", + "m.fs.gt.write_pfd(fname=\"data_pfds/gt_baseline.svg\")\n", + "m.fs.hrsg.write_pfd(fname=\"data_pfds/hrsg_baseline.svg\")\n", + "m.fs.st.write_pfd(fname=\"data_pfds/st_baseline.svg\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test key model outputs against NETL baseline" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Assert results approximately agree with baseline reoprt\n", + "assert pyo.value(m.fs.net_power_mw[0]) == pytest.approx(646)\n", + "assert pyo.value(m.fs.gross_power[0]) == pytest.approx(-690e6, rel=0.001)\n", + "assert pyo.value(100 * m.fs.lhv_efficiency[0]) == pytest.approx(52.8, abs=0.1)\n", + "assert pyo.value(\n", + " m.fs.total_variable_cost_rate[0] / m.fs.net_power_mw[0]\n", + ") == pytest.approx(37.2799, rel=0.01)\n", + "assert pyo.value(m.fs.fuel_cost_rate[0] / m.fs.net_power_mw[0]) == pytest.approx(\n", + " 31.6462, rel=0.01\n", + ")\n", + "assert pyo.value(\n", + " m.fs.other_variable_cost_rate[0] / m.fs.net_power_mw[0]\n", + ") == pytest.approx(5.63373, rel=0.01)\n", + "assert pyo.value(m.fs.gt.gt_power[0]) == pytest.approx(-477e6, rel=0.001)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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XnsNhYWFMDY2hpmZmXTFp3379hg1ahRGjBjR4N93RURERHQ/NRqg3K5dO6xatQqfffYZTp48iYsXL+LOnTto2rQpfH190bRp0/qqk4iIiKhWavV1EUZGRvD19YWvr28dl0NERERUt/g0FhEREckaww4RERHJGsMOERERyRrDDhEREclajcNOWVkZTExMcOrUqfqoh4iIiKhO1TjsKJVKtGjRAuXl5fVRDxEREVGdqtVtrOnTp2PatGm4fv16XddDREREVKdq9Tk7//73v3Hu3Dm4uLjAzc0NVlZWeu1Hjx6tk+KIiIiIHletws7AgQPruAwiIiKi+lGrsPP+++/XdR1ERERE9aLWj57n5+dj9erViI6OlsbuHD16FJcvX66z4oiIiIgeV62u7Jw8eRIhISFQq9W4cOECRo8eDTs7O2zYsAE5OTn44osv6rpOIiIiolqp1ZWdSZMmYcSIETh79izMzc2l5c8//zz2799fZ8URERERPa5ahZ3U1FS8+eabVZY3a9YMOp3usYsiIiIiqiu1CjtmZmYoLCyssvzMmTNwcHB47KKIiIiI6kqtws4LL7yAWbNmoaysDACgUCiQk5ODqVOnIiwsrE4LJCIiInoctQo7CxcuRFFRERwdHXHnzh0EBQWhdevWaNKkCT766KO6rpGIiIio1mr1NJZarcbOnTvxv//9DydPnkRRURGee+45hISE1HV9RERERI+lVmGnuLgY5ubmCAwMRGBgYF3XRERERFRnahV2bGxs0LlzZwQFBaFbt27QarWwsLCo69qIiIiIHlutxuzs2rULvXv3RkpKCl544QXY2toiMDAQ06dPx86dO+u6RiIiIqJaq1XYCQwMxLRp07Bjxw7k5+dj7969aN26NebPn4/evXvXdY1EREREtVar21jAvc/USUxMlKaSkhL069cPwcHBdVgeERER0eOpVdhp1qwZ7ty5g+DgYAQHB2Pq1Klo27YtFApFXddHRERE9FhqdRvLwcEBt2/fhk6ng06nQ25uLu7cuVPXtRERERE9tlqFnePHj0On0+G9995DSUkJpk2bhqZNm6JLly6YPn16XddIREREVGu1HrNjY2ODF154AQEBAejSpQt+/PFHfPXVV0hJSeGnKBMREVGjUauws2HDBmlgckZGBuzs7BAYGIiFCxciKCiormskIiIiqrVahZ2xY8eia9eu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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from matplotlib import pyplot as plt\n", + "\n", + "\n", + "variables = [\"net_power\", \"gross_power\", \"gt_power\"]\n", + "netl_baseline = [646, 690, 477]\n", + "idaes_prediction = [\n", + " pyo.value(m.fs.net_power_mw[0]),\n", + " -pyo.value(m.fs.gross_power[0]) * 1e-6,\n", + " -pyo.value(m.fs.gt.gt_power[0]) * 1e-6,\n", + "]\n", + "\n", + "label_location = np.arange(len(variables))\n", + "\n", + "width = 0.4\n", + "\n", + "fig, ax = plt.subplots()\n", + "netl_data = ax.bar(variables, netl_baseline, label=\"NETL Baseline\")\n", + "idaes_sim = ax.bar(\n", + " label_location + (width / 2), idaes_prediction, width, label=\"IDAES Prediction\"\n", + ")\n", + "\n", + "ax.set_ylabel(\"Power (MW)\")\n", + "ax.set_xticks(label_location)\n", + "ax.set_xticklabels(variables)\n", + "ax.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Run turndown cases 5 MW interval\n", + "\n", + "Here we set the CO2 capture rate to 97% and set the specific reboiler duty to PZ advanced solvent system. The minimum power is 160 MW net, which corresponds to a bit under 25%. This is roughly the minimum load for the NGCC modeled. Results are tabulated for tags in the tags_output tag group in a Pandas data frame. \n", + "\n", + "To run the series, change run_series to True. Running the turndown series takes a while, unless previous saved results are available. " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "run_series = False\n", + "if run_series:\n", + " idaes.cfg.ipopt.options.tol = 1e-6\n", + " idaes.cfg.ipopt.options.max_iter = 50\n", + " solver = pyo.SolverFactory(\"ipopt\")\n", + "\n", + " m.fs.cap_specific_reboiler_duty.fix(2.4e6)\n", + " m.fs.cap_fraction.fix(0.97)\n", + " powers = np.linspace(650, 160, int((650 - 160) / 5) + 1)\n", + " powers = list(powers)\n", + " powers.insert(1, 646)\n", + "\n", + " df = pd.DataFrame(columns=m.fs.tags_output.table_heading())\n", + "\n", + " for p in powers:\n", + " print(\"Simulation for net power = \", p)\n", + " fname = f\"data/ngcc_{int(p)}.json.gz\"\n", + " if os.path.exists(fname):\n", + " iutil.from_json(m, fname=fname, wts=iutil.StoreSpec(suffix=False))\n", + " else:\n", + " m.fs.net_power_mw.fix(p)\n", + " res = solver.solve(m, tee=False, symbolic_solver_labels=True)\n", + " if not pyo.check_optimal_termination(res):\n", + " break\n", + " iutil.to_json(m, fname=fname)\n", + " df.loc[m.fs.tags_output[\"net_power\"].value] = m.fs.tags_output.table_row(\n", + " numeric=True\n", + " )\n", + " if abs(p - 650) < 0.1:\n", + " m.fs.gt.streams_dataframe().to_csv(\n", + " \"data_tabulated/ngcc_stream_650mw_gt.csv\"\n", + " )\n", + " m.fs.st.steam_streams_dataframe().to_csv(\n", + " \"data_tabulated/ngcc_stream_650mw_st.csv\"\n", + " )\n", + " m.fs.hrsg.steam_streams_dataframe().to_csv(\n", + " \"data_tabulated/ngcc_stream_650mw_hrsg_steam.csv\"\n", + " )\n", + " m.fs.hrsg.flue_gas_streams_dataframe().to_csv(\n", + " \"data_tabulated/ngcc_stream_650mw_hrsg_gas.csv\"\n", + " )\n", + " df.to_csv(\"data_tabulated/ngcc.csv\")\n", + "\n", + " # Display the results from the run stored in a pandas dataframe\n", + " pd.set_option(\"display.max_rows\", None)\n", + " pd.set_option(\"display.max_columns\", None)\n", + " display(df)\n", + "\n", + " # Plot results\n", + " plt.plot(df[\"net_power (MW)\"], df[\"lhv_efficiency (%)\"])\n", + " plt.grid()\n", + " plt.xlabel(\"Net Power (MW)\")\n", + " plt.ylabel(\"LHV Efficiency (%)\")\n", + " plt.title(\"Net Power vs. Efficiency\")\n", + " plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 3 +} diff --git a/idaes_examples/notebooks/docs/power_gen/ngcc/ngcc_init.json.gz b/idaes_examples/notebooks/docs/power_gen/ngcc/ngcc_init.json.gz new file mode 100644 index 00000000..e64b3e72 Binary files /dev/null and b/idaes_examples/notebooks/docs/power_gen/ngcc/ngcc_init.json.gz differ diff --git a/idaes_examples/notebooks/docs/power_gen/ngcc/ngcc_test.ipynb b/idaes_examples/notebooks/docs/power_gen/ngcc/ngcc_test.ipynb new file mode 100644 index 00000000..4f2059d4 --- /dev/null +++ b/idaes_examples/notebooks/docs/power_gen/ngcc/ngcc_test.ipynb @@ -0,0 +1,2964 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "header", + "hide-cell" + ] + }, + "outputs": [], + "source": [ + "###############################################################################\n", + "# The Institute for the Design of Advanced Energy Systems Integrated Platform\n", + "# Framework (IDAES IP) was produced under the DOE Institute for the\n", + "# Design of Advanced Energy Systems (IDAES).\n", + "#\n", + "# Copyright (c) 2018-2023 by the software owners: The Regents of the\n", + "# University of California, through Lawrence Berkeley National Laboratory,\n", + "# National Technology & Engineering Solutions of Sandia, LLC, Carnegie Mellon\n", + "# University, West Virginia University Research Corporation, et al.\n", + "# All rights reserved. Please see the files COPYRIGHT.md and LICENSE.md\n", + "# for full copyright and license information.\n", + "###############################################################################" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# NGCC Baseline and Turndown\n", + "Maintainer: Javal Vyas \n", + "Author: John Eslick \n", + "Updated: 2024-07-25 \n", + "\n", + "This notebook runs a series of net electric power outputs from 650 MW to 160 MW (about 100% to 25%) for an NGCC with 97% CO2 capture. The NGCC model is based on the NETL report \"Cost and Performance Baseline for Fossil Energy Plants Volume 1, Bituminous Coal and Natural Gas to Electricity.\" Sept 2019, Case B31B [resource](https://www.osti.gov/servlets/purl/1893822). Another valuable resource for gaining a deeper understanding of the mathematical model would be the publication referenced [here](https://www.sciencedirect.com/science/article/pii/S1750583617302414). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports\n", + "\n", + "Import the modules that will be used." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import numpy as np\n", + "import pandas as pd\n", + "from IPython.core.display import SVG\n", + "import pyomo.environ as pyo\n", + "import idaes\n", + "from idaes.core.solvers import use_idaes_solver_configuration_defaults\n", + "import idaes.core.util.scaling as iscale\n", + "import idaes.core.util as iutil\n", + "from idaes_examples.mod.power_gen import ngcc\n", + "import idaes.logger as idaeslog\n", + "import pytest\n", + "import logging\n", + "\n", + "logging.getLogger(\"pyomo\").setLevel(logging.ERROR)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Make Output Directories\n", + "\n", + "This notebook can produce a large number of output files. To make it easier to manage, some subdirectories are used to organize output. This ensures that the directories exist." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def make_directory(path):\n", + " \"\"\"Make a directory if it doesn't exist\"\"\"\n", + " try:\n", + " os.mkdir(path)\n", + " except FileExistsError:\n", + " pass\n", + "\n", + "\n", + "make_directory(\"data\")\n", + "make_directory(\"data_pfds\")\n", + "make_directory(\"data_tabulated\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Global Solver Settings\n", + "\n", + "Use the IDAES configuration system for solver settings. These will apply to all Ipopt instances created, including the ones created in initialization methods." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "use_idaes_solver_configuration_defaults()\n", + "idaes.cfg.ipopt.options.nlp_scaling_method = \"user-scaling\"\n", + "idaes.cfg.ipopt.options.linear_solver = \"ma57\"\n", + "idaes.cfg.ipopt.options.OF_ma57_automatic_scaling = \"yes\"\n", + "idaes.cfg.ipopt.options.ma57_pivtol = 1e-5\n", + "idaes.cfg.ipopt.options.ma57_pivtolmax = 0.1\n", + "solver = pyo.SolverFactory(\"ipopt\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create the NGCC model\n", + "\n", + "Create the NGCC model and initialize it or read the saved initialization if available. The base initialized NGCC model is configured to match the baseline report with 90% capture using a Cansolv system." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-07-25 03:12:25 [INFO] idaes.init.fs: NGCC load initial from ngcc_init.json.gz\n", + "Ipopt 3.13.2: nlp_scaling_method=user-scaling\n", + "tol=1e-06\n", + "max_iter=200\n", + "linear_solver=ma57\n", + "ma57_pivtol=1e-05\n", + "ma57_pivtolmax=0.1\n", + "option_file_name=C:\\Users\\javal\\AppData\\Local\\Temp\\tmpa9m4gkwo_ipopt.opt\n", + "\n", + "Using option file \"C:\\Users\\javal\\AppData\\Local\\Temp\\tmpa9m4gkwo_ipopt.opt\".\n", + "\n", + "\n", + "******************************************************************************\n", + "This program contains Ipopt, a library for large-scale nonlinear optimization.\n", + " Ipopt is released as open source code under the Eclipse Public License (EPL).\n", + " For more information visit http://projects.coin-or.org/Ipopt\n", + "\n", + "This version of Ipopt was compiled from source code available at\n", + " https://github.com/IDAES/Ipopt as part of the Institute for the Design of\n", + " Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE\n", + " Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.\n", + "\n", + "This version of Ipopt was compiled using HSL, a collection of Fortran codes\n", + " for large-scale scientific computation. All technical papers, sales and\n", + " publicity material resulting from use of the HSL codes within IPOPT must\n", + " contain the following acknowledgement:\n", + " HSL, a collection of Fortran codes for large-scale scientific\n", + " computation. See http://www.hsl.rl.ac.uk.\n", + "******************************************************************************\n", + "\n", + "This is Ipopt version 3.13.2, running with linear solver ma57.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 7661\n", + "Number of nonzeros in inequality constraint Jacobian.: 0\n", + "Number of nonzeros in Lagrangian Hessian.............: 5948\n", + "\n", + "Total number of variables............................: 2404\n", + " variables with only lower bounds: 87\n", + " variables with lower and upper bounds: 1447\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 2404\n", + "Total number of inequality constraints...............: 0\n", + " inequality constraints with only lower bounds: 0\n", + " inequality constraints with lower and upper bounds: 0\n", + " inequality constraints with only upper bounds: 0\n", + "\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 0 0.0000000e+00 3.50e+01 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + "Reallocating memory for MA57: lfact (111709)\n", + " 1 0.0000000e+00 3.49e-01 1.12e+04 -1.0 3.06e+03 - 9.90e-01 9.90e-01h 1\n", + " 2 0.0000000e+00 3.15e-03 5.15e+02 -1.0 3.02e+03 - 9.89e-01 9.91e-01h 1\n", + " 3 0.0000000e+00 2.95e-07 9.98e+02 -1.0 3.74e+01 - 9.90e-01 1.00e+00h 1\n", + "\n", + "Number of Iterations....: 3\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Dual infeasibility......: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Constraint violation....: 2.9462398742907681e-07 2.9462398742907681e-07\n", + "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Overall NLP error.......: 2.9462398742907681e-07 2.9462398742907681e-07\n", + "\n", + "\n", + "Number of objective function evaluations = 4\n", + "Number of objective gradient evaluations = 4\n", + "Number of equality constraint evaluations = 4\n", + "Number of inequality constraint evaluations = 0\n", + "Number of equality constraint Jacobian evaluations = 4\n", + "Number of inequality constraint Jacobian evaluations = 0\n", + "Number of Lagrangian Hessian evaluations = 3\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.085\n", + "Total CPU secs in NLP function evaluations = 1.396\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + } + ], + "source": [ + "m = pyo.ConcreteModel()\n", + "m.fs = ngcc.NgccFlowsheet(dynamic=False)\n", + "iscale.calculate_scaling_factors(m)\n", + "m.fs.initialize(\n", + " load_from='ngcc_init.json.gz',\n", + " save_to='ngcc_init.json.gz',\n", + " outlvl=idaeslog.INFO_HIGH,\n", + ")\n", + "res = solver.solve(m, tee=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Show PFDs with baseline results\n", + "\n", + "This displays PFDs in the notebook, and saves them to files. The full NGCC model is too big to show well in a single PFD, so it is broken into the three main sections, gas turbine, heat recovery steam generator (HRSG), and steam turbine." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Gas Turbine Section\n", + "\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " image/svg+xml\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " cmp1\n", + " cmb1\n", + " gts1\n", + " inject1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " gts2\n", + " \n", + " \n", + " gts3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " splt1\n", + " mx1\n", + " mx2\n", + " mx3\n", + " Blade Cooling Air\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " NGPreheater\n", + " \n", + " To HRSG\n", + " \n", + " \n", + " \n", + " \n", + " air01\n", + " \n", + " \n", + " air03\n", + " \n", + " \n", + " air02\n", + " \n", + " \n", + " air04\n", + " \n", + " \n", + " fuel01\n", + " \n", + " \n", + " fuel02\n", + " \n", + " \n", + " \n", + " \n", + " st02\n", + " st01\n", + " \n", + " \n", + " air05\n", + " \n", + " \n", + " air06\n", + " \n", + " \n", + " g02\n", + " \n", + " \n", + " g01\n", + " \n", + " \n", + " air09\n", + " \n", + " \n", + " air10\n", + " \n", + " \n", + " air07\n", + " \n", + " \n", + " g03\n", + " \n", + " \n", + " g04\n", + " \n", + " \n", + " g05\n", + " \n", + " \n", + " g06\n", + " \n", + " \n", + " g07\n", + " \n", + " \n", + " g08\n", + " \n", + " \n", + " air08\n", + " \n", + " \n", + " Summary\n", + " total GT power:\n", + " 476.99 MW\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " air01\n", + " \n", + " \n", + " \n", + " air02\n", + " \n", + " \n", + " \n", + " air03\n", + " \n", + " \n", + " \n", + " air04\n", + " \n", + " \n", + " \n", + " fuel01\n", + " \n", + " \n", + " \n", + " fuel02\n", + " \n", + " \n", + " feed_air1\n", + " \n", + " \n", + " st02\n", + " \n", + " \n", + " \n", + " st01\n", + " \n", + " \n", + " \n", + " air05\n", + " \n", + " \n", + " \n", + " air06\n", + " \n", + " \n", + " exhaust_1\n", + " \n", + " \n", + " g01\n", + " \n", + " \n", + " \n", + " g02\n", + " \n", + " \n", + " \n", + " air09\n", + " \n", + " \n", + " \n", + " air10\n", + " \n", + " \n", + " \n", + " air07\n", + " \n", + " \n", + " \n", + " g03\n", + " \n", + " \n", + " \n", + " g04\n", + " \n", + " \n", + " \n", + " g05\n", + " \n", + " \n", + " \n", + " g07\n", + " \n", + " \n", + " \n", + " g06\n", + " \n", + " \n", + " \n", + " g08\n", + " \n", + " \n", + " \n", + " air08\n", + " \n", + " \n", + " \n", + " \n", + " 299.82 K\n", + " 25.946 kg/s\n", + " 31.026 bar\n", + " 1.000%\n", + " 93.100%\n", + " 0.000%\n", + " 1.600%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yCH4:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " 3.200%\n", + " yC2H6:\n", + " 0.700%\n", + " yC3H8:\n", + " 0.400%\n", + " yC4H10:\n", + " \n", + " \n", + " \n", + " 335.99 K\n", + " 18.526 kg/s\n", + " 43.355 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 457.27 K\n", + " 18.526 kg/s\n", + " 43.355 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " NG PreharerUses Hot WaterFrom HRSG\n", + " \n", + " \n", + " 448.75 K\n", + " 25.946 kg/s\n", + " 31.026 bar\n", + " 1.000%\n", + " 93.100%\n", + " 0.000%\n", + " 1.600%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yCH4:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " 3.200%\n", + " yC2H6:\n", + " 0.700%\n", + " yC3H8:\n", + " 0.400%\n", + " yC4H10:\n", + " \n", + " \n", + " power:\n", + " 481.28 MW\n", + " \n", + " \n", + " isentr. efficiency:\n", + " 84.02%\n", + " isentr. head:\n", + " 367.27 kJ/kg\n", + " inlet vol. flow:\n", + " 883.2 m**3/s\n", + " \n", + " 288.15 K\n", + " 1100.984 kg/s\n", + " 1.034 bar\n", + " 0.030%\n", + " 0.990%\n", + " 0.920%\n", + " 20.740%\n", + " 77.320%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 288.17 K\n", + " 1100.984 kg/s\n", + " 1.099 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 709.64 K\n", + " 1100.984 kg/s\n", + " 19.226 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 709.64 K\n", + " 1008.614 kg/s\n", + " 19.226 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 691.89 K\n", + " 1034.561 kg/s\n", + " 19.226 bar\n", + " 0.070%\n", + " 3.842%\n", + " 19.884%\n", + " 74.195%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yCH4:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " 0.132%\n", + " yC2H6:\n", + " 0.029%\n", + " yC3H8:\n", + " 0.017%\n", + " yC4H10:\n", + " \n", + " \n", + " \n", + " 1641.38 K\n", + " 1034.691 kg/s\n", + " 18.265 bar\n", + " 4.324%\n", + " 9.217%\n", + " 0.000%\n", + " 11.471%\n", + " 74.106%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yCH4:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " 0.000%\n", + " yC2H6:\n", + " 0.000%\n", + " yC3H8:\n", + " 0.000%\n", + " yC4H10:\n", + " 0.881%\n", + " yAr:\n", + " \n", + " \n", + " \n", + " power:\n", + " -374.58 MW\n", + " \n", + " \n", + " isentr. efficiency:\n", + " 88.53%\n", + " isentr. head:\n", + " -408.95 kJ/kg\n", + " inlet vol. flow:\n", + " 273.6 m**3/s\n", + " \n", + " \n", + " \n", + " 898.00 K\n", + " 1127.060 kg/s\n", + " 1.100 bar\n", + " 3.978%\n", + " 8.554%\n", + " 0.884%\n", + " 12.219%\n", + " 74.365%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " 899.61 K\n", + " 1116.809 kg/s\n", + " 1.100 bar\n", + " 4.014%\n", + " 8.622%\n", + " 0.884%\n", + " 12.142%\n", + " 74.339%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1094.58 K\n", + " 1116.809 kg/s\n", + " 2.799 bar\n", + " 4.014%\n", + " 8.622%\n", + " 0.884%\n", + " 12.142%\n", + " 74.339%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 709.76 K\n", + " 14.769 kg/s\n", + " 2.799 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1099.28 K\n", + " 1102.041 kg/s\n", + " 2.799 bar\n", + " 4.066%\n", + " 8.723%\n", + " 0.883%\n", + " 12.028%\n", + " 74.299%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1329.41 K\n", + " 1102.041 kg/s\n", + " 7.137 bar\n", + " 4.066%\n", + " 8.723%\n", + " 0.883%\n", + " 12.028%\n", + " 74.299%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1365.44 K\n", + " 1034.691 kg/s\n", + " 7.137 bar\n", + " 4.324%\n", + " 9.217%\n", + " 0.881%\n", + " 11.471%\n", + " 74.106%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " power:\n", + " -264.25 MW\n", + " \n", + " \n", + " isentr. efficiency:\n", + " 88.19%\n", + " isentr. head:\n", + " -268.31 kJ/kg\n", + " inlet vol. flow:\n", + " 1280.2 m**3/s\n", + " \n", + " \n", + " \n", + " 709.77 K\n", + " 10.250 kg/s\n", + " 1.100 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 85.0%\n", + " opening:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 85.0%\n", + " opening:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 85.0%\n", + " opening:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 709.73 K\n", + " 67.350 kg/s\n", + " 7.137 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " power:\n", + " -319.43 MW\n", + " \n", + " \n", + " isentr. efficiency:\n", + " 88.35%\n", + " isentr. head:\n", + " -328.07 kJ/kg\n", + " inlet vol. flow:\n", + " 602.3 m**3/s\n", + " \n", + " \n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "HRSG Section\n", + "\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " image/svg+xml\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " IPSH1\n", + " IPSH2\n", + " IPSH3\n", + " HPSH3\n", + " HPSH2\n", + " HPSH1\n", + " HPEVAP\n", + " HPECON5\n", + " LPECON\n", + " LPEVAP\n", + " LPDRUM\n", + " HPSH4\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " HPECON4\n", + " HPECON3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " LPSH1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " Gas Turbine Exhaust\n", + " HP Steam\n", + " IP Steam\n", + " \n", + " Feedwater\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " HPECON1\n", + " \n", + " \n", + " \n", + " \n", + " HPECON2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " IPECON1\n", + " IPECON2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " IPEVAP\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " Cold Reheat\n", + " \n", + " \n", + " \n", + " \n", + " From HP ECON2\n", + " To HP ECON3\n", + " \n", + " \n", + " LP Steam\n", + " \n", + " \n", + " \n", + " Mixer1\n", + " \n", + " LP_FGsplit\n", + " \n", + " \n", + " \n", + " \n", + " LP_Mixer2\n", + " IPPump\n", + " HPPump\n", + " IP_Mixer1\n", + " IP_Splitter2\n", + " To Ejector\n", + " To Reclaimer\n", + " To Dryer\n", + " To NG Preheater\n", + " From NG Preheater\n", + " To Stack or Capture\n", + " IP_Splitter1\n", + " Splitter1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " SOEC Makeup\n", + " \n", + " \n", + " \n", + " \n", + " lp01\n", + " \n", + " \n", + " \n", + " lp02\n", + " \n", + " \n", + " \n", + " lp03\n", + " \n", + " \n", + " \n", + " lp04\n", + " \n", + " \n", + " \n", + " lp12\n", + " \n", + " \n", + " \n", + " lp05\n", + " \n", + " \n", + " \n", + " lp13\n", + " \n", + " \n", + " \n", + " g30\n", + " \n", + " \n", + " \n", + " g19\n", + " \n", + " \n", + " \n", + " hp03\n", + " \n", + " \n", + " \n", + " hp04\n", + " \n", + " \n", + " \n", + " hp05\n", + " \n", + " \n", + " \n", + " g18\n", + " \n", + " \n", + " \n", + " hp06\n", + " \n", + " \n", + " \n", + " hp06b\n", + " \n", + " \n", + " \n", + " g15\n", + " \n", + " \n", + " \n", + " ip06\n", + " \n", + " \n", + " \n", + " g14\n", + " \n", + " \n", + " \n", + " g17\n", + " \n", + " \n", + " \n", + " g16\n", + " \n", + " \n", + " \n", + " hp07\n", + " \n", + " \n", + " \n", + " hp08\n", + " \n", + " \n", + " \n", + " hp09\n", + " \n", + " \n", + " \n", + " hp10\n", + " \n", + " \n", + " \n", + " hp11\n", + " \n", + " \n", + " \n", + " g13\n", + " \n", + " \n", + " \n", + " g12\n", + " \n", + " \n", + " \n", + " g11\n", + " \n", + " \n", + " \n", + " g08\n", + " \n", + " \n", + " \n", + " g09\n", + " \n", + " \n", + " \n", + " ip10\n", + " \n", + " \n", + " \n", + " ip09\n", + " \n", + " \n", + " \n", + " ip08\n", + " \n", + " \n", + " \n", + " ip07\n", + " \n", + " \n", + " \n", + " g10\n", + " \n", + " \n", + " \n", + " g28\n", + " \n", + " \n", + " \n", + " ip11\n", + " \n", + " \n", + " \n", + " ip012\n", + " \n", + " \n", + " \n", + " ip013\n", + " \n", + " \n", + " \n", + " ip14\n", + " \n", + " \n", + " \n", + " ip015\n", + " \n", + " \n", + " \n", + " lp09\n", + " \n", + " \n", + " \n", + " lp08\n", + " \n", + " \n", + " \n", + " lp06\n", + " \n", + " \n", + " \n", + " hp01\n", + " \n", + " \n", + " \n", + " hp02\n", + " \n", + " \n", + " \n", + " hp03\n", + " \n", + " \n", + " \n", + " ip01\n", + " \n", + " \n", + " \n", + " ip02\n", + " \n", + " \n", + " \n", + " ip03\n", + " \n", + " \n", + " \n", + " g25\n", + " \n", + " \n", + " \n", + " g26\n", + " \n", + " \n", + " \n", + " g27\n", + " \n", + " \n", + " \n", + " ip05\n", + " \n", + " \n", + " \n", + " ip04\n", + " \n", + " \n", + " \n", + " g24\n", + " \n", + " \n", + " \n", + " g23\n", + " \n", + " \n", + " \n", + " g29\n", + " \n", + " \n", + " \n", + " lp10\n", + " \n", + " \n", + " \n", + " lp11\n", + " \n", + " \n", + " \n", + " g21\n", + " \n", + " \n", + " \n", + " g20\n", + " \n", + " \n", + " \n", + " g22\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " lp01\n", + " \n", + " \n", + " lp02\n", + " \n", + " \n", + " lp03\n", + " \n", + " \n", + " lp04\n", + " \n", + " \n", + " lp12\n", + " \n", + " \n", + " \n", + " lp05\n", + " \n", + " lp13\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " g30\n", + " \n", + " g29\n", + " g28\n", + " \n", + " \n", + " ip11\n", + " \n", + " ip06\n", + " g17\n", + " \n", + " \n", + " g16\n", + " g15\n", + " \n", + " \n", + " g14\n", + " hp07\n", + " \n", + " \n", + " hp08\n", + " hp06b\n", + " \n", + " hp06\n", + " \n", + " g19\n", + " \n", + " hp03\n", + " \n", + " g18\n", + " hp04\n", + " hp05\n", + " hp09\n", + " hp10\n", + " hp11\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " g12\n", + " g13\n", + " g11\n", + " g08\n", + " g09\n", + " ip08\n", + " ip09\n", + " ip10\n", + " ip07\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " g10\n", + " \n", + " ip14\n", + " ip13\n", + " ip12\n", + " ip15\n", + " \n", + " \n", + " \n", + " \n", + " ip06\n", + " \n", + " ip08\n", + " ip09\n", + " \n", + " \n", + " \n", + " hp01\n", + " hp02\n", + " hp03\n", + " \n", + " \n", + " \n", + " g27\n", + " g26\n", + " ip02\n", + " ip01\n", + " ip03\n", + " \n", + " \n", + " \n", + " \n", + " g25\n", + " \n", + " g24\n", + " \n", + " ip05\n", + " \n", + " ip04\n", + " \n", + " g23\n", + " \n", + " \n", + " g22\n", + " \n", + " lp11\n", + " lp10\n", + " g21\n", + " g20\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 382.51 K\n", + " 1.010 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 180.904 kg/s\n", + " 356.59 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 410.40 K\n", + " 1.010 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 0.000 kg/s\n", + " 443.56 K\n", + " 8.000 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 18.526 kg/s\n", + " 335.99 K\n", + " 43.355 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 199.430 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 22.669 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 199.430 kg/s\n", + " 394.15 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 556.520 kg/s\n", + " 547.38 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 199.430 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 180.904 kg/s\n", + " 399.98 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 40.345 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 40.345 kg/s\n", + " 436.13 K\n", + " 43.850 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 40.345 kg/s\n", + " 457.27 K\n", + " 43.355 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 22.669 kg/s\n", + " 557.10 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 556.520 kg/s\n", + " 557.25 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 556.520 kg/s\n", + " 557.25 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 552.32 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 21.818 kg/s\n", + " 510.22 K\n", + " 42.352 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 176.761 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 18.526 kg/s\n", + " 457.27 K\n", + " 43.355 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 479.13 K\n", + " 1.010 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 439.77 K\n", + " 244.000 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 21.818 kg/s\n", + " 457.27 K\n", + " 43.355 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 520.59 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 516.28 K\n", + " 1.012 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 514.35 K\n", + " 1.011 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 511.29 K\n", + " 1.010 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 504.84 K\n", + " 243.913 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 508.62 K\n", + " 243.829 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 157.430 kg/s\n", + " 855.94 K\n", + " 30.909 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 157.430 kg/s\n", + " 710.16 K\n", + " 33.408 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 157.430 kg/s\n", + " 600.93 K\n", + " 34.177 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 21.818 kg/s\n", + " 556.91 K\n", + " 42.146 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 135.612 kg/s\n", + " 610.47 K\n", + " 34.177 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 21.818 kg/s\n", + " 527.32 K\n", + " 42.352 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 610.47 K\n", + " 34.177 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 858.53 K\n", + " 172.428 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 898.00 K\n", + " 1.100 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 880.11 K\n", + " 1.098 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 735.19 K\n", + " 173.171 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 796.53 K\n", + " 172.830 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 786.52 K\n", + " 1.092 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 576.08 K\n", + " 1.047 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 577.92 K\n", + " 1.081 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 755.13 K\n", + " 1.083 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 840.55 K\n", + " 1.096 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 557.25 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 568.07 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 529.72 K\n", + " 243.746 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 544.93 K\n", + " 243.667 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 557.78 K\n", + " 243.589 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 627.24 K\n", + " 173.589 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 659.11 K\n", + " 173.415 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 584.88 K\n", + " 1.081 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 723.83 K\n", + " 1.081 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 557.34 K\n", + " 173.589 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 820.55 K\n", + " 1.094 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Steam Turbine Section\n", + "\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " image/svg+xml\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " HRSG\n", + " Cold Flue Gas\n", + " Gas Turbine Exhaust\n", + " Makeup Water\n", + " HP\n", + " IP\n", + " LP\n", + " Condensate Pump\n", + " Condenser\n", + " \n", + " \n", + " Cold Reheat\n", + " Hot Reheat\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " From Dryer\n", + " From Reclaimer\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " To Reclaimer\n", + " To Dryer\n", + " To Ejector\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " From NG Preheater\n", + " To NG Preheater\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " CaptureReboiler\n", + " \n", + " \n", + " \n", + " \n", + " To SOEC\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " t01\n", + " \n", + " \n", + " \n", + " t02\n", + " \n", + " \n", + " \n", + " t11\n", + " \n", + " \n", + " \n", + " t15\n", + " \n", + " \n", + " \n", + " t14\n", + " \n", + " \n", + " \n", + " t13\n", + " \n", + " \n", + " \n", + " t10\n", + " \n", + " \n", + " \n", + " t09\n", + " \n", + " \n", + " \n", + " t13\n", + " \n", + " \n", + " \n", + " t04\n", + " \n", + " \n", + " \n", + " t05\n", + " \n", + " \n", + " \n", + " t03\n", + " \n", + " \n", + " \n", + " t06\n", + " \n", + " \n", + " \n", + " t07\n", + " \n", + " \n", + " \n", + " t08\n", + " \n", + " \n", + " \n", + " t12\n", + " \n", + " \n", + " \n", + " cw01\n", + " \n", + " \n", + " \n", + " cw02\n", + " \n", + " \n", + " \n", + " t18\n", + " \n", + " \n", + " \n", + " t17\n", + " \n", + " \n", + " \n", + " t16\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " t01\n", + " \n", + " t02\n", + " \n", + " \n", + " t11\n", + " \n", + " \n", + " t15\n", + " \n", + " \n", + " t14\n", + " \n", + " \n", + " t10\n", + " \n", + " \n", + " t09\n", + " \n", + " \n", + " t13\n", + " \n", + " \n", + " t04\n", + " \n", + " \n", + " t05\n", + " \n", + " \n", + " t08\n", + " \n", + " \n", + " t12\n", + " \n", + " \n", + " cw01\n", + " \n", + " \n", + " cw02\n", + " \n", + " \n", + " t16\n", + " \n", + " \n", + " t18\n", + " \n", + " \n", + " t17\n", + " \n", + " t03\n", + " \n", + " t06\n", + " \n", + " t07\n", + " \n", + " \n", + " \n", + " 136.416 kg/s\n", + " 858.53 K\n", + " 172.428 bar\n", + " 63.487 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 157.430 kg/s\n", + " 855.94 K\n", + " 30.909 bar\n", + " 65.630 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 0.806 kg/s\n", + " 306.25 K\n", + " 1.013 bar\n", + " 2.500 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 3603.054 kg/s\n", + " 289.70 K\n", + " 5.000 bar\n", + " 1.260 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 111.286 kg/s\n", + " 316.88 K\n", + " 0.090 bar\n", + " 45.114 kJ/mol\n", + " 0.968\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 22.669 kg/s\n", + " 557.10 K\n", + " 6.550 bar\n", + " 54.533 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 0.002 kg/s\n", + " 577.72 K\n", + " 4.592 bar\n", + " 55.397 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 68.812 kg/s\n", + " 577.72 K\n", + " 4.592 bar\n", + " 55.397 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 157.430 kg/s\n", + " 581.07 K\n", + " 4.592 bar\n", + " 55.522 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 136.416 kg/s\n", + " 610.47 K\n", + " 34.177 bar\n", + " 55.412 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 111.286 kg/s\n", + " 577.72 K\n", + " 4.592 bar\n", + " 55.397 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 180.904 kg/s\n", + " 356.59 K\n", + " 6.550 bar\n", + " 6.304 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 0.001 kg/s\n", + " 487.00 K\n", + " 20.000 bar\n", + " 50.496 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 0.000 kg/s\n", + " 476.00 K\n", + " 16.000 bar\n", + " 50.393 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 111.286 kg/s\n", + " 316.88 K\n", + " 0.090 bar\n", + " 3.299 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 3603.054 kg/s\n", + " 306.85 K\n", + " 5.000 bar\n", + " 2.552 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 68.812 kg/s\n", + " 420.51 K\n", + " 4.592 bar\n", + " 11.184 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 112.092 kg/s\n", + " 316.80 K\n", + " 0.090 bar\n", + " 3.293 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 112.092 kg/s\n", + " 316.86 K\n", + " 6.550 bar\n", + " 3.308 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def display_pfd():\n", + " print(\"\\n\\nGas Turbine Section\\n\")\n", + " display(SVG(m.fs.gt.write_pfd()))\n", + " print(\"\\n\\nHRSG Section\\n\")\n", + " display(SVG(m.fs.hrsg.write_pfd()))\n", + " print(\"\\n\\nSteam Turbine Section\\n\")\n", + " display(SVG(m.fs.st.write_pfd()))\n", + "\n", + "\n", + "display_pfd()\n", + "\n", + "m.fs.gt.write_pfd(fname=\"data_pfds/gt_baseline.svg\")\n", + "m.fs.hrsg.write_pfd(fname=\"data_pfds/hrsg_baseline.svg\")\n", + "m.fs.st.write_pfd(fname=\"data_pfds/st_baseline.svg\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test key model outputs against NETL baseline" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Assert results approximately agree with baseline reoprt\n", + "assert pyo.value(m.fs.net_power_mw[0]) == pytest.approx(646)\n", + "assert pyo.value(m.fs.gross_power[0]) == pytest.approx(-690e6, rel=0.001)\n", + "assert pyo.value(100 * m.fs.lhv_efficiency[0]) == pytest.approx(52.8, abs=0.1)\n", + "assert pyo.value(\n", + " m.fs.total_variable_cost_rate[0] / m.fs.net_power_mw[0]\n", + ") == pytest.approx(37.2799, rel=0.01)\n", + "assert pyo.value(m.fs.fuel_cost_rate[0] / m.fs.net_power_mw[0]) == pytest.approx(\n", + " 31.6462, rel=0.01\n", + ")\n", + "assert pyo.value(\n", + " m.fs.other_variable_cost_rate[0] / m.fs.net_power_mw[0]\n", + ") == pytest.approx(5.63373, rel=0.01)\n", + "assert pyo.value(m.fs.gt.gt_power[0]) == pytest.approx(-477e6, rel=0.001)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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XnsNhYWFMDY2hpmZmXTFp3379hg1ahRGjBjR4N93RURERHQ/NRqg3K5dO6xatQqfffYZTp48iYsXL+LOnTto2rQpfH190bRp0/qqk4iIiKhWavV1EUZGRvD19YWvr28dl0NERERUt/g0FhEREckaww4RERHJGsMOERERyRrDDhEREclajcNOWVkZTExMcOrUqfqoh4iIiKhO1TjsKJVKtGjRAuXl5fVRDxEREVGdqtVtrOnTp2PatGm4fv16XddDREREVKdq9Tk7//73v3Hu3Dm4uLjAzc0NVlZWeu1Hjx6tk+KIiIiIHletws7AgQPruAwiIiKi+lGrsPP+++/XdR1ERERE9aLWj57n5+dj9erViI6OlsbuHD16FJcvX66z4oiIiIgeV62u7Jw8eRIhISFQq9W4cOECRo8eDTs7O2zYsAE5OTn44osv6rpOIiIiolqp1ZWdSZMmYcSIETh79izMzc2l5c8//zz2799fZ8URERERPa5ahZ3U1FS8+eabVZY3a9YMOp3usYsiIiIiqiu1CjtmZmYoLCyssvzMmTNwcHB47KKIiIiI6kqtws4LL7yAWbNmoaysDACgUCiQk5ODqVOnIiwsrE4LJCIiInoctQo7CxcuRFFRERwdHXHnzh0EBQWhdevWaNKkCT766KO6rpGIiIio1mr1NJZarcbOnTvxv//9DydPnkRRURGee+45hISE1HV9RERERI+lVmGnuLgY5ubmCAwMRGBgYF3XRERERFRnahV2bGxs0LlzZwQFBaFbt27QarWwsLCo69qIiIiIHlutxuzs2rULvXv3RkpKCl544QXY2toiMDAQ06dPx86dO+u6RiIiIqJaq1XYCQwMxLRp07Bjxw7k5+dj7969aN26NebPn4/evXvXdY1EREREtVar21jAvc/USUxMlKaSkhL069cPwcHBdVgeERER0eOpVdhp1qwZ7ty5g+DgYAQHB2Pq1Klo27YtFApFXddHRERE9FhqdRvLwcEBt2/fhk6ng06nQ25uLu7cuVPXtRERERE9tlqFnePHj0On0+G9995DSUkJpk2bhqZNm6JLly6YPn16XddIREREVGu1HrNjY2ODF154AQEBAejSpQt+/PFHfPXVV0hJSeGnKBMREVGjUauws2HDBmlgckZGBuzs7BAYGIiFCxciKCiormskIiIiqrVahZ2xY8eia9euGDNmDIKCguDj41PXdRERERHViVqFnby8vLqug4iIiKhe1HrMTnl5OTZt2oTMzEwAgLe3NwYMGABjY+M6K46IiIjocdXqaaxz587By8sLw4cPx4YNG7BhwwYMGzYMzzzzDM6fP1/t7axYsQJt27aFSqWCSqWCVqvF1q1bpfbi4mJERkbC3t4e1tbWCAsLQ25urt42cnJy0LdvX1haWsLR0RFTpkzB3bt3a3NYREREJEO1CjsTJkxAq1atcOnSJRw9ehRHjx5FTk4OPDw8MGHChGpvp3nz5pg3bx7S0tJw5MgRdO/eHQMGDMDp06cBABMnTsTPP/+M7777Dvv27cOVK1cwaNAgaf3y8nL07dsXpaWlOHToED7//HPEx8dj5syZtTksIiIikqFa3cbat28fkpOTYWdnJy2zt7fHvHnzEBAQUO3t9O/fX2/+o48+wooVK5CcnIzmzZtjzZo1WL9+Pbp37w4AiIuLg5eXF5KTk+Hv748dO3YgIyMDu3btgpOTE3x9ffHhhx9i6tSpiImJgampaW0Oj4iIiGSkVld2zMzMcPPmzSrLi4qKah0wysvL8fXXX+PWrVvQarVIS0tDWVkZQkJCpD6enp5o0aIFkpKSAABJSUnw8fGBk5OT1Cc0NBSFhYXS1aH7KSkpQWFhod5ERERE8lSrsNOvXz+MGTMGKSkpEEJACIHk5GSMHTsWL7zwQo22lZ6eDmtra5iZmWHs2LHYuHEjvL29odPpYGpqChsbG73+Tk5O0Ol0AACdTqcXdCrbK9seZO7cuVCr1dLk6upao5qJiIjoyVGrsLN06VK0atUKWq0W5ubmMDc3R0BAAFq3bo0lS5bUaFtPP/00jh8/jpSUFIwbNw4RERHIyMioTVnVFh0djYKCAmm6dOlSve6PiIiIDKdWY3ZsbGzw448/4ty5c9Kj515eXmjdunWNt2Vqaiqt16FDB6SmpmLJkiUYPHgwSktLkZ+fr3d1Jzc3FxqNBgCg0Whw+PBhve1VPq1V2ed+zMzMYGZmVuNaiYiI6MlToys7FRUV+PjjjxEQEIBOnTph9erVCAkJQf/+/WsVdB60j5KSEnTo0AFKpRK7d++W2rKyspCTkwOtVgsA0Gq1SE9P1/uQw507d0KlUsHb27tO6iEiIqInW42u7Hz00UeIiYlBSEgILCwssGTJEuTl5WHt2rW12nl0dDT69OmDFi1a4ObNm1i/fj0SExOxfft2qNVqjBw5EpMmTYKdnR1UKhXeeustaLVa+Pv7AwB69eoFb29vDBs2DPPnz4dOp8OMGTMQGRnJKzdEREQEoIZh54svvsDy5cvx5ptvAgB27dqFvn37YvXq1TAyqvnwn7y8PAwfPhxXr16FWq1G27ZtsX37dvTs2RMAsGjRIhgZGSEsLAwlJSUIDQ3F8uXLpfWNjY2RkJCAcePGQavVwsrKChEREZg1a1aNayEiIiJ5qlHYycnJwfPPPy/Nh4SEQKFQ4MqVK2jevHmNd75mzZqHtpubmyM2NhaxsbEP7OPm5oYtW7bUeN9ERET091CjyzF3796Fubm53jKlUomysrI6LYqIiIiortToyo4QAiNGjNAbD1NcXIyxY8fCyspKWrZhw4a6q5CIiIjoMdQo7ERERFRZNnTo0DorhoiIiKiu1SjsxMXF1VcdRERERPWiVp+gTERERPSkYNghIiIiWWPYISIiIllj2CEiIiJZY9ghIiIiWWPYISIiIllj2CEiIiJZY9ghIiIiWWPYISIiIllj2CEiIiJZY9ghIiIiWWPYISIiIllj2CEiIiJZY9ghIiIiWWPYISIiIllj2CEiIiJZY9ghIiIiWWPYISIiIllj2CEiIiJZY9ghIiIiWWPYISIiIllj2CEiIiJZY9ghIiIiWWPYISIiIllj2CEiIiJZY9ghIiIiWWPYISIiIllj2CEiIiJZY9ghIiIiWWPYISIiIllj2CEiIiJZY9ghIiIiWWPYISIiIllj2CEiIiJZY9ghIiIiWWPYISIiIlkzaNiZO3cuOnXqhCZNmsDR0REDBw5EVlaWXp/i4mJERkbC3t4e1tbWCAsLQ25url6fnJwc9O3bF5aWlnB0dMSUKVNw9+7dhjwUIiIiaqQMGnb27duHyMhIJCcnY+fOnSgrK0OvXr1w69Ytqc/EiRPx888/47vvvsO+fftw5coVDBo0SGovLy9H3759UVpaikOHDuHzzz9HfHw8Zs6caYhDIiIiokbGxJA737Ztm958fHw8HB0dkZaWhq5du6KgoABr1qzB+vXr0b17dwBAXFwcvLy8kJycDH9/f+zYsQMZGRnYtWsXnJyc4Ovriw8//BBTp05FTEwMTE1NDXFoRERE1Eg0qjE7BQUFAAA7OzsAQFpaGsrKyhASEiL18fT0RIsWLZCUlAQASEpKgo+PD5ycnKQ+oaGhKCwsxOnTp++7n5KSEhQWFupNREREJE+NJuxUVFQgKioKAQEBePbZZwEAOp0OpqamsLGx0evr5OQEnU4n9flz0Klsr2y7n7lz50KtVkuTq6trHR8NERERNRaNJuxERkbi1KlT+Prrr+t9X9HR0SgoKJCmS5cu1fs+iYiIyDAMOman0vjx45GQkID9+/ejefPm0nKNRoPS0lLk5+frXd3Jzc2FRqOR+hw+fFhve5VPa1X2+SszMzOYmZnV8VEQERFRY2TQKztCCIwfPx4bN27Enj174OHhodfeoUMHKJVK7N69W1qWlZWFnJwcaLVaAIBWq0V6ejry8vKkPjt37oRKpYK3t3fDHAgRERE1Wga9shMZGYn169fjxx9/RJMmTaQxNmq1GhYWFlCr1Rg5ciQmTZoEOzs7qFQqvPXWW9BqtfD39wcA9OrVC97e3hg2bBjmz58PnU6HGTNmIDIykldviIiIyLBhZ8WKFQCA4OBgveVxcXEYMWIEAGDRokUwMjJCWFgYSkpKEBoaiuXLl0t9jY2NkZCQgHHjxkGr1cLKygoRERGYNWtWQx0GERERNWIGDTtCiEf2MTc3R2xsLGJjYx/Yx83NDVu2bKnL0oiIiEgmGs3TWERERET1gWGHiIiIZI1hh4iIiGSNYYeIiIhkjWGHiIiIZI1hh4iIiGSNYYeIiIhkjWGHiIiIZI1hh4iIiGSNYYeIiIhkjWGHiIiIZI1hh4iIiGSNYYeIiIhkjWGHiIiIZI1hh4iIiGSNYYeIiIhkjWGHiIiIZI1hh4iIiGSNYYeIiIhkjWGHiIiIZI1hh4iIiGSNYYeIiIhkjWGHiIiIZI1hh4iIiGSNYYeIiIhkjWGHiIiIZI1hh4iIiGSNYYeIiIhkjWGHiIiIZI1hh4iIiGSNYYeIiIhkjWGHiIiIZI1hh4iIiGSNYYeIiIhkjWGHiIiIZI1hh4iIiGSNYYeIiIhkjWGHiIiIZI1hh4iIiGSNYYeIiIhkzaBhZ//+/ejfvz9cXFygUCiwadMmvXYhBGbOnAlnZ2dYWFggJCQEZ8+e1etz/fp1hIeHQ6VSwcbGBiNHjkRRUVEDHgURERE1ZgYNO7du3UK7du0QGxt73/b58+dj6dKlWLlyJVJSUmBlZYXQ0FAUFxdLfcLDw3H69Gns3LkTCQkJ2L9/P8aMGdNQh0BERESNnIkhd96nTx/06dPnvm1CCCxevBgzZszAgAEDAABffPEFnJycsGnTJrz66qvIzMzEtm3bkJqaio4dOwIAli1bhueffx4LFiyAi4tLgx0LERERNU6NdsxOdnY2dDodQkJCpGVqtRp+fn5ISkoCACQlJcHGxkYKOgAQEhICIyMjpKSkPHDbJSUlKCws1JuIiIhInhpt2NHpdAAAJycnveVOTk5Sm06ng6Ojo167iYkJ7OzspD73M3fuXKjVamlydXWt4+qJiIiosWi0Yac+RUdHo6CgQJouXbpk6JKIiIionjTasKPRaAAAubm5estzc3OlNo1Gg7y8PL32u3fv4vr161Kf+zEzM4NKpdKbiIiISJ4abdjx8PCARqPB7t27pWWFhYVISUmBVqsFAGi1WuTn5yMtLU3qs2fPHlRUVMDPz6/BayYiIqLGx6BPYxUVFeHcuXPSfHZ2No4fPw47Ozu0aNECUVFRmD17Ntq0aQMPDw/861//gouLCwYOHAgA8PLyQu/evTF69GisXLkSZWVlGD9+PF599VU+iUVEREQADBx2jhw5gm7duknzkyZNAgBEREQgPj4e7777Lm7duoUxY8YgPz8fgYGB2LZtG8zNzaV11q1bh/Hjx6NHjx4wMjJCWFgYli5d2uDHQkRERI2TQcNOcHAwhBAPbFcoFJg1axZmzZr1wD52dnZYv359fZRHREREMtBox+wQERER1QWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjWGHSIiIpI1hh0iIiKSNYYdIiIikjXZhJ3Y2Fi4u7vD3Nwcfn5+OHz4sKFLIiIiokZAFmHnm2++waRJk/D+++/j6NGjaNeuHUJDQ5GXl2fo0oiIiMjAZBF2Pv30U4wePRqvv/46vL29sXLlSlhaWmLt2rWGLo2IiIgMzMTQBTyu0tJSpKWlITo6WlpmZGSEkJAQJCUl3XedkpISlJSUSPMFBQUAgMLCwjqvr6Lkdp1v80lTqBCGLsGw6uG8qgmegzwHeQ4aHs/B+jkHK9+3hXj46/vEh53ff/8d5eXlcHJy0lvu5OSEX3755b7rzJ07Fx988EGV5a6urvVS49+d2tAFGNq8v/0rYHB/+58Az0GD+9v/BOr5HLx58ybU6gfv44kPO7URHR2NSZMmSfMVFRW4fv067O3toVAoDFiZ/BQWFsLV1RWXLl2CSqUydDn0N8RzkAyN52D9EULg5s2bcHFxeWi/Jz7sNG3aFMbGxsjNzdVbnpubC41Gc991zMzMYGZmprfMxsamvkokACqViv/JyaB4DpKh8RysHw+7olPpiR+gbGpqig4dOmD37t3SsoqKCuzevRtardaAlREREVFj8MRf2QGASZMmISIiAh07dkTnzp2xePFi3Lp1C6+//rqhSyMiIiIDk0XYGTx4MK5du4aZM2dCp9PB19cX27ZtqzJomRqemZkZ3n///Sq3DYkaCs9BMjSeg4anEI96XouIiIjoCfbEj9khIiIiehiGHSIiIpI1hh0iIiKSNYYdIiIikjWGHaoiJiYGvr6+hi6DiKhBubu7Y/HixYYug+oBww79bZSWlhq6hL89/gwerry8HBUVFYYug2SmrKzM0CUYHMOODAUHB2PChAl49913YWdnB41Gg5iYGKk9Pz8fo0aNgoODA1QqFbp3744TJ04AAOLj4/HBBx/gxIkTUCgUUCgUiI+Pf+Q+FQoFVqxYgT59+sDCwgItW7bE999/r9cnPT0d3bt3h4WFBezt7TFmzBgUFRUBAE6dOgUjIyNcu3YNAHD9+nUYGRnh1VdfldafPXs2AgMDpflTp06hT58+sLa2hpOTE4YNG4bff/9d73UYP348oqKi0LRpU4SGhtb4taSHu3nzJsLDw2FlZQVnZ2csWrQIwcHBiIqKAnDvL+UPP/wQw4cPh0qlwpgxYwAAP/zwA5555hmYmZnB3d0dCxcu1Nvu8uXL0aZNG5ibm8PJyQkvvfSS1Pb999/Dx8dHOo9CQkJw69atR9Y6YsQIDBw4EB988IF07o8dO1YvgJWUlGDChAlwdHSEubk5AgMDkZqaKrV37NgRCxYskOYHDhwIpVIpnce//fYbFAoFzp07J21v8uTJaNasGaysrODn54fExERp/fj4eNjY2OCnn36Ct7c3zMzMkJOTU81Xn2rqYedrcHAwLl68iIkTJ0q/+x6l8ue3adMm6XwNDQ3FpUuX9PqtWLECrVq1gqmpKZ5++mn897//ldomT56Mfv36SfOLFy+GQqHAtm3bpGWtW7fG6tWrpfnVq1fDy8sL5ubm8PT0xPLly6W2CxcuQKFQ4JtvvkFQUBDMzc2xbt26Wr1esiJIdoKCgoRKpRIxMTHizJkz4vPPPxcKhULs2LFDCCFESEiI6N+/v0hNTRVnzpwR77zzjrC3txd//PGHuH37tnjnnXfEM888I65evSquXr0qbt++/ch9AhD29vZi1apVIisrS8yYMUMYGxuLjIwMIYQQRUVFwtnZWQwaNEikp6eL3bt3Cw8PDxERESGEEKKiokI0bdpUfPfdd0IIITZt2iSaNm0qNBqNtI+QkBAxffp0IYQQN27cEA4ODiI6OlpkZmaKo0ePip49e4pu3brpvQ7W1tZiypQp4pdffhG//PJLnby+9P9GjRol3NzcxK5du0R6erp48cUXRZMmTcTbb78thBDCzc1NqFQqsWDBAnHu3Dlx7tw5ceTIEWFkZCRmzZolsrKyRFxcnLCwsBBxcXFCCCFSU1OFsbGxWL9+vbhw4YI4evSoWLJkiRBCiCtXrggTExPx6aefiuzsbHHy5EkRGxsrbt68+chaIyIihLW1tRg8eLA4deqUSEhIEA4ODmLatGlSnwkTJggXFxexZcsWcfr0aRERESFsbW3FH3/8IYQQYtKkSaJv375CiHvnrJ2dnWjatKnYunWrEEKIL7/8UjRr1kzv9enSpYvYv3+/OHfunPjkk0+EmZmZOHPmjBBCiLi4OKFUKkWXLl3EwYMHxS+//CJu3br1eD8UeqCHna9//PGHaN68uZg1a5b0u+9RKn9+HTt2FIcOHRJHjhwRnTt3Fl26dJH6bNiwQSiVShEbGyuysrLEwoULhbGxsdizZ48QQoiffvpJqNVqcffuXSGEEAMHDhRNmzYVU6dOFUII8dtvvwkA4uzZs0KIe+eYs7Oz+OGHH8Svv/4qfvjhB2FnZyfi4+OFEEJkZ2cLAMLd3V3qc+XKlTp9HZ9EDDsyFBQUJAIDA/WWderUSUydOlUcOHBAqFQqUVxcrNfeqlUr8dlnnwkhhHj//fdFu3btarRPAGLs2LF6y/z8/MS4ceOEEEL85z//Eba2tqKoqEhq37x5szAyMhI6nU4IIcSgQYNEZGSkEEKIqKgoMWXKFGFraysyMzNFaWmpsLS0lALbhx9+KHr16qW3v0uXLgkAIisrS3od2rdvX6PjoOorLCwUSqVSCqhCCJGfny8sLS31ws7AgQP11nvttddEz5499ZZNmTJFeHt7CyGE+OGHH4RKpRKFhYVV9pmWliYAiAsXLtS43oiICGFnZ6cXJlasWCGsra1FeXm5KCoqEkqlUqxbt05qLy0tFS4uLmL+/PlCCP03puPHjwuNRiPefvtt6Y1p1KhR4rXXXhNCCHHx4kVhbGwsLl++rFdHjx49RHR0tBDi3pslAHH8+PEaHw/VTHXP10WLFlV7m5U/v+TkZGlZZmamACBSUlKEEEJ06dJFjB49Wm+9l19+WTz//PNCiHt/uBkZGYnU1FQpQM+dO1f4+fkJIaoG6FatWon169frbe/DDz8UWq1WCPH/YWfx4sXVPo6/A97Gkqm2bdvqzTs7OyMvLw8nTpxAUVER7O3tYW1tLU3Z2dk4f/78Y+3zr1+8qtVqkZmZCQDIzMxEu3btYGVlJbUHBASgoqICWVlZAICgoCDpEv++ffvQvXt3dO3aFYmJiUhNTUVZWRkCAgIAACdOnMDevXv1jsHT0xMA9I6jQ4cOj3VM9GC//vorysrK0LlzZ2mZWq3G008/rdevY8eOevOZmZnSz7FSQEAAzp49i/LycvTs2RNubm5o2bIlhg0bhnXr1uH27dsAgHbt2qFHjx7w8fHByy+/jFWrVuHGjRvVrrldu3awtLSU5rVaLYqKinDp0iWcP39e7xwDAKVSic6dO0vn8T/+8Q/cvHkTx44dw759+xAUFITg4GC98zY4OBjAvdu25eXleOqpp/TO03379umdo6amplX+v1Ldq+75WlMmJibo1KmTNO/p6QkbGxu93333O98r221sbNCuXTskJiYiPT0dpqamGDNmDI4dO4aioiLpPAOAW7du4fz58xg5cqTeOTV79uwqv7//+v/u704W341FVSmVSr15hUKBiooKFBUVwdnZWW/cQCUbG5uGKe4BKu+dnz17FhkZGQgMDMQvv/yCxMRE3LhxAx07dpTeqIqKitC/f398/PHHVbbj7Ows/fvP4YoMo6Y/gyZNmuDo0aNITEzEjh07MHPmTMTExCA1NRU2NjbYuXMnDh06hB07dmDZsmWYPn06UlJS4OHhUU9H8P/+/MaUlJSEnj17omvXrhg8eDDOnDmDs2fPSm9MRUVFMDY2RlpaGoyNjfW2Y21tLf3bwsKiWuNDSL4qA7OZmRmCgoJgZ2cHLy8v/O9//8O+ffvwzjvvAIA0NmzVqlXw8/PT28ZfzzH+7tPHKzt/M8899xx0Oh1MTEzQunVrvalp06YA7v2lWV5eXuNtJycnV5n38vICAHh5eeHEiRN6A0kPHjwIIyMj6S8rHx8f2NraYvbs2fD19YW1tTWCg4Oxb98+JCYmSn8xVx7H6dOn4e7uXuU4+J+8YbRs2RJKpVJvAG9BQQHOnDnz0PW8vLxw8OBBvWUHDx7EU089Jf3CNjExQUhICObPn4+TJ0/iwoUL2LNnD4B7wT0gIAAffPABjh07BlNTU2zcuLFaNZ84cQJ37tyR5pOTk2FtbQ1XV1dpAOmfaysrK0Nqaiq8vb2lZUFBQdi7dy/279+P4OBg6Y3po48+grOzM5566ikAQPv27VFeXo68vLwq56hGo6lWvVR3qnO+1uZ33927d3HkyBFpPisrC/n5+Xq/++53vv/1nPrf//6H3bt3S7/ngoOD8dVXX+HMmTPSMicnJ7i4uODXX3+tck41RNh/ohn6PhrVvaCgIOkedKUBAwaIiIgIUVFRIQIDA0W7du3E9u3bRXZ2tjh48KCYNm2aSE1NFUIIsW7dOmFlZSWOHTsmrl27VmV8z/0AEE2bNhVr1qwRWVlZYubMmcLIyEicPn1aCCHErVu3hLOzswgLCxPp6eliz549omXLltIA5UoDBw4UxsbG0hiI8vJyYWtrK4yNjcW2bdukfpcvXxYODg7ipZdeEocPHxbnzp0T27ZtEyNGjJAG+t3vdaC6NWrUKOHh4SH27NkjTp06JcLCwkSTJk1EVFSUEOL+YyDS0tL0BijHx8frDVD++eefxZIlS8SxY8fEhQsXxPLly4WRkZE4deqUSE5OFh999JFITU0VFy9eFN9++60wNTUVW7ZseWStlQOUhwwZIk6fPi02b94snJycxHvvvSf1efvtt4WLi4vYunWr3gDl69evS302bdokjI2N9QbPv/3228LY2Fi8+uqrevsMDw/XGyiakpIi5syZIxISEoQQ98Z8qNXqmrzk9Bgedb727NlTvPDCC+K3334T165de+T2Kgcod+7cWSQnJ4sjR44If39/4e/vL/XZuHGjUCqVYvny5eLMmTPSAOW9e/dKfa5fvy6MjIyEsbGxyMzMlNYzNjYWzs7OevtctWqVsLCwEEuWLBFZWVni5MmTYu3atWLhwoVCiP8fs3Ps2LHHfLXkhWFHhh4WdoS4N1DvrbfeEi4uLkKpVApXV1cRHh4ucnJyhBBCFBcXi7CwMGFjYyMASG9CDwNAxMbGip49ewozMzPh7u4uvvnmG70+J0+eFN26dRPm5ubCzs5OjB49uspTNIsWLRIApKdbKms3MTGp0vfMmTPixRdfFDY2NsLCwkJ4enqKqKgoUVFR8cDXgepWYWGheO2114SlpaXQaDTi008/FZ07d5YCxIMGfH7//ffC29tbKJVK0aJFC/HJJ59IbQcOHBBBQUHC1tZWWFhYiLZt20rnUkZGhggNDRUODg7CzMxMPPXUU2LZsmXVqjUiIkIMGDBAzJw5U9jb2wtra2sxevRovTB/584d8dZbb4mmTZsKMzMzERAQIA4fPqy3nT/++EMoFAoxePBgadnGjRsFALFy5Uq9vqWlpWLmzJnC3d1dKJVK4ezsLF588UVx8uRJIQTDTkN71PmalJQk2rZtK8zMzER1rgVU/vx++OEH0bJlS2FmZiZCQkLExYsX9fotX75ctGzZUiiVSvHUU0+JL774osq22rVrpxegK8+zvwZoIe79Qerr6ytMTU2Fra2t6Nq1q9iwYYMQgmHnQRRCCGG460okFwqFAhs3bsTAgQMNXQoZ0K1bt9CsWTMsXLgQI0eONHQ5ekaMGIH8/Hxs2rTJ0KVQI/G452t8fDyioqKQn59f98VRneIAZSKqtWPHjuGXX35B586dUVBQgFmzZgEABgwYYODKiKri+fr3xbBDj7Ru3Tq8+eab921zc3PD6dOnG7giakwWLFiArKwsmJqaokOHDjhw4IA02L0h/fkJp7/aunVrA1ZCjVlNztc+ffrgwIED922bNm0aXFxc6rNUqkO8jUWPdPPmTeTm5t63TalUws3NrYErIqqq8isa7qdZs2awsLBowGpIDi5fvqz39N6f2dnZwc7OroErotpi2CEiIiJZ4+fsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGs/R8sVPMaSvX2DQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from matplotlib import pyplot as plt\n", + "\n", + "\n", + "variables = [\"net_power\", \"gross_power\", \"gt_power\"]\n", + "netl_baseline = [646, 690, 477]\n", + "idaes_prediction = [\n", + " pyo.value(m.fs.net_power_mw[0]),\n", + " -pyo.value(m.fs.gross_power[0]) * 1e-6,\n", + " -pyo.value(m.fs.gt.gt_power[0]) * 1e-6,\n", + "]\n", + "\n", + "label_location = np.arange(len(variables))\n", + "\n", + "width = 0.4\n", + "\n", + "fig, ax = plt.subplots()\n", + "netl_data = ax.bar(variables, netl_baseline, label=\"NETL Baseline\")\n", + "idaes_sim = ax.bar(\n", + " label_location + (width / 2), idaes_prediction, width, label=\"IDAES Prediction\"\n", + ")\n", + "\n", + "ax.set_ylabel(\"Power (MW)\")\n", + "ax.set_xticks(label_location)\n", + "ax.set_xticklabels(variables)\n", + "ax.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Run turndown cases 5 MW interval\n", + "\n", + "Here we set the CO2 capture rate to 97% and set the specific reboiler duty to PZ advanced solvent system. The minimum power is 160 MW net, which corresponds to a bit under 25%. This is roughly the minimum load for the NGCC modeled. Results are tabulated for tags in the tags_output tag group in a Pandas data frame. \n", + "\n", + "To run the series, change run_series to True. Running the turndown series takes a while, unless previous saved results are available. " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "run_series = False\n", + "if run_series:\n", + " idaes.cfg.ipopt.options.tol = 1e-6\n", + " idaes.cfg.ipopt.options.max_iter = 50\n", + " solver = pyo.SolverFactory(\"ipopt\")\n", + "\n", + " m.fs.cap_specific_reboiler_duty.fix(2.4e6)\n", + " m.fs.cap_fraction.fix(0.97)\n", + " powers = np.linspace(650, 160, int((650 - 160) / 5) + 1)\n", + " powers = list(powers)\n", + " powers.insert(1, 646)\n", + "\n", + " df = pd.DataFrame(columns=m.fs.tags_output.table_heading())\n", + "\n", + " for p in powers:\n", + " print(\"Simulation for net power = \", p)\n", + " fname = f\"data/ngcc_{int(p)}.json.gz\"\n", + " if os.path.exists(fname):\n", + " iutil.from_json(m, fname=fname, wts=iutil.StoreSpec(suffix=False))\n", + " else:\n", + " m.fs.net_power_mw.fix(p)\n", + " res = solver.solve(m, tee=False, symbolic_solver_labels=True)\n", + " if not pyo.check_optimal_termination(res):\n", + " break\n", + " iutil.to_json(m, fname=fname)\n", + " df.loc[m.fs.tags_output[\"net_power\"].value] = m.fs.tags_output.table_row(\n", + " numeric=True\n", + " )\n", + " if abs(p - 650) < 0.1:\n", + " m.fs.gt.streams_dataframe().to_csv(\n", + " \"data_tabulated/ngcc_stream_650mw_gt.csv\"\n", + " )\n", + " m.fs.st.steam_streams_dataframe().to_csv(\n", + " \"data_tabulated/ngcc_stream_650mw_st.csv\"\n", + " )\n", + " m.fs.hrsg.steam_streams_dataframe().to_csv(\n", + " \"data_tabulated/ngcc_stream_650mw_hrsg_steam.csv\"\n", + " )\n", + " m.fs.hrsg.flue_gas_streams_dataframe().to_csv(\n", + " \"data_tabulated/ngcc_stream_650mw_hrsg_gas.csv\"\n", + " )\n", + " df.to_csv(\"data_tabulated/ngcc.csv\")\n", + "\n", + " # Display the results from the run stored in a pandas dataframe\n", + " pd.set_option(\"display.max_rows\", None)\n", + " pd.set_option(\"display.max_columns\", None)\n", + " display(df)\n", + "\n", + " # Plot results\n", + " plt.plot(df[\"net_power (MW)\"], df[\"lhv_efficiency (%)\"])\n", + " plt.grid()\n", + " plt.xlabel(\"Net Power (MW)\")\n", + " plt.ylabel(\"LHV Efficiency (%)\")\n", + " plt.title(\"Net Power vs. Efficiency\")\n", + " plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 3 +} diff --git a/idaes_examples/notebooks/docs/power_gen/ngcc/ngcc_usr.ipynb b/idaes_examples/notebooks/docs/power_gen/ngcc/ngcc_usr.ipynb new file mode 100644 index 00000000..4f2059d4 --- /dev/null +++ b/idaes_examples/notebooks/docs/power_gen/ngcc/ngcc_usr.ipynb @@ -0,0 +1,2964 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "header", + "hide-cell" + ] + }, + "outputs": [], + "source": [ + "###############################################################################\n", + "# The Institute for the Design of Advanced Energy Systems Integrated Platform\n", + "# Framework (IDAES IP) was produced under the DOE Institute for the\n", + "# Design of Advanced Energy Systems (IDAES).\n", + "#\n", + "# Copyright (c) 2018-2023 by the software owners: The Regents of the\n", + "# University of California, through Lawrence Berkeley National Laboratory,\n", + "# National Technology & Engineering Solutions of Sandia, LLC, Carnegie Mellon\n", + "# University, West Virginia University Research Corporation, et al.\n", + "# All rights reserved. Please see the files COPYRIGHT.md and LICENSE.md\n", + "# for full copyright and license information.\n", + "###############################################################################" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# NGCC Baseline and Turndown\n", + "Maintainer: Javal Vyas \n", + "Author: John Eslick \n", + "Updated: 2024-07-25 \n", + "\n", + "This notebook runs a series of net electric power outputs from 650 MW to 160 MW (about 100% to 25%) for an NGCC with 97% CO2 capture. The NGCC model is based on the NETL report \"Cost and Performance Baseline for Fossil Energy Plants Volume 1, Bituminous Coal and Natural Gas to Electricity.\" Sept 2019, Case B31B [resource](https://www.osti.gov/servlets/purl/1893822). Another valuable resource for gaining a deeper understanding of the mathematical model would be the publication referenced [here](https://www.sciencedirect.com/science/article/pii/S1750583617302414). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports\n", + "\n", + "Import the modules that will be used." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import numpy as np\n", + "import pandas as pd\n", + "from IPython.core.display import SVG\n", + "import pyomo.environ as pyo\n", + "import idaes\n", + "from idaes.core.solvers import use_idaes_solver_configuration_defaults\n", + "import idaes.core.util.scaling as iscale\n", + "import idaes.core.util as iutil\n", + "from idaes_examples.mod.power_gen import ngcc\n", + "import idaes.logger as idaeslog\n", + "import pytest\n", + "import logging\n", + "\n", + "logging.getLogger(\"pyomo\").setLevel(logging.ERROR)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Make Output Directories\n", + "\n", + "This notebook can produce a large number of output files. To make it easier to manage, some subdirectories are used to organize output. This ensures that the directories exist." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def make_directory(path):\n", + " \"\"\"Make a directory if it doesn't exist\"\"\"\n", + " try:\n", + " os.mkdir(path)\n", + " except FileExistsError:\n", + " pass\n", + "\n", + "\n", + "make_directory(\"data\")\n", + "make_directory(\"data_pfds\")\n", + "make_directory(\"data_tabulated\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Global Solver Settings\n", + "\n", + "Use the IDAES configuration system for solver settings. These will apply to all Ipopt instances created, including the ones created in initialization methods." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "use_idaes_solver_configuration_defaults()\n", + "idaes.cfg.ipopt.options.nlp_scaling_method = \"user-scaling\"\n", + "idaes.cfg.ipopt.options.linear_solver = \"ma57\"\n", + "idaes.cfg.ipopt.options.OF_ma57_automatic_scaling = \"yes\"\n", + "idaes.cfg.ipopt.options.ma57_pivtol = 1e-5\n", + "idaes.cfg.ipopt.options.ma57_pivtolmax = 0.1\n", + "solver = pyo.SolverFactory(\"ipopt\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create the NGCC model\n", + "\n", + "Create the NGCC model and initialize it or read the saved initialization if available. The base initialized NGCC model is configured to match the baseline report with 90% capture using a Cansolv system." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-07-25 03:12:25 [INFO] idaes.init.fs: NGCC load initial from ngcc_init.json.gz\n", + "Ipopt 3.13.2: nlp_scaling_method=user-scaling\n", + "tol=1e-06\n", + "max_iter=200\n", + "linear_solver=ma57\n", + "ma57_pivtol=1e-05\n", + "ma57_pivtolmax=0.1\n", + "option_file_name=C:\\Users\\javal\\AppData\\Local\\Temp\\tmpa9m4gkwo_ipopt.opt\n", + "\n", + "Using option file \"C:\\Users\\javal\\AppData\\Local\\Temp\\tmpa9m4gkwo_ipopt.opt\".\n", + "\n", + "\n", + "******************************************************************************\n", + "This program contains Ipopt, a library for large-scale nonlinear optimization.\n", + " Ipopt is released as open source code under the Eclipse Public License (EPL).\n", + " For more information visit http://projects.coin-or.org/Ipopt\n", + "\n", + "This version of Ipopt was compiled from source code available at\n", + " https://github.com/IDAES/Ipopt as part of the Institute for the Design of\n", + " Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE\n", + " Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.\n", + "\n", + "This version of Ipopt was compiled using HSL, a collection of Fortran codes\n", + " for large-scale scientific computation. All technical papers, sales and\n", + " publicity material resulting from use of the HSL codes within IPOPT must\n", + " contain the following acknowledgement:\n", + " HSL, a collection of Fortran codes for large-scale scientific\n", + " computation. See http://www.hsl.rl.ac.uk.\n", + "******************************************************************************\n", + "\n", + "This is Ipopt version 3.13.2, running with linear solver ma57.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 7661\n", + "Number of nonzeros in inequality constraint Jacobian.: 0\n", + "Number of nonzeros in Lagrangian Hessian.............: 5948\n", + "\n", + "Total number of variables............................: 2404\n", + " variables with only lower bounds: 87\n", + " variables with lower and upper bounds: 1447\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 2404\n", + "Total number of inequality constraints...............: 0\n", + " inequality constraints with only lower bounds: 0\n", + " inequality constraints with lower and upper bounds: 0\n", + " inequality constraints with only upper bounds: 0\n", + "\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 0 0.0000000e+00 3.50e+01 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + "Reallocating memory for MA57: lfact (111709)\n", + " 1 0.0000000e+00 3.49e-01 1.12e+04 -1.0 3.06e+03 - 9.90e-01 9.90e-01h 1\n", + " 2 0.0000000e+00 3.15e-03 5.15e+02 -1.0 3.02e+03 - 9.89e-01 9.91e-01h 1\n", + " 3 0.0000000e+00 2.95e-07 9.98e+02 -1.0 3.74e+01 - 9.90e-01 1.00e+00h 1\n", + "\n", + "Number of Iterations....: 3\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Dual infeasibility......: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Constraint violation....: 2.9462398742907681e-07 2.9462398742907681e-07\n", + "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Overall NLP error.......: 2.9462398742907681e-07 2.9462398742907681e-07\n", + "\n", + "\n", + "Number of objective function evaluations = 4\n", + "Number of objective gradient evaluations = 4\n", + "Number of equality constraint evaluations = 4\n", + "Number of inequality constraint evaluations = 0\n", + "Number of equality constraint Jacobian evaluations = 4\n", + "Number of inequality constraint Jacobian evaluations = 0\n", + "Number of Lagrangian Hessian evaluations = 3\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.085\n", + "Total CPU secs in NLP function evaluations = 1.396\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + } + ], + "source": [ + "m = pyo.ConcreteModel()\n", + "m.fs = ngcc.NgccFlowsheet(dynamic=False)\n", + "iscale.calculate_scaling_factors(m)\n", + "m.fs.initialize(\n", + " load_from='ngcc_init.json.gz',\n", + " save_to='ngcc_init.json.gz',\n", + " outlvl=idaeslog.INFO_HIGH,\n", + ")\n", + "res = solver.solve(m, tee=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Show PFDs with baseline results\n", + "\n", + "This displays PFDs in the notebook, and saves them to files. The full NGCC model is too big to show well in a single PFD, so it is broken into the three main sections, gas turbine, heat recovery steam generator (HRSG), and steam turbine." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Gas Turbine Section\n", + "\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " image/svg+xml\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " cmp1\n", + " cmb1\n", + " gts1\n", + " inject1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " gts2\n", + " \n", + " \n", + " gts3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " splt1\n", + " mx1\n", + " mx2\n", + " mx3\n", + " Blade Cooling Air\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " NGPreheater\n", + " \n", + " To HRSG\n", + " \n", + " \n", + " \n", + " \n", + " air01\n", + " \n", + " \n", + " air03\n", + " \n", + " \n", + " air02\n", + " \n", + " \n", + " air04\n", + " \n", + " \n", + " fuel01\n", + " \n", + " \n", + " fuel02\n", + " \n", + " \n", + " \n", + " \n", + " st02\n", + " st01\n", + " \n", + " \n", + " air05\n", + " \n", + " \n", + " air06\n", + " \n", + " \n", + " g02\n", + " \n", + " \n", + " g01\n", + " \n", + " \n", + " air09\n", + " \n", + " \n", + " air10\n", + " \n", + " \n", + " air07\n", + " \n", + " \n", + " g03\n", + " \n", + " \n", + " g04\n", + " \n", + " \n", + " g05\n", + " \n", + " \n", + " g06\n", + " \n", + " \n", + " g07\n", + " \n", + " \n", + " g08\n", + " \n", + " \n", + " air08\n", + " \n", + " \n", + " Summary\n", + " total GT power:\n", + " 476.99 MW\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " air01\n", + " \n", + " \n", + " \n", + " air02\n", + " \n", + " \n", + " \n", + " air03\n", + " \n", + " \n", + " \n", + " air04\n", + " \n", + " \n", + " \n", + " fuel01\n", + " \n", + " \n", + " \n", + " fuel02\n", + " \n", + " \n", + " feed_air1\n", + " \n", + " \n", + " st02\n", + " \n", + " \n", + " \n", + " st01\n", + " \n", + " \n", + " \n", + " air05\n", + " \n", + " \n", + " \n", + " air06\n", + " \n", + " \n", + " exhaust_1\n", + " \n", + " \n", + " g01\n", + " \n", + " \n", + " \n", + " g02\n", + " \n", + " \n", + " \n", + " air09\n", + " \n", + " \n", + " \n", + " air10\n", + " \n", + " \n", + " \n", + " air07\n", + " \n", + " \n", + " \n", + " g03\n", + " \n", + " \n", + " \n", + " g04\n", + " \n", + " \n", + " \n", + " g05\n", + " \n", + " \n", + " \n", + " g07\n", + " \n", + " \n", + " \n", + " g06\n", + " \n", + " \n", + " \n", + " g08\n", + " \n", + " \n", + " \n", + " air08\n", + " \n", + " \n", + " \n", + " \n", + " 299.82 K\n", + " 25.946 kg/s\n", + " 31.026 bar\n", + " 1.000%\n", + " 93.100%\n", + " 0.000%\n", + " 1.600%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yCH4:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " 3.200%\n", + " yC2H6:\n", + " 0.700%\n", + " yC3H8:\n", + " 0.400%\n", + " yC4H10:\n", + " \n", + " \n", + " \n", + " 335.99 K\n", + " 18.526 kg/s\n", + " 43.355 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 457.27 K\n", + " 18.526 kg/s\n", + " 43.355 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " NG PreharerUses Hot WaterFrom HRSG\n", + " \n", + " \n", + " 448.75 K\n", + " 25.946 kg/s\n", + " 31.026 bar\n", + " 1.000%\n", + " 93.100%\n", + " 0.000%\n", + " 1.600%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yCH4:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " 3.200%\n", + " yC2H6:\n", + " 0.700%\n", + " yC3H8:\n", + " 0.400%\n", + " yC4H10:\n", + " \n", + " \n", + " power:\n", + " 481.28 MW\n", + " \n", + " \n", + " isentr. efficiency:\n", + " 84.02%\n", + " isentr. head:\n", + " 367.27 kJ/kg\n", + " inlet vol. flow:\n", + " 883.2 m**3/s\n", + " \n", + " 288.15 K\n", + " 1100.984 kg/s\n", + " 1.034 bar\n", + " 0.030%\n", + " 0.990%\n", + " 0.920%\n", + " 20.740%\n", + " 77.320%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 288.17 K\n", + " 1100.984 kg/s\n", + " 1.099 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 709.64 K\n", + " 1100.984 kg/s\n", + " 19.226 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 709.64 K\n", + " 1008.614 kg/s\n", + " 19.226 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 691.89 K\n", + " 1034.561 kg/s\n", + " 19.226 bar\n", + " 0.070%\n", + " 3.842%\n", + " 19.884%\n", + " 74.195%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yCH4:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " 0.132%\n", + " yC2H6:\n", + " 0.029%\n", + " yC3H8:\n", + " 0.017%\n", + " yC4H10:\n", + " \n", + " \n", + " \n", + " 1641.38 K\n", + " 1034.691 kg/s\n", + " 18.265 bar\n", + " 4.324%\n", + " 9.217%\n", + " 0.000%\n", + " 11.471%\n", + " 74.106%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yCH4:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " 0.000%\n", + " yC2H6:\n", + " 0.000%\n", + " yC3H8:\n", + " 0.000%\n", + " yC4H10:\n", + " 0.881%\n", + " yAr:\n", + " \n", + " \n", + " \n", + " power:\n", + " -374.58 MW\n", + " \n", + " \n", + " isentr. efficiency:\n", + " 88.53%\n", + " isentr. head:\n", + " -408.95 kJ/kg\n", + " inlet vol. flow:\n", + " 273.6 m**3/s\n", + " \n", + " \n", + " \n", + " 898.00 K\n", + " 1127.060 kg/s\n", + " 1.100 bar\n", + " 3.978%\n", + " 8.554%\n", + " 0.884%\n", + " 12.219%\n", + " 74.365%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " 899.61 K\n", + " 1116.809 kg/s\n", + " 1.100 bar\n", + " 4.014%\n", + " 8.622%\n", + " 0.884%\n", + " 12.142%\n", + " 74.339%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1094.58 K\n", + " 1116.809 kg/s\n", + " 2.799 bar\n", + " 4.014%\n", + " 8.622%\n", + " 0.884%\n", + " 12.142%\n", + " 74.339%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 709.76 K\n", + " 14.769 kg/s\n", + " 2.799 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1099.28 K\n", + " 1102.041 kg/s\n", + " 2.799 bar\n", + " 4.066%\n", + " 8.723%\n", + " 0.883%\n", + " 12.028%\n", + " 74.299%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1329.41 K\n", + " 1102.041 kg/s\n", + " 7.137 bar\n", + " 4.066%\n", + " 8.723%\n", + " 0.883%\n", + " 12.028%\n", + " 74.299%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 1365.44 K\n", + " 1034.691 kg/s\n", + " 7.137 bar\n", + " 4.324%\n", + " 9.217%\n", + " 0.881%\n", + " 11.471%\n", + " 74.106%\n", + " T:\n", + " F:\n", + " P:\n", + " yCO2:\n", + " yH2O:\n", + " yAr:\n", + " yO2:\n", + " yN2:\n", + " \n", + " \n", + " \n", + " \n", + " power:\n", + " -264.25 MW\n", + " \n", + " \n", + " isentr. efficiency:\n", + " 88.19%\n", + " isentr. head:\n", + " -268.31 kJ/kg\n", + " inlet vol. flow:\n", + " 1280.2 m**3/s\n", + " \n", + " \n", + " \n", + " 709.77 K\n", + " 10.250 kg/s\n", + " 1.100 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 85.0%\n", + " opening:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 85.0%\n", + " opening:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 85.0%\n", + " opening:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 709.73 K\n", + " 67.350 kg/s\n", + " 7.137 bar\n", + " T:\n", + " F:\n", + " P:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " power:\n", + " -319.43 MW\n", + " \n", + " \n", + " isentr. efficiency:\n", + " 88.35%\n", + " isentr. head:\n", + " -328.07 kJ/kg\n", + " inlet vol. flow:\n", + " 602.3 m**3/s\n", + " \n", + " \n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "HRSG Section\n", + "\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " image/svg+xml\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " IPSH1\n", + " IPSH2\n", + " IPSH3\n", + " HPSH3\n", + " HPSH2\n", + " HPSH1\n", + " HPEVAP\n", + " HPECON5\n", + " LPECON\n", + " LPEVAP\n", + " LPDRUM\n", + " HPSH4\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " HPECON4\n", + " HPECON3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " LPSH1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " Gas Turbine Exhaust\n", + " HP Steam\n", + " IP Steam\n", + " \n", + " Feedwater\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " HPECON1\n", + " \n", + " \n", + " \n", + " \n", + " HPECON2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " IPECON1\n", + " IPECON2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " IPEVAP\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " Cold Reheat\n", + " \n", + " \n", + " \n", + " \n", + " From HP ECON2\n", + " To HP ECON3\n", + " \n", + " \n", + " LP Steam\n", + " \n", + " \n", + " \n", + " Mixer1\n", + " \n", + " LP_FGsplit\n", + " \n", + " \n", + " \n", + " \n", + " LP_Mixer2\n", + " IPPump\n", + " HPPump\n", + " IP_Mixer1\n", + " IP_Splitter2\n", + " To Ejector\n", + " To Reclaimer\n", + " To Dryer\n", + " To NG Preheater\n", + " From NG Preheater\n", + " To Stack or Capture\n", + " IP_Splitter1\n", + " Splitter1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " SOEC Makeup\n", + " \n", + " \n", + " \n", + " \n", + " lp01\n", + " \n", + " \n", + " \n", + " lp02\n", + " \n", + " \n", + " \n", + " lp03\n", + " \n", + " \n", + " \n", + " lp04\n", + " \n", + " \n", + " \n", + " lp12\n", + " \n", + " \n", + " \n", + " lp05\n", + " \n", + " \n", + " \n", + " lp13\n", + " \n", + " \n", + " \n", + " g30\n", + " \n", + " \n", + " \n", + " g19\n", + " \n", + " \n", + " \n", + " hp03\n", + " \n", + " \n", + " \n", + " hp04\n", + " \n", + " \n", + " \n", + " hp05\n", + " \n", + " \n", + " \n", + " g18\n", + " \n", + " \n", + " \n", + " hp06\n", + " \n", + " \n", + " \n", + " hp06b\n", + " \n", + " \n", + " \n", + " g15\n", + " \n", + " \n", + " \n", + " ip06\n", + " \n", + " \n", + " \n", + " g14\n", + " \n", + " \n", + " \n", + " g17\n", + " \n", + " \n", + " \n", + " g16\n", + " \n", + " \n", + " \n", + " hp07\n", + " \n", + " \n", + " \n", + " hp08\n", + " \n", + " \n", + " \n", + " hp09\n", + " \n", + " \n", + " \n", + " hp10\n", + " \n", + " \n", + " \n", + " hp11\n", + " \n", + " \n", + " \n", + " g13\n", + " \n", + " \n", + " \n", + " g12\n", + " \n", + " \n", + " \n", + " g11\n", + " \n", + " \n", + " \n", + " g08\n", + " \n", + " \n", + " \n", + " g09\n", + " \n", + " \n", + " \n", + " ip10\n", + " \n", + " \n", + " \n", + " ip09\n", + " \n", + " \n", + " \n", + " ip08\n", + " \n", + " \n", + " \n", + " ip07\n", + " \n", + " \n", + " \n", + " g10\n", + " \n", + " \n", + " \n", + " g28\n", + " \n", + " \n", + " \n", + " ip11\n", + " \n", + " \n", + " \n", + " ip012\n", + " \n", + " \n", + " \n", + " ip013\n", + " \n", + " \n", + " \n", + " ip14\n", + " \n", + " \n", + " \n", + " ip015\n", + " \n", + " \n", + " \n", + " lp09\n", + " \n", + " \n", + " \n", + " lp08\n", + " \n", + " \n", + " \n", + " lp06\n", + " \n", + " \n", + " \n", + " hp01\n", + " \n", + " \n", + " \n", + " hp02\n", + " \n", + " \n", + " \n", + " hp03\n", + " \n", + " \n", + " \n", + " ip01\n", + " \n", + " \n", + " \n", + " ip02\n", + " \n", + " \n", + " \n", + " ip03\n", + " \n", + " \n", + " \n", + " g25\n", + " \n", + " \n", + " \n", + " g26\n", + " \n", + " \n", + " \n", + " g27\n", + " \n", + " \n", + " \n", + " ip05\n", + " \n", + " \n", + " \n", + " ip04\n", + " \n", + " \n", + " \n", + " g24\n", + " \n", + " \n", + " \n", + " g23\n", + " \n", + " \n", + " \n", + " g29\n", + " \n", + " \n", + " \n", + " lp10\n", + " \n", + " \n", + " \n", + " lp11\n", + " \n", + " \n", + " \n", + " g21\n", + " \n", + " \n", + " \n", + " g20\n", + " \n", + " \n", + " \n", + " g22\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " lp01\n", + " \n", + " \n", + " lp02\n", + " \n", + " \n", + " lp03\n", + " \n", + " \n", + " lp04\n", + " \n", + " \n", + " lp12\n", + " \n", + " \n", + " \n", + " lp05\n", + " \n", + " lp13\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " g30\n", + " \n", + " g29\n", + " g28\n", + " \n", + " \n", + " ip11\n", + " \n", + " ip06\n", + " g17\n", + " \n", + " \n", + " g16\n", + " g15\n", + " \n", + " \n", + " g14\n", + " hp07\n", + " \n", + " \n", + " hp08\n", + " hp06b\n", + " \n", + " hp06\n", + " \n", + " g19\n", + " \n", + " hp03\n", + " \n", + " g18\n", + " hp04\n", + " hp05\n", + " hp09\n", + " hp10\n", + " hp11\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " g12\n", + " g13\n", + " g11\n", + " g08\n", + " g09\n", + " ip08\n", + " ip09\n", + " ip10\n", + " ip07\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " g10\n", + " \n", + " ip14\n", + " ip13\n", + " ip12\n", + " ip15\n", + " \n", + " \n", + " \n", + " \n", + " ip06\n", + " \n", + " ip08\n", + " ip09\n", + " \n", + " \n", + " \n", + " hp01\n", + " hp02\n", + " hp03\n", + " \n", + " \n", + " \n", + " g27\n", + " g26\n", + " ip02\n", + " ip01\n", + " ip03\n", + " \n", + " \n", + " \n", + " \n", + " g25\n", + " \n", + " g24\n", + " \n", + " ip05\n", + " \n", + " ip04\n", + " \n", + " g23\n", + " \n", + " \n", + " g22\n", + " \n", + " lp11\n", + " lp10\n", + " g21\n", + " g20\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 382.51 K\n", + " 1.010 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 180.904 kg/s\n", + " 356.59 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 410.40 K\n", + " 1.010 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 0.000 kg/s\n", + " 443.56 K\n", + " 8.000 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 18.526 kg/s\n", + " 335.99 K\n", + " 43.355 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 199.430 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 22.669 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 199.430 kg/s\n", + " 394.15 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 556.520 kg/s\n", + " 547.38 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 199.430 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 180.904 kg/s\n", + " 399.98 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 40.345 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 40.345 kg/s\n", + " 436.13 K\n", + " 43.850 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 40.345 kg/s\n", + " 457.27 K\n", + " 43.355 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 22.669 kg/s\n", + " 557.10 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 556.520 kg/s\n", + " 557.25 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 556.520 kg/s\n", + " 557.25 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 552.32 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 21.818 kg/s\n", + " 510.22 K\n", + " 42.352 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 176.761 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 18.526 kg/s\n", + " 457.27 K\n", + " 43.355 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 435.43 K\n", + " 6.550 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 479.13 K\n", + " 1.010 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 439.77 K\n", + " 244.000 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 21.818 kg/s\n", + " 457.27 K\n", + " 43.355 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 520.59 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 516.28 K\n", + " 1.012 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 514.35 K\n", + " 1.011 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 511.29 K\n", + " 1.010 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 504.84 K\n", + " 243.913 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 508.62 K\n", + " 243.829 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 157.430 kg/s\n", + " 855.94 K\n", + " 30.909 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 157.430 kg/s\n", + " 710.16 K\n", + " 33.408 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 157.430 kg/s\n", + " 600.93 K\n", + " 34.177 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 21.818 kg/s\n", + " 556.91 K\n", + " 42.146 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 135.612 kg/s\n", + " 610.47 K\n", + " 34.177 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 21.818 kg/s\n", + " 527.32 K\n", + " 42.352 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 610.47 K\n", + " 34.177 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 858.53 K\n", + " 172.428 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 898.00 K\n", + " 1.100 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 880.11 K\n", + " 1.098 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 735.19 K\n", + " 173.171 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 796.53 K\n", + " 172.830 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 786.52 K\n", + " 1.092 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 576.08 K\n", + " 1.047 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 577.92 K\n", + " 1.081 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 755.13 K\n", + " 1.083 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 840.55 K\n", + " 1.096 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 557.25 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:\n", + " 1113.040 kg/s\n", + " 568.07 K\n", + " 1.046 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 529.72 K\n", + " 243.746 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 544.93 K\n", + " 243.667 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 557.78 K\n", + " 243.589 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 627.24 K\n", + " 173.589 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 659.11 K\n", + " 173.415 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 584.88 K\n", + " 1.081 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 723.83 K\n", + " 1.081 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " F:T:P:x:\n", + " 136.416 kg/s\n", + " 557.34 K\n", + " 173.589 bar\n", + " ?\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " T:P:\n", + " 820.55 K\n", + " 1.094 bar\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Steam Turbine Section\n", + "\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " image/svg+xml\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " HRSG\n", + " Cold Flue Gas\n", + " Gas Turbine Exhaust\n", + " Makeup Water\n", + " HP\n", + " IP\n", + " LP\n", + " Condensate Pump\n", + " Condenser\n", + " \n", + " \n", + " Cold Reheat\n", + " Hot Reheat\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " From Dryer\n", + " From Reclaimer\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " To Reclaimer\n", + " To Dryer\n", + " To Ejector\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " From NG Preheater\n", + " To NG Preheater\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " CaptureReboiler\n", + " \n", + " \n", + " \n", + " \n", + " To SOEC\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " t01\n", + " \n", + " \n", + " \n", + " t02\n", + " \n", + " \n", + " \n", + " t11\n", + " \n", + " \n", + " \n", + " t15\n", + " \n", + " \n", + " \n", + " t14\n", + " \n", + " \n", + " \n", + " t13\n", + " \n", + " \n", + " \n", + " t10\n", + " \n", + " \n", + " \n", + " t09\n", + " \n", + " \n", + " \n", + " t13\n", + " \n", + " \n", + " \n", + " t04\n", + " \n", + " \n", + " \n", + " t05\n", + " \n", + " \n", + " \n", + " t03\n", + " \n", + " \n", + " \n", + " t06\n", + " \n", + " \n", + " \n", + " t07\n", + " \n", + " \n", + " \n", + " t08\n", + " \n", + " \n", + " \n", + " t12\n", + " \n", + " \n", + " \n", + " cw01\n", + " \n", + " \n", + " \n", + " cw02\n", + " \n", + " \n", + " \n", + " t18\n", + " \n", + " \n", + " \n", + " t17\n", + " \n", + " \n", + " \n", + " t16\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " t01\n", + " \n", + " t02\n", + " \n", + " \n", + " t11\n", + " \n", + " \n", + " t15\n", + " \n", + " \n", + " t14\n", + " \n", + " \n", + " t10\n", + " \n", + " \n", + " t09\n", + " \n", + " \n", + " t13\n", + " \n", + " \n", + " t04\n", + " \n", + " \n", + " t05\n", + " \n", + " \n", + " t08\n", + " \n", + " \n", + " t12\n", + " \n", + " \n", + " cw01\n", + " \n", + " \n", + " cw02\n", + " \n", + " \n", + " t16\n", + " \n", + " \n", + " t18\n", + " \n", + " \n", + " t17\n", + " \n", + " t03\n", + " \n", + " t06\n", + " \n", + " t07\n", + " \n", + " \n", + " \n", + " 136.416 kg/s\n", + " 858.53 K\n", + " 172.428 bar\n", + " 63.487 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 157.430 kg/s\n", + " 855.94 K\n", + " 30.909 bar\n", + " 65.630 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 0.806 kg/s\n", + " 306.25 K\n", + " 1.013 bar\n", + " 2.500 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 3603.054 kg/s\n", + " 289.70 K\n", + " 5.000 bar\n", + " 1.260 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 111.286 kg/s\n", + " 316.88 K\n", + " 0.090 bar\n", + " 45.114 kJ/mol\n", + " 0.968\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 22.669 kg/s\n", + " 557.10 K\n", + " 6.550 bar\n", + " 54.533 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 0.002 kg/s\n", + " 577.72 K\n", + " 4.592 bar\n", + " 55.397 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 68.812 kg/s\n", + " 577.72 K\n", + " 4.592 bar\n", + " 55.397 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 157.430 kg/s\n", + " 581.07 K\n", + " 4.592 bar\n", + " 55.522 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 136.416 kg/s\n", + " 610.47 K\n", + " 34.177 bar\n", + " 55.412 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 111.286 kg/s\n", + " 577.72 K\n", + " 4.592 bar\n", + " 55.397 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " 180.904 kg/s\n", + " 356.59 K\n", + " 6.550 bar\n", + " 6.304 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 0.001 kg/s\n", + " 487.00 K\n", + " 20.000 bar\n", + " 50.496 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 0.000 kg/s\n", + " 476.00 K\n", + " 16.000 bar\n", + " 50.393 kJ/mol\n", + " 1.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 111.286 kg/s\n", + " 316.88 K\n", + " 0.090 bar\n", + " 3.299 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " 3603.054 kg/s\n", + " 306.85 K\n", + " 5.000 bar\n", + " 2.552 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 68.812 kg/s\n", + " 420.51 K\n", + " 4.592 bar\n", + " 11.184 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 112.092 kg/s\n", + " 316.80 K\n", + " 0.090 bar\n", + " 3.293 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + " \n", + " 112.092 kg/s\n", + " 316.86 K\n", + " 6.550 bar\n", + " 3.308 kJ/mol\n", + " 0.000\n", + " \n", + " \n", + " F:T:P:H:X:\n", + " \n", + " \n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def display_pfd():\n", + " print(\"\\n\\nGas Turbine Section\\n\")\n", + " display(SVG(m.fs.gt.write_pfd()))\n", + " print(\"\\n\\nHRSG Section\\n\")\n", + " display(SVG(m.fs.hrsg.write_pfd()))\n", + " print(\"\\n\\nSteam Turbine Section\\n\")\n", + " display(SVG(m.fs.st.write_pfd()))\n", + "\n", + "\n", + "display_pfd()\n", + "\n", + "m.fs.gt.write_pfd(fname=\"data_pfds/gt_baseline.svg\")\n", + "m.fs.hrsg.write_pfd(fname=\"data_pfds/hrsg_baseline.svg\")\n", + "m.fs.st.write_pfd(fname=\"data_pfds/st_baseline.svg\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test key model outputs against NETL baseline" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Assert results approximately agree with baseline reoprt\n", + "assert pyo.value(m.fs.net_power_mw[0]) == pytest.approx(646)\n", + "assert pyo.value(m.fs.gross_power[0]) == pytest.approx(-690e6, rel=0.001)\n", + "assert pyo.value(100 * m.fs.lhv_efficiency[0]) == pytest.approx(52.8, abs=0.1)\n", + "assert pyo.value(\n", + " m.fs.total_variable_cost_rate[0] / m.fs.net_power_mw[0]\n", + ") == pytest.approx(37.2799, rel=0.01)\n", + "assert pyo.value(m.fs.fuel_cost_rate[0] / m.fs.net_power_mw[0]) == pytest.approx(\n", + " 31.6462, rel=0.01\n", + ")\n", + "assert pyo.value(\n", + " m.fs.other_variable_cost_rate[0] / m.fs.net_power_mw[0]\n", + ") == pytest.approx(5.63373, rel=0.01)\n", + "assert pyo.value(m.fs.gt.gt_power[0]) == pytest.approx(-477e6, rel=0.001)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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XnsNhYWFMDY2hpmZmXTFp3379hg1ahRGjBjR4N93RURERHQ/NRqg3K5dO6xatQqfffYZTp48iYsXL+LOnTto2rQpfH190bRp0/qqk4iIiKhWavV1EUZGRvD19YWvr28dl0NERERUt/g0FhEREckaww4RERHJGsMOERERyRrDDhEREclajcNOWVkZTExMcOrUqfqoh4iIiKhO1TjsKJVKtGjRAuXl5fVRDxEREVGdqtVtrOnTp2PatGm4fv16XddDREREVKdq9Tk7//73v3Hu3Dm4uLjAzc0NVlZWeu1Hjx6tk+KIiIiIHletws7AgQPruAwiIiKi+lGrsPP+++/XdR1ERERE9aLWj57n5+dj9erViI6OlsbuHD16FJcvX66z4oiIiIgeV62u7Jw8eRIhISFQq9W4cOECRo8eDTs7O2zYsAE5OTn44osv6rpOIiIiolqp1ZWdSZMmYcSIETh79izMzc2l5c8//zz2799fZ8URERERPa5ahZ3U1FS8+eabVZY3a9YMOp3usYsiIiIiqiu1CjtmZmYoLCyssvzMmTNwcHB47KKIiIiI6kqtws4LL7yAWbNmoaysDACgUCiQk5ODqVOnIiwsrE4LJCIiInoctQo7CxcuRFFRERwdHXHnzh0EBQWhdevWaNKkCT766KO6rpGIiIio1mr1NJZarcbOnTvxv//9DydPnkRRURGee+45hISE1HV9RERERI+lVmGnuLgY5ubmCAwMRGBgYF3XRERERFRnahV2bGxs0LlzZwQFBaFbt27QarWwsLCo69qIiIiIHlutxuzs2rULvXv3RkpKCl544QXY2toiMDAQ06dPx86dO+u6RiIiIqJaq1XYCQwMxLRp07Bjxw7k5+dj7969aN26NebPn4/evXvXdY1EREREtVar21jAvc/USUxMlKaSkhL069cPwcHBdVgeERER0eOpVdhp1qwZ7ty5g+DgYAQHB2Pq1Klo27YtFApFXddHRERE9FhqdRvLwcEBt2/fhk6ng06nQ25uLu7cuVPXtRERERE9tlqFnePHj0On0+G9995DSUkJpk2bhqZNm6JLly6YPn16XddIREREVGu1HrNjY2ODF154AQEBAejSpQt+/PFHfPXVV0hJSeGnKBMREVGjUauws2HDBmlgckZGBuzs7BAYGIiFCxciKCiormskIiIiqrVahZ2xY8eia9eu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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from matplotlib import pyplot as plt\n", + "\n", + "\n", + "variables = [\"net_power\", \"gross_power\", \"gt_power\"]\n", + "netl_baseline = [646, 690, 477]\n", + "idaes_prediction = [\n", + " pyo.value(m.fs.net_power_mw[0]),\n", + " -pyo.value(m.fs.gross_power[0]) * 1e-6,\n", + " -pyo.value(m.fs.gt.gt_power[0]) * 1e-6,\n", + "]\n", + "\n", + "label_location = np.arange(len(variables))\n", + "\n", + "width = 0.4\n", + "\n", + "fig, ax = plt.subplots()\n", + "netl_data = ax.bar(variables, netl_baseline, label=\"NETL Baseline\")\n", + "idaes_sim = ax.bar(\n", + " label_location + (width / 2), idaes_prediction, width, label=\"IDAES Prediction\"\n", + ")\n", + "\n", + "ax.set_ylabel(\"Power (MW)\")\n", + "ax.set_xticks(label_location)\n", + "ax.set_xticklabels(variables)\n", + "ax.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Run turndown cases 5 MW interval\n", + "\n", + "Here we set the CO2 capture rate to 97% and set the specific reboiler duty to PZ advanced solvent system. The minimum power is 160 MW net, which corresponds to a bit under 25%. This is roughly the minimum load for the NGCC modeled. Results are tabulated for tags in the tags_output tag group in a Pandas data frame. \n", + "\n", + "To run the series, change run_series to True. Running the turndown series takes a while, unless previous saved results are available. " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "run_series = False\n", + "if run_series:\n", + " idaes.cfg.ipopt.options.tol = 1e-6\n", + " idaes.cfg.ipopt.options.max_iter = 50\n", + " solver = pyo.SolverFactory(\"ipopt\")\n", + "\n", + " m.fs.cap_specific_reboiler_duty.fix(2.4e6)\n", + " m.fs.cap_fraction.fix(0.97)\n", + " powers = np.linspace(650, 160, int((650 - 160) / 5) + 1)\n", + " powers = list(powers)\n", + " powers.insert(1, 646)\n", + "\n", + " df = pd.DataFrame(columns=m.fs.tags_output.table_heading())\n", + "\n", + " for p in powers:\n", + " print(\"Simulation for net power = \", p)\n", + " fname = f\"data/ngcc_{int(p)}.json.gz\"\n", + " if os.path.exists(fname):\n", + " iutil.from_json(m, fname=fname, wts=iutil.StoreSpec(suffix=False))\n", + " else:\n", + " m.fs.net_power_mw.fix(p)\n", + " res = solver.solve(m, tee=False, symbolic_solver_labels=True)\n", + " if not pyo.check_optimal_termination(res):\n", + " break\n", + " iutil.to_json(m, fname=fname)\n", + " df.loc[m.fs.tags_output[\"net_power\"].value] = m.fs.tags_output.table_row(\n", + " numeric=True\n", + " )\n", + " if abs(p - 650) < 0.1:\n", + " m.fs.gt.streams_dataframe().to_csv(\n", + " \"data_tabulated/ngcc_stream_650mw_gt.csv\"\n", + " )\n", + " m.fs.st.steam_streams_dataframe().to_csv(\n", + " \"data_tabulated/ngcc_stream_650mw_st.csv\"\n", + " )\n", + " m.fs.hrsg.steam_streams_dataframe().to_csv(\n", + " \"data_tabulated/ngcc_stream_650mw_hrsg_steam.csv\"\n", + " )\n", + " m.fs.hrsg.flue_gas_streams_dataframe().to_csv(\n", + " \"data_tabulated/ngcc_stream_650mw_hrsg_gas.csv\"\n", + " )\n", + " df.to_csv(\"data_tabulated/ngcc.csv\")\n", + "\n", + " # Display the results from the run stored in a pandas dataframe\n", + " pd.set_option(\"display.max_rows\", None)\n", + " pd.set_option(\"display.max_columns\", None)\n", + " display(df)\n", + "\n", + " # Plot results\n", + " plt.plot(df[\"net_power (MW)\"], df[\"lhv_efficiency (%)\"])\n", + " plt.grid()\n", + " plt.xlabel(\"Net Power (MW)\")\n", + " plt.ylabel(\"LHV Efficiency (%)\")\n", + " plt.title(\"Net Power vs. Efficiency\")\n", + " plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 3 +} diff --git a/idaes_examples/notebooks/docs/power_gen/ngcc/steam_turbine_init.json.gz b/idaes_examples/notebooks/docs/power_gen/ngcc/steam_turbine_init.json.gz new file mode 100644 index 00000000..56609eab Binary files /dev/null and b/idaes_examples/notebooks/docs/power_gen/ngcc/steam_turbine_init.json.gz differ diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/steam_turbine_template.svg b/idaes_examples/notebooks/docs/power_gen/ngcc/steam_turbine_template.svg similarity index 100% rename from idaes_examples/notebooks/active/power_gen/ngcc/steam_turbine_template.svg rename to idaes_examples/notebooks/docs/power_gen/ngcc/steam_turbine_template.svg