diff --git a/idaes_examples/mod/hda/hda_ideal_VLE.py b/idaes_examples/mod/hda/hda_ideal_VLE.py index 9498ec7c..b6c3207e 100644 --- a/idaes_examples/mod/hda/hda_ideal_VLE.py +++ b/idaes_examples/mod/hda/hda_ideal_VLE.py @@ -15,33 +15,41 @@ Benzene-Toluene-o-Xylene system. """ -# Import Python libraries -import logging # Import Pyomo libraries -from pyomo.environ import Constraint, Expression, log, NonNegativeReals,\ - Var, Set, Param, sqrt, log10, units as pyunits -from pyomo.opt import TerminationCondition +from pyomo.environ import ( + Constraint, + Expression, + log, + NonNegativeReals, + Var, + Set, + Param, + sqrt, + log10, + units as pyunits, +) from pyomo.util.calc_var_value import calculate_variable_from_constraint +from pyomo.common.config import ConfigValue # Import IDAES cores -from idaes.core import (declare_process_block_class, - MaterialFlowBasis, - PhysicalParameterBlock, - StateBlockData, - StateBlock, - MaterialBalanceType, - EnergyBalanceType, - Component, - LiquidPhase, - VaporPhase) +from idaes.core import ( + declare_process_block_class, + MaterialFlowBasis, + PhysicalParameterBlock, + StateBlockData, + StateBlock, + MaterialBalanceType, + EnergyBalanceType, + Component, + LiquidPhase, + VaporPhase, +) from idaes.core.util.constants import Constants as const -from idaes.core.util.initialization import (fix_state_vars, - revert_state_vars, - solve_indexed_blocks) +from idaes.core.util.initialization import fix_state_vars, solve_indexed_blocks +from idaes.core.initialization import InitializerBase from idaes.core.util.misc import add_object_reference -from idaes.core.util.model_statistics import degrees_of_freedom, \ - number_unfixed_variables +from idaes.core.util.model_statistics import number_unfixed_variables from idaes.core.util.misc import extract_data from idaes.core.solvers import get_solver import idaes.core.util.scaling as iscale @@ -51,14 +59,90 @@ _log = idaeslog.getLogger(__name__) +class HDAInitializer(InitializerBase): + """ + Initializer for HDA Property package. + + """ + + CONFIG = InitializerBase.CONFIG() + CONFIG.declare( + "solver", + ConfigValue(default=None, domain=str, description="Initialization solver"), + ) + CONFIG.declare( + "solver_options", + ConfigValue(default=None, description="Initialization solver options"), + ) + + def initialization_routine(self, blk): + init_log = idaeslog.getInitLogger( + blk.name, self.config.output_level, tag="properties" + ) + solve_log = idaeslog.getSolveLogger( + blk.name, self.config.output_level, tag="properties" + ) + + # Set solver + solver = get_solver(self.config.solver, self.config.solver_options) + + # --------------------------------------------------------------------- + # If present, initialize bubble and dew point calculations + for k in blk.keys(): + if hasattr(blk[k], "eq_temperature_dew"): + calculate_variable_from_constraint( + blk[k].temperature_dew, blk[k].eq_temperature_dew + ) + + if hasattr(blk[k], "eq_pressure_dew"): + calculate_variable_from_constraint( + blk[k].pressure_dew, blk[k].eq_pressure_dew + ) + + init_log.info_high( + "Initialization Step 1 - Dew and bubble points " "calculation completed." + ) + + # --------------------------------------------------------------------- + # If flash, initialize T1 and Teq + for k in blk.keys(): + if blk[k].config.has_phase_equilibrium and not blk[k].config.defined_state: + blk[k]._t1.value = max( + blk[k].temperature.value, blk[k].temperature_bubble.value + ) + blk[k]._teq.value = min(blk[k]._t1.value, blk[k].temperature_dew.value) + + init_log.info_high( + "Initialization Step 2 - Equilibrium temperature " " calculation completed." + ) + + # --------------------------------------------------------------------- + # Initialize flow rates and compositions + free_vars = 0 + for k in blk.keys(): + free_vars += number_unfixed_variables(blk[k]) + if free_vars > 0: + try: + with idaeslog.solver_log(solve_log, idaeslog.DEBUG) as slc: + res = solve_indexed_blocks(solver, [blk], tee=slc.tee) + except: + res = None + else: + res = None + + init_log.info("Initialization Complete") + + return res + + @declare_process_block_class("HDAParameterBlock") class HDAParameterData(PhysicalParameterBlock): CONFIG = PhysicalParameterBlock.CONFIG() def build(self): - ''' + """ Callable method for Block construction. - ''' + """ super(HDAParameterData, self).build() self._state_block_class = IdealStateBlock @@ -72,284 +156,304 @@ def build(self): self.Vap = VaporPhase() # List of components in each phase (optional) - self.phase_comp = {"Liq": self.component_list, - "Vap": self.component_list} + self.phase_comp = {"Liq": self.component_list, "Vap": self.component_list} # List of phase equilibrium index self.phase_equilibrium_idx = Set(initialize=[1, 2, 3, 4]) - self.phase_equilibrium_list = \ - {1: ["benzene", ("Vap", "Liq")], - 2: ["toluene", ("Vap", "Liq")], - 3: ["hydrogen", ("Vap", "Liq")], - 4: ["methane", ("Vap", "Liq")]} + self.phase_equilibrium_list = { + 1: ["benzene", ("Vap", "Liq")], + 2: ["toluene", ("Vap", "Liq")], + 3: ["hydrogen", ("Vap", "Liq")], + 4: ["methane", ("Vap", "Liq")], + } # Thermodynamic reference state - self.pressure_ref = Param(mutable=True, - default=101325, - units=pyunits.Pa, - doc='Reference pressure') - self.temperature_ref = Param(mutable=True, - default=298.15, - units=pyunits.K, - doc='Reference temperature') + self.pressure_ref = Param( + mutable=True, default=101325, units=pyunits.Pa, doc="Reference pressure" + ) + self.temperature_ref = Param( + mutable=True, default=298.15, units=pyunits.K, doc="Reference temperature" + ) # Source: The Properties of Gases and Liquids (1987) # 4th edition, Chemical Engineering Series - Robert C. Reid - pressure_crit_data = {'benzene': 48.9e5, - 'toluene': 41e5, - 'hydrogen': 12.9e5, - 'methane': 46e5 - } + pressure_crit_data = { + "benzene": 48.9e5, + "toluene": 41e5, + "hydrogen": 12.9e5, + "methane": 46e5, + } self.pressure_crit = Param( self.component_list, within=NonNegativeReals, - mutable=False, + mutable=True, units=pyunits.Pa, initialize=extract_data(pressure_crit_data), - doc='Critical pressure') + doc="Critical pressure", + ) # Source: The Properties of Gases and Liquids (1987) # 4th edition, Chemical Engineering Series - Robert C. Reid - temperature_crit_data = {'benzene': 562.2, - 'toluene': 591.8, - 'hydrogen': 33.0, - 'methane': 190.4 - } + temperature_crit_data = { + "benzene": 562.2, + "toluene": 591.8, + "hydrogen": 33.0, + "methane": 190.4, + } self.temperature_crit = Param( self.component_list, within=NonNegativeReals, - mutable=False, + mutable=True, units=pyunits.K, initialize=extract_data(temperature_crit_data), - doc='Critical temperature') + doc="Critical temperature", + ) # Source: The Properties of Gases and Liquids (1987) # 4th edition, Chemical Engineering Series - Robert C. Reid - mw_comp_data = {'benzene': 78.1136E-3, - 'toluene': 92.1405E-3, - 'hydrogen': 2.016e-3, - 'methane': 16.043e-3} - - self.mw_comp = Param(self.component_list, - mutable=False, - units=pyunits.kg/pyunits.mol, - initialize=extract_data(mw_comp_data), - doc="molecular weight") + mw_comp_data = { + "benzene": 78.1136e-3, + "toluene": 92.1405e-3, + "hydrogen": 2.016e-3, + "methane": 16.043e-3, + } + + self.mw_comp = Param( + self.component_list, + mutable=True, + units=pyunits.kg / pyunits.mol, + initialize=extract_data(mw_comp_data), + doc="molecular weight", + ) # Constants for liquid densities # Source: Perry's Chemical Engineers Handbook # - Robert H. Perry (Cp_liq) - dens_liq_data = {('benzene', '1'): 1.0162, - ('benzene', '2'): 0.2655, - ('benzene', '3'): 562.16, - ('benzene', '4'): 0.28212, - ('toluene', '1'): 0.8488, - ('toluene', '2'): 0.26655, - ('toluene', '3'): 591.8, - ('toluene', '4'): 0.2878, - ('hydrogen', '1'): 5.414, - ('hydrogen', '2'): 0.34893, - ('hydrogen', '3'): 33.19, - ('hydrogen', '4'): 0.2706, - ('methane', '1'): 2.9214, - ('methane', '2'): 0.28976, - ('methane', '3'): 190.56, - ('methane', '4'): 0.28881} + dens_liq_data = { + ("benzene", "1"): 1.0162, + ("benzene", "2"): 0.2655, + ("benzene", "3"): 562.16, + ("benzene", "4"): 0.28212, + ("toluene", "1"): 0.8488, + ("toluene", "2"): 0.26655, + ("toluene", "3"): 591.8, + ("toluene", "4"): 0.2878, + ("hydrogen", "1"): 5.414, + ("hydrogen", "2"): 0.34893, + ("hydrogen", "3"): 33.19, + ("hydrogen", "4"): 0.2706, + ("methane", "1"): 2.9214, + ("methane", "2"): 0.28976, + ("methane", "3"): 190.56, + ("methane", "4"): 0.28881, + } self.dens_liq_param_1 = Param( self.component_list, - mutable=False, - initialize={c: v for (c, j), v in dens_liq_data.items() if j == '1'}, + mutable=True, + initialize={c: v for (c, j), v in dens_liq_data.items() if j == "1"}, doc="Parameter 1 to compute liquid densities", - units=pyunits.kmol*pyunits.m**-3 + units=pyunits.kmol * pyunits.m**-3, ) self.dens_liq_param_2 = Param( self.component_list, - mutable=False, - initialize={c: v for (c, j), v in dens_liq_data.items() if j == '2'}, + mutable=True, + initialize={c: v for (c, j), v in dens_liq_data.items() if j == "2"}, doc="Parameter 2 to compute liquid densities", - units=pyunits.dimensionless + units=pyunits.dimensionless, ) self.dens_liq_param_3 = Param( self.component_list, - mutable=False, - initialize={c: v for (c, j), v in dens_liq_data.items() if j == '3'}, + mutable=True, + initialize={c: v for (c, j), v in dens_liq_data.items() if j == "3"}, doc="Parameter 3 to compute liquid densities", - units=pyunits.K + units=pyunits.K, ) self.dens_liq_param_4 = Param( self.component_list, - mutable=False, - initialize={c: v for (c, j), v in dens_liq_data.items() if j == '4'}, + mutable=True, + initialize={c: v for (c, j), v in dens_liq_data.items() if j == "4"}, doc="Parameter 4 to compute liquid densities", - units=pyunits.dimensionless + units=pyunits.dimensionless, ) # Boiling point at standard pressure # Source: Perry's Chemical Engineers Handbook # - Robert H. Perry (Cp_liq) - bp_data = {('benzene'): 353.25, - ('toluene'): 383.95, - ('hydrogen'): 20.45, - ('methane'): 111.75} + bp_data = { + ("benzene"): 353.25, + ("toluene"): 383.95, + ("hydrogen"): 20.45, + ("methane"): 111.75, + } self.temperature_boil = Param( - self.component_list, - mutable=False, - units=pyunits.K, - initialize=extract_data(bp_data), - doc="Pure component boiling points at standard pressure") + self.component_list, + mutable=True, + units=pyunits.K, + initialize=extract_data(bp_data), + doc="Pure component boiling points at standard pressure", + ) # Constants for specific heat capacity, enthalpy # Sources: The Properties of Gases and Liquids (1987) # 4th edition, Chemical Engineering Series - Robert C. Reid # Perry's Chemical Engineers Handbook # - Robert H. Perry (Cp_liq) - cp_ig_data = {('Liq', 'benzene', '1'): 1.29E5, - ('Liq', 'benzene', '2'): -1.7E2, - ('Liq', 'benzene', '3'): 6.48E-1, - ('Liq', 'benzene', '4'): 0, - ('Liq', 'benzene', '5'): 0, - ('Vap', 'benzene', '1'): -3.392E1, - ('Vap', 'benzene', '2'): 4.739E-1, - ('Vap', 'benzene', '3'): -3.017E-4, - ('Vap', 'benzene', '4'): 7.130E-8, - ('Vap', 'benzene', '5'): 0, - ('Liq', 'toluene', '1'): 1.40E5, - ('Liq', 'toluene', '2'): -1.52E2, - ('Liq', 'toluene', '3'): 6.95E-1, - ('Liq', 'toluene', '4'): 0, - ('Liq', 'toluene', '5'): 0, - ('Vap', 'toluene', '1'): -2.435E1, - ('Vap', 'toluene', '2'): 5.125E-1, - ('Vap', 'toluene', '3'): -2.765E-4, - ('Vap', 'toluene', '4'): 4.911E-8, - ('Vap', 'toluene', '5'): 0, - ('Liq', 'hydrogen', '1'): 0, # 6.6653e1, - ('Liq', 'hydrogen', '2'): 0, # 6.7659e3, - ('Liq', 'hydrogen', '3'): 0, # -1.2363e2, - ('Liq', 'hydrogen', '4'): 0, # 4.7827e2, # Eqn 2 - ('Liq', 'hydrogen', '5'): 0, - ('Vap', 'hydrogen', '1'): 2.714e1, - ('Vap', 'hydrogen', '2'): 9.274e-3, - ('Vap', 'hydrogen', '3'): -1.381e-5, - ('Vap', 'hydrogen', '4'): 7.645e-9, - ('Vap', 'hydrogen', '5'): 0, - ('Liq', 'methane', '1'): 0, # 6.5708e1, - ('Liq', 'methane', '2'): 0, # 3.8883e4, - ('Liq', 'methane', '3'): 0, # -2.5795e2, - ('Liq', 'methane', '4'): 0, # 6.1407e2, # Eqn 2 - ('Liq', 'methane', '5'): 0, - ('Vap', 'methane', '1'): 1.925e1, - ('Vap', 'methane', '2'): 5.213e-2, - ('Vap', 'methane', '3'): 1.197e-5, - ('Vap', 'methane', '4'): -1.132e-8, - ('Vap', 'methane', '5'): 0} + cp_ig_data = { + ("Liq", "benzene", "1"): 1.29e5, + ("Liq", "benzene", "2"): -1.7e2, + ("Liq", "benzene", "3"): 6.48e-1, + ("Liq", "benzene", "4"): 0, + ("Liq", "benzene", "5"): 0, + ("Vap", "benzene", "1"): -3.392e1, + ("Vap", "benzene", "2"): 4.739e-1, + ("Vap", "benzene", "3"): -3.017e-4, + ("Vap", "benzene", "4"): 7.130e-8, + ("Vap", "benzene", "5"): 0, + ("Liq", "toluene", "1"): 1.40e5, + ("Liq", "toluene", "2"): -1.52e2, + ("Liq", "toluene", "3"): 6.95e-1, + ("Liq", "toluene", "4"): 0, + ("Liq", "toluene", "5"): 0, + ("Vap", "toluene", "1"): -2.435e1, + ("Vap", "toluene", "2"): 5.125e-1, + ("Vap", "toluene", "3"): -2.765e-4, + ("Vap", "toluene", "4"): 4.911e-8, + ("Vap", "toluene", "5"): 0, + ("Liq", "hydrogen", "1"): 0, # 6.6653e1, + ("Liq", "hydrogen", "2"): 0, # 6.7659e3, + ("Liq", "hydrogen", "3"): 0, # -1.2363e2, + ("Liq", "hydrogen", "4"): 0, # 4.7827e2, # Eqn 2 + ("Liq", "hydrogen", "5"): 0, + ("Vap", "hydrogen", "1"): 2.714e1, + ("Vap", "hydrogen", "2"): 9.274e-3, + ("Vap", "hydrogen", "3"): -1.381e-5, + ("Vap", "hydrogen", "4"): 7.645e-9, + ("Vap", "hydrogen", "5"): 0, + ("Liq", "methane", "1"): 0, # 6.5708e1, + ("Liq", "methane", "2"): 0, # 3.8883e4, + ("Liq", "methane", "3"): 0, # -2.5795e2, + ("Liq", "methane", "4"): 0, # 6.1407e2, # Eqn 2 + ("Liq", "methane", "5"): 0, + ("Vap", "methane", "1"): 1.925e1, + ("Vap", "methane", "2"): 5.213e-2, + ("Vap", "methane", "3"): 1.197e-5, + ("Vap", "methane", "4"): -1.132e-8, + ("Vap", "methane", "5"): 0, + } self.cp_ig_1 = Param( self.phase_list, self.component_list, - mutable=False, - initialize={(p, c): v for (p, c, j), v in cp_ig_data.items() if j == '1'}, + mutable=True, + initialize={(p, c): v for (p, c, j), v in cp_ig_data.items() if j == "1"}, doc="Parameter 1 to compute Cp_comp", - units=pyunits.J/pyunits.mol/pyunits.K + units=pyunits.J / pyunits.mol / pyunits.K, ) self.cp_ig_2 = Param( self.phase_list, self.component_list, - mutable=False, - initialize={(p, c): v for (p, c, j), v in cp_ig_data.items() if j == '2'}, + mutable=True, + initialize={(p, c): v for (p, c, j), v in cp_ig_data.items() if j == "2"}, doc="Parameter 2 to compute Cp_comp", - units=pyunits.J/pyunits.mol/pyunits.K**2 + units=pyunits.J / pyunits.mol / pyunits.K**2, ) self.cp_ig_3 = Param( self.phase_list, self.component_list, - mutable=False, - initialize={(p, c): v for (p, c, j), v in cp_ig_data.items() if j == '3'}, + mutable=True, + initialize={(p, c): v for (p, c, j), v in cp_ig_data.items() if j == "3"}, doc="Parameter 3 to compute Cp_comp", - units=pyunits.J/pyunits.mol/pyunits.K**3 + units=pyunits.J / pyunits.mol / pyunits.K**3, ) self.cp_ig_4 = Param( self.phase_list, self.component_list, - mutable=False, - initialize={(p, c): v for (p, c, j), v in cp_ig_data.items() if j == '4'}, + mutable=True, + initialize={(p, c): v for (p, c, j), v in cp_ig_data.items() if j == "4"}, doc="Parameter 4 to compute Cp_comp", - units=pyunits.J/pyunits.mol/pyunits.K**4 + units=pyunits.J / pyunits.mol / pyunits.K**4, ) self.cp_ig_5 = Param( self.phase_list, self.component_list, - mutable=False, - initialize={(p, c): v for (p, c, j), v in cp_ig_data.items() if j == '5'}, + mutable=True, + initialize={(p, c): v for (p, c, j), v in cp_ig_data.items() if j == "5"}, doc="Parameter 5 to compute Cp_comp", - units=pyunits.J/pyunits.mol/pyunits.K**5 + units=pyunits.J / pyunits.mol / pyunits.K**5, ) # Source: The Properties of Gases and Liquids (1987) # 4th edition, Chemical Engineering Series - Robert C. Reid # fitted to Antoine form # H2, Methane from NIST webbook - pressure_sat_coeff_data = {('benzene', 'A'): 4.202, - ('benzene', 'B'): 1322, - ('benzene', 'C'): -38.56, - ('toluene', 'A'): 4.216, - ('toluene', 'B'): 1435, - ('toluene', 'C'): -43.33, - ('hydrogen', 'A'): 3.543, - ('hydrogen', 'B'): 99.40, - ('hydrogen', 'C'): 7.726, - ('methane', 'A'): 3.990, - ('methane', 'B'): 443.0, - ('methane', 'C'): -0.49} + pressure_sat_coeff_data = { + ("benzene", "A"): 4.202, + ("benzene", "B"): 1322, + ("benzene", "C"): -38.56, + ("toluene", "A"): 4.216, + ("toluene", "B"): 1435, + ("toluene", "C"): -43.33, + ("hydrogen", "A"): 3.543, + ("hydrogen", "B"): 99.40, + ("hydrogen", "C"): 7.726, + ("methane", "A"): 3.990, + ("methane", "B"): 443.0, + ("methane", "C"): -0.49, + } self.pressure_sat_coeff_A = Param( self.component_list, - mutable=False, - initialize={c: v for (c, j), v in pressure_sat_coeff_data.items() if j == 'A'}, + mutable=True, + initialize={ + c: v for (c, j), v in pressure_sat_coeff_data.items() if j == "A" + }, doc="Parameter A to compute saturated pressure", - units=pyunits.dimensionless + units=pyunits.dimensionless, ) self.pressure_sat_coeff_B = Param( self.component_list, - mutable=False, - initialize={c: v for (c, j), v in pressure_sat_coeff_data.items() if j == 'B'}, + mutable=True, + initialize={ + c: v for (c, j), v in pressure_sat_coeff_data.items() if j == "B" + }, doc="Parameter B to compute saturated pressure", - units=pyunits.K + units=pyunits.K, ) self.pressure_sat_coeff_C = Param( self.component_list, - mutable=False, - initialize={c: v for (c, j), v in pressure_sat_coeff_data.items() if j == 'C'}, + mutable=True, + initialize={ + c: v for (c, j), v in pressure_sat_coeff_data.items() if j == "C" + }, doc="Parameter C to compute saturated pressure", - units=pyunits.K + units=pyunits.K, ) # Source: The Properties of Gases and Liquids (1987) # 4th edition, Chemical Engineering Series - Robert C. Reid - dh_vap = {'benzene': 3.387e4, - 'toluene': 3.8262e4, - 'hydrogen': 0, - 'methane': 0} + dh_vap = {"benzene": 3.387e4, "toluene": 3.8262e4, "hydrogen": 0, "methane": 0} - self.dh_vap = Param(self.component_list, - mutable=False, - units=pyunits.J/pyunits.mol, - initialize=extract_data(dh_vap), - doc="heat of vaporization") + self.dh_vap = Param( + self.component_list, + mutable=True, + units=pyunits.J / pyunits.mol, + initialize=extract_data(dh_vap), + doc="heat of vaporization", + ) # Set default scaling factors self.set_default_scaling("flow_mol", 1e3) @@ -377,45 +481,52 @@ def define_metadata(cls, obj): """Define properties supported and units.""" obj.add_properties( { - 'flow_mol': {'method': None}, - 'flow_mol_phase_comp': {'method': None}, - 'mole_frac_comp': {'method': None}, - 'temperature': {'method': None}, - 'pressure': {'method': None}, - 'flow_mol_phase': {'method': None}, - 'dens_mol_phase': {'method': '_dens_mol_phase'}, - 'pressure_sat': {'method': '_pressure_sat'}, - 'mole_frac_phase_comp': {'method': '_mole_frac_phase'}, - 'energy_internal_mol_phase_comp': { - 'method': '_energy_internal_mol_phase_comp'}, - 'energy_internal_mol_phase': { - 'method': '_energy_internal_mol_phase'}, - 'enth_mol_phase_comp': {'method': '_enth_mol_phase_comp'}, - 'enth_mol_phase': {'method': '_enth_mol_phase'}, - 'entr_mol_phase_comp': {'method': '_entr_mol_phase_comp'}, - 'entr_mol_phase': {'method': '_entr_mol_phase'}, - 'temperature_bubble': {'method': '_temperature_bubble'}, - 'temperature_dew': {'method': '_temperature_dew'}, - 'pressure_bubble': {'method': '_pressure_bubble'}, - 'pressure_dew': {'method': '_pressure_dew'}, - 'fug_phase_comp': {'method': '_fug_phase_comp'}, - } + "flow_mol": {"method": None}, + "flow_mol_phase_comp": {"method": None}, + "mole_frac_comp": {"method": None}, + "temperature": {"method": None}, + "pressure": {"method": None}, + "flow_mol_phase": {"method": None}, + "dens_mol_phase": {"method": "_dens_mol_phase"}, + "pressure_sat": {"method": "_pressure_sat"}, + "mole_frac_phase_comp": {"method": "_mole_frac_phase"}, + "energy_internal_mol_phase_comp": { + "method": "_energy_internal_mol_phase_comp" + }, + "energy_internal_mol_phase": {"method": "_energy_internal_mol_phase"}, + "enth_mol_phase_comp": {"method": "_enth_mol_phase_comp"}, + "enth_mol_phase": {"method": "_enth_mol_phase"}, + "entr_mol_phase_comp": {"method": "_entr_mol_phase_comp"}, + "entr_mol_phase": {"method": "_entr_mol_phase"}, + "temperature_bubble": {"method": "_temperature_bubble"}, + "temperature_dew": {"method": "_temperature_dew"}, + "pressure_bubble": {"method": "_pressure_bubble"}, + "pressure_dew": {"method": "_pressure_dew"}, + "fug_phase_comp": {"method": "_fug_phase_comp"}, + } ) obj.define_custom_properties( { # Enthalpy of vaporization - 'dh_vap': {'method': '_dh_vap', "units": obj.derived_units.ENERGY_MOLE}, + "dh_vap": {"method": "_dh_vap", "units": obj.derived_units.ENERGY_MOLE}, # Entropy of vaporization - 'ds_vap': {'method': '_ds_vap', "units": obj.derived_units.ENTROPY_MOLE}, + "ds_vap": { + "method": "_ds_vap", + "units": obj.derived_units.ENTROPY_MOLE, + }, + } + ) + + obj.add_default_units( + { + "time": pyunits.s, + "length": pyunits.m, + "mass": pyunits.kg, + "amount": pyunits.mol, + "temperature": pyunits.K, } ) - - obj.add_default_units({'time': pyunits.s, - 'length': pyunits.m, - 'mass': pyunits.kg, - 'amount': pyunits.mol, - 'temperature': pyunits.K}) class _IdealStateBlock(StateBlock): @@ -424,394 +535,317 @@ class _IdealStateBlock(StateBlock): whole, rather than individual elements of indexed Property Blocks. """ - def initialize(blk, state_args={}, state_vars_fixed=False, - hold_state=False, outlvl=idaeslog.NOTSET, - solver=None, optarg=None): + default_initializer = HDAInitializer + + def fix_initialization_states(blk): """ - Initialization routine for property package. - Keyword Arguments: - state_args : Dictionary with initial guesses for the state vars - chosen. Note that if this method is triggered - through the control volume, and if initial guesses - were not provided at the unit model level, the - control volume passes the inlet values as initial - guess.The keys for the state_args dictionary are: - - flow_mol_phase_comp : value at which to initialize - phase component flows - pressure : value at which to initialize pressure - temperature : value at which to initialize temperature - outlvl : sets output level of initialization routine - * 0 = no output (default) - * 1 = return solver state for each step in routine - * 2 = include solver output information (tee=True) - optarg : solver options dictionary object (default=None) - state_vars_fixed: Flag to denote if state vars have already been - fixed. - - True - states have already been fixed by the - control volume 1D. Control volume 0D - does not fix the state vars, so will - be False if this state block is used - with 0D blocks. - - False - states have not been fixed. The state - block will deal with fixing/unfixing. - solver : str indicating which solver to use during - initialization (default = 'ipopt') - hold_state : flag indicating whether the initialization routine - should unfix any state variables fixed during - initialization (default=False). - - True - states variables are not unfixed, and - a dict of returned containing flags for - which states were fixed during - initialization. - - False - state variables are unfixed after - initialization by calling the - release_state method + Fixes state variables for state blocks. + Returns: - If hold_states is True, returns a dict containing flags for - which states were fixed during initialization. + None """ - init_log = idaeslog.getInitLogger(blk.name, outlvl, tag="properties") - solve_log = idaeslog.getSolveLogger(blk.name, outlvl, tag="properties") - - # Fix state variables if not already fixed - if state_vars_fixed is False: - flags = fix_state_vars(blk, state_args) - - else: - # Check when the state vars are fixed already result in dof 0 - for k in blk.keys(): - if degrees_of_freedom(blk[k]) != 0: - raise Exception("State vars fixed but degrees of freedom " - "for state block is not zero during " - "initialization.") - # Set solver - opt = get_solver(solver, optarg) - - # --------------------------------------------------------------------- - # If present, initialize bubble and dew point calculations - for k in blk.keys(): - if hasattr(blk[k], "eq_temperature_dew"): - calculate_variable_from_constraint(blk[k].temperature_dew, - blk[k].eq_temperature_dew) - - if hasattr(blk[k], "eq_pressure_dew"): - calculate_variable_from_constraint(blk[k].pressure_dew, - blk[k].eq_pressure_dew) - - init_log.info_high("Initialization Step 1 - Dew and bubble points " - "calculation completed.") - - # --------------------------------------------------------------------- - # If flash, initialize T1 and Teq - for k in blk.keys(): - if (blk[k].config.has_phase_equilibrium and - not blk[k].config.defined_state): - blk[k]._t1.value = max(blk[k].temperature.value, - blk[k].temperature_bubble.value) - blk[k]._teq.value = min(blk[k]._t1.value, - blk[k].temperature_dew.value) - - init_log.info_high("Initialization Step 2 - Equilibrium temperature " - " calculation completed.") - - # --------------------------------------------------------------------- - # Initialize flow rates and compositions - # TODO : This will need to be generalised more when we move to a - # modular implementation - for k in blk.keys(): - # Deactivate equilibrium constraints, as state is fixed - if hasattr(blk[k], 'equilibrium_constraint'): - blk[k].equilibrium_constraint.deactivate() - - free_vars = 0 - for k in blk.keys(): - free_vars += number_unfixed_variables(blk[k]) - if free_vars > 0: - try: - with idaeslog.solver_log(solve_log, idaeslog.DEBUG) as slc: - res = solve_indexed_blocks(opt, [blk], tee=slc.tee) - except: - res = None - else: - res = None - - for k in blk.keys(): - # Reactivate equilibrium constraints - if hasattr(blk[k], 'equilibrium_constraint'): - blk[k].equilibrium_constraint.activate() + # Fix state variables + fix_state_vars(blk) - # --------------------------------------------------------------------- - # Return state to initial conditions - if state_vars_fixed is False: - if hold_state is True: - return flags - else: - blk.release_state(flags) + # Also need to deactivate sum of mole fraction constraint + for k in blk.values(): + if not k.config.defined_state: + k.equilibrium_constraint.deactivate() - init_log.info("Initialization Complete") - def release_state(blk, flags, outlvl=0): - ''' - Method to release state variables fixed during initialization. - Keyword Arguments: - flags : dict containing information of which state variables - were fixed during initialization, and should now be - unfixed. This dict is returned by initialize if - hold_state=True. - outlvl : sets output level of of logging - ''' - init_log = idaeslog.getInitLogger(blk.name, outlvl, tag="properties") - if flags is None: - init_log.debug("No flags passed to release_state().") - return - - # Unfix state variables - revert_state_vars(blk, flags) - - init_log.info_high("State Released.") - - -@declare_process_block_class("IdealStateBlock", - block_class=_IdealStateBlock) +@declare_process_block_class("IdealStateBlock", block_class=_IdealStateBlock) class IdealStateBlockData(StateBlockData): """An example property package for ideal VLE.""" def build(self): """Callable method for Block construction.""" - super(IdealStateBlockData, self).build() + super().build() # Add state variables self.flow_mol_phase_comp = Var( - self._params.phase_list, - self._params.component_list, - initialize=0.5, - units=pyunits.mol/pyunits.s, - bounds=(1e-12, 100), - doc='Phase-component molar flow rates') - - self.pressure = Var(initialize=101325, - bounds=(100000, 1000000), - units=pyunits.Pa, - domain=NonNegativeReals, - doc='State pressure') - self.temperature = Var(initialize=298.15, - units=pyunits.K, - bounds=(298, 1000), - domain=NonNegativeReals, - doc='State temperature') + self._params.phase_list, + self._params.component_list, + initialize=0.5, + units=pyunits.mol / pyunits.s, + bounds=(1e-12, 100), + doc="Phase-component molar flow rates", + ) + + self.pressure = Var( + initialize=101325, + bounds=(100000, 1000000), + units=pyunits.Pa, + domain=NonNegativeReals, + doc="State pressure", + ) + self.temperature = Var( + initialize=298.15, + units=pyunits.K, + bounds=(298, 1000), + domain=NonNegativeReals, + doc="State temperature", + ) # Add supporting variables def flow_mol_phase(b, p): - return sum(b.flow_mol_phase_comp[p, j] - for j in b._params.component_list) - self.flow_mol_phase = Expression(self._params.phase_list, - rule=flow_mol_phase, - doc='Phase molar flow rates') + return sum(b.flow_mol_phase_comp[p, j] for j in b._params.component_list) + + self.flow_mol_phase = Expression( + self._params.phase_list, rule=flow_mol_phase, doc="Phase molar flow rates" + ) def flow_mol(b): - return sum(b.flow_mol_phase_comp[p, j] - for j in b._params.component_list - for p in b._params.phase_list) - self.flow_mol = Expression(rule=flow_mol, - doc='Total molar flowrate') + return sum( + b.flow_mol_phase_comp[p, j] + for j in b._params.component_list + for p in b._params.phase_list + ) + + self.flow_mol = Expression(rule=flow_mol, doc="Total molar flowrate") def mole_frac_phase_comp(b, p, j): - return b.flow_mol_phase_comp[p, j]/b.flow_mol_phase[p] + return b.flow_mol_phase_comp[p, j] / b.flow_mol_phase[p] + self.mole_frac_phase_comp = Expression( - self._params.phase_list, - self._params.component_list, - rule=mole_frac_phase_comp, - doc='Phase mole fractions') + self._params.phase_list, + self._params.component_list, + rule=mole_frac_phase_comp, + doc="Phase mole fractions", + ) def mole_frac_comp(b, j): - return (sum(b.flow_mol_phase_comp[p, j] - for p in b._params.phase_list) / b.flow_mol) - self.mole_frac_comp = Expression(self._params.component_list, - rule=mole_frac_comp, - doc='Mixture mole fractions') + return ( + sum(b.flow_mol_phase_comp[p, j] for p in b._params.phase_list) + / b.flow_mol + ) + + self.mole_frac_comp = Expression( + self._params.component_list, + rule=mole_frac_comp, + doc="Mixture mole fractions", + ) # Reaction Stoichiometry - add_object_reference(self, "phase_equilibrium_list_ref", - self._params.phase_equilibrium_list) + add_object_reference( + self, "phase_equilibrium_list_ref", self._params.phase_equilibrium_list + ) - if (self.config.has_phase_equilibrium and - self.config.defined_state is False): + if self.config.has_phase_equilibrium and self.config.defined_state is False: # Definition of equilibrium temperature for smooth VLE self._teq = Var( - initialize=self.temperature.value, - units=pyunits.K, - doc='Temperature for calculating phase equilibrium') - self._t1 = Var(initialize=self.temperature.value, - units=pyunits.K, - doc='Intermediate temperature for calculating Teq') - - self.eps_1 = Param(default=0.01, - units=pyunits.K, - mutable=True, - doc='Smoothing parameter for Teq') - self.eps_2 = Param(default=0.0005, - units=pyunits.K, - mutable=True, - doc='Smoothing parameter for Teq') + initialize=self.temperature.value, + units=pyunits.K, + doc="Temperature for calculating phase equilibrium", + ) + self._t1 = Var( + initialize=self.temperature.value, + units=pyunits.K, + doc="Intermediate temperature for calculating Teq", + ) + + self.eps_1 = Param( + default=0.01, + units=pyunits.K, + mutable=True, + doc="Smoothing parameter for Teq", + ) + self.eps_2 = Param( + default=0.0005, + units=pyunits.K, + mutable=True, + doc="Smoothing parameter for Teq", + ) # PSE paper Eqn 13 def rule_t1(b): - return b._t1 == 0.5*( - b.temperature + b.temperature_bubble + - sqrt((b.temperature-b.temperature_bubble)**2 + - b.eps_1**2)) + return b._t1 == 0.5 * ( + b.temperature + + b.temperature_bubble + + sqrt((b.temperature - b.temperature_bubble) ** 2 + b.eps_1**2) + ) + self._t1_constraint = Constraint(rule=rule_t1) # PSE paper Eqn 14 # TODO : Add option for supercritical extension def rule_teq(b): - return b._teq == 0.5*(b._t1 + b.temperature_dew - - sqrt((b._t1-b.temperature_dew)**2 + - b.eps_2**2)) + return b._teq == 0.5 * ( + b._t1 + + b.temperature_dew + - sqrt((b._t1 - b.temperature_dew) ** 2 + b.eps_2**2) + ) + self._teq_constraint = Constraint(rule=rule_teq) def rule_tr_eq(b, i): return b._teq / b._params.temperature_crit[i] + self._tr_eq = Expression( - self._params.component_list, - rule=rule_tr_eq, - doc='Component reduced temperatures') + self._params.component_list, + rule=rule_tr_eq, + doc="Component reduced temperatures", + ) def rule_equilibrium(b, i): return b.fug_phase_comp["Liq", i] == b.fug_phase_comp["Vap", i] + self.equilibrium_constraint = Constraint( - self._params.component_list, rule=rule_equilibrium) + self._params.component_list, rule=rule_equilibrium + ) -# ----------------------------------------------------------------------------- -# Property Methods + # ----------------------------------------------------------------------------- + # Property Methods def _dens_mol_phase(self): - self.dens_mol_phase = Var(self._params.phase_list, - initialize=1.0, - units=pyunits.mol*pyunits.m**-3, - doc="Molar density") + self.dens_mol_phase = Var( + self._params.phase_list, + initialize=1.0, + units=pyunits.mol * pyunits.m**-3, + doc="Molar density", + ) def rule_dens_mol_phase(b, p): - if p == 'Vap': + if p == "Vap": return b._dens_mol_vap() else: return b._dens_mol_liq() - self.eq_dens_mol_phase = Constraint(self._params.phase_list, - rule=rule_dens_mol_phase) + + self.eq_dens_mol_phase = Constraint( + self._params.phase_list, rule=rule_dens_mol_phase + ) def _energy_internal_mol_phase_comp(self): self.energy_internal_mol_phase_comp = Var( - self._params.phase_list, - self._params.component_list, - units=pyunits.J/pyunits.mol, - doc="Phase-component molar specific internal energies") + self._params.phase_list, + self._params.component_list, + units=pyunits.J / pyunits.mol, + doc="Phase-component molar specific internal energies", + ) def rule_energy_internal_mol_phase_comp(b, p, j): - if p == 'Vap': - return b.energy_internal_mol_phase_comp[p, j] == \ - b.enth_mol_phase_comp[p, j] - \ - const.gas_constant*(b.temperature - - b._params.temperature_ref) + if p == "Vap": + return b.energy_internal_mol_phase_comp[p, j] == b.enth_mol_phase_comp[ + p, j + ] - const.gas_constant * (b.temperature - b._params.temperature_ref) else: - return b.energy_internal_mol_phase_comp[p, j] == \ - b.enth_mol_phase_comp[p, j] + return ( + b.energy_internal_mol_phase_comp[p, j] + == b.enth_mol_phase_comp[p, j] + ) + self.eq_energy_internal_mol_phase_comp = Constraint( self._params.phase_list, self._params.component_list, - rule=rule_energy_internal_mol_phase_comp) + rule=rule_energy_internal_mol_phase_comp, + ) def _energy_internal_mol_phase(self): self.energy_internal_mol_phase = Var( self._params.phase_list, - units=pyunits.J/pyunits.mol, - doc='Phase molar specific internal energies') + units=pyunits.J / pyunits.mol, + doc="Phase molar specific internal energies", + ) def rule_energy_internal_mol_phase(b, p): return b.energy_internal_mol_phase[p] == sum( - b.energy_internal_mol_phase_comp[p, i] * - b.mole_frac_phase_comp[p, i] - for i in b._params.component_list) + b.energy_internal_mol_phase_comp[p, i] * b.mole_frac_phase_comp[p, i] + for i in b._params.component_list + ) + self.eq_energy_internal_mol_phase = Constraint( - self._params.phase_list, - rule=rule_energy_internal_mol_phase) + self._params.phase_list, rule=rule_energy_internal_mol_phase + ) def _enth_mol_phase_comp(self): self.enth_mol_phase_comp = Var( - self._params.phase_list, - self._params.component_list, - initialize=7e5, - units=pyunits.J/pyunits.mol, - doc='Phase-component molar specific enthalpies') + self._params.phase_list, + self._params.component_list, + initialize=7e5, + units=pyunits.J / pyunits.mol, + doc="Phase-component molar specific enthalpies", + ) def rule_enth_mol_phase_comp(b, p, j): - if p == 'Vap': + if p == "Vap": return b._enth_mol_comp_vap(j) else: return b._enth_mol_comp_liq(j) + self.eq_enth_mol_phase_comp = Constraint( - self._params.phase_list, - self._params.component_list, - rule=rule_enth_mol_phase_comp) + self._params.phase_list, + self._params.component_list, + rule=rule_enth_mol_phase_comp, + ) def _enth_mol_phase(self): self.enth_mol_phase = Var( - self._params.phase_list, - initialize=7e5, - units=pyunits.J/pyunits.mol, - doc='Phase molar specific enthalpies') + self._params.phase_list, + initialize=7e5, + units=pyunits.J / pyunits.mol, + doc="Phase molar specific enthalpies", + ) def rule_enth_mol_phase(b, p): return b.enth_mol_phase[p] == sum( - b.enth_mol_phase_comp[p, i] * - b.mole_frac_phase_comp[p, i] - for i in b._params.component_list) - self.eq_enth_mol_phase = Constraint(self._params.phase_list, - rule=rule_enth_mol_phase) + b.enth_mol_phase_comp[p, i] * b.mole_frac_phase_comp[p, i] + for i in b._params.component_list + ) + + self.eq_enth_mol_phase = Constraint( + self._params.phase_list, rule=rule_enth_mol_phase + ) def _entr_mol_phase_comp(self): self.entr_mol_phase_comp = Var( - self._params.phase_list, - self._params.component_list, - units=pyunits.J/pyunits.mol/pyunits.K, - doc='Phase-component molar specific entropies') + self._params.phase_list, + self._params.component_list, + units=pyunits.J / pyunits.mol / pyunits.K, + doc="Phase-component molar specific entropies", + ) def rule_entr_mol_phase_comp(b, p, j): - if p == 'Vap': + if p == "Vap": return b._entr_mol_comp_vap(j) else: return b._entr_mol_comp_liq(j) + self.eq_entr_mol_phase_comp = Constraint( - self._params.phase_list, - self._params.component_list, - rule=rule_entr_mol_phase_comp) + self._params.phase_list, + self._params.component_list, + rule=rule_entr_mol_phase_comp, + ) def _entr_mol_phase(self): self.entr_mol_phase = Var( - self._params.phase_list, - units=pyunits.J/pyunits.mol/pyunits.K, - doc='Phase molar specific enthropies') + self._params.phase_list, + units=pyunits.J / pyunits.mol / pyunits.K, + doc="Phase molar specific enthropies", + ) def rule_entr_mol_phase(b, p): return b.entr_mol_phase[p] == sum( - b.entr_mol_phase_comp[p, i] * - b.mole_frac_phase_comp[p, i] - for i in b._params.component_list) - self.eq_entr_mol_phase = Constraint(self._params.phase_list, - rule=rule_entr_mol_phase) - -# ----------------------------------------------------------------------------- -# General Methods + b.entr_mol_phase_comp[p, i] * b.mole_frac_phase_comp[p, i] + for i in b._params.component_list + ) + + self.eq_entr_mol_phase = Constraint( + self._params.phase_list, rule=rule_entr_mol_phase + ) + + # ----------------------------------------------------------------------------- + # General Methods def get_material_flow_terms(self, p, j): """Create material flow terms for control volume.""" if not self.is_property_constructed("material_flow_terms"): try: + def rule_material_flow_terms(blk, p, j): return blk.flow_mol_phase_comp[p, j] + self.material_flow_terms = Expression( self.params.phase_list, self.params.component_list, - rule=rule_material_flow_terms + rule=rule_material_flow_terms, ) except AttributeError: self.del_component(self.material_flow_terms) @@ -825,11 +859,12 @@ def get_enthalpy_flow_terms(self, p): """Create enthalpy flow terms.""" if not self.is_property_constructed("enthalpy_flow_terms"): try: + def rule_enthalpy_flow_terms(blk, p): return blk.flow_mol_phase[p] * blk.enth_mol_phase[p] + self.enthalpy_flow_terms = Expression( - self.params.phase_list, - rule=rule_enthalpy_flow_terms + self.params.phase_list, rule=rule_enthalpy_flow_terms ) except AttributeError: self.del_component(self.enthalpy_flow_terms) @@ -839,13 +874,14 @@ def get_material_density_terms(self, p, j): """Create material density terms.""" if not self.is_property_constructed("material_density_terms"): try: + def rule_material_density_terms(b, p, j): - return self.dens_mol_phase[p] * \ - self.mole_frac_phase_comp[p, j] + return self.dens_mol_phase[p] * self.mole_frac_phase_comp[p, j] + self.material_density_terms = Expression( self.params.phase_list, self.params.component_list, - rule=rule_material_density_terms + rule=rule_material_density_terms, ) except AttributeError: self.del_component(self.material_density_terms) @@ -859,12 +895,12 @@ def get_enthalpy_density_terms(self, p): """Create energy density terms.""" if not self.is_property_constructed("enthalpy_density_terms"): try: + def rule_energy_density_terms(b, p): - return (self.dens_mol_phase[p] * - self.energy_internal_mol_phase[p]) + return self.dens_mol_phase[p] * self.energy_internal_mol_phase[p] + self.energy_density_terms = Expression( - self.params.phase_list, - rule=rule_energy_density_terms + self.params.phase_list, rule=rule_energy_density_terms ) except AttributeError: self.del_component(self.energy_density_terms) @@ -881,20 +917,23 @@ def get_material_flow_basis(b): def define_state_vars(self): """Define state vars.""" - return {"flow_mol_phase_comp": self.flow_mol_phase_comp, - "temperature": self.temperature, - "pressure": self.pressure} + return { + "flow_mol_phase_comp": self.flow_mol_phase_comp, + "temperature": self.temperature, + "pressure": self.pressure, + } # Property package utility functions def calculate_bubble_point_temperature(self, clear_components=True): - """"To compute the bubble point temperature of the mixture.""" + """ "To compute the bubble point temperature of the mixture.""" if hasattr(self, "eq_temperature_bubble"): # Do not delete components if the block already has the components clear_components = False - calculate_variable_from_constraint(self.temperature_bubble, - self.eq_temperature_bubble) + calculate_variable_from_constraint( + self.temperature_bubble, self.eq_temperature_bubble + ) return self.temperature_bubble.value @@ -904,14 +943,15 @@ def calculate_bubble_point_temperature(self, clear_components=True): self.del_component(self.temperature_bubble) def calculate_dew_point_temperature(self, clear_components=True): - """"To compute the dew point temperature of the mixture.""" + """ "To compute the dew point temperature of the mixture.""" if hasattr(self, "eq_temperature_dew"): # Do not delete components if the block already has the components clear_components = False - calculate_variable_from_constraint(self.temperature_dew, - self.eq_temperature_dew) + calculate_variable_from_constraint( + self.temperature_dew, self.eq_temperature_dew + ) return self.temperature_dew.value @@ -923,14 +963,15 @@ def calculate_dew_point_temperature(self, clear_components=True): self.del_component(self.temperature_dew) def calculate_bubble_point_pressure(self, clear_components=True): - """"To compute the bubble point pressure of the mixture.""" + """ "To compute the bubble point pressure of the mixture.""" if hasattr(self, "eq_pressure_bubble"): # Do not delete components if the block already has the components clear_components = False - calculate_variable_from_constraint(self.pressure_bubble, - self.eq_pressure_bubble) + calculate_variable_from_constraint( + self.pressure_bubble, self.eq_pressure_bubble + ) return self.pressure_bubble.value @@ -942,14 +983,13 @@ def calculate_bubble_point_pressure(self, clear_components=True): self.del_component(self.pressure_bubble) def calculate_dew_point_pressure(self, clear_components=True): - """"To compute the dew point pressure of the mixture.""" + """ "To compute the dew point pressure of the mixture.""" if hasattr(self, "eq_pressure_dew"): # Do not delete components if the block already has the components clear_components = False - calculate_variable_from_constraint(self.pressure_dew, - self.eq_pressure_dew) + calculate_variable_from_constraint(self.pressure_dew, self.eq_pressure_dew) return self.pressure_dew.value @@ -960,42 +1000,55 @@ def calculate_dew_point_pressure(self, clear_components=True): self.del_component(self._p_sat_dewP) self.del_component(self.pressure_dew) -# ----------------------------------------------------------------------------- -# Bubble and Dew Points -# Ideal-Ideal properties allow for the simplifications below -# Other methods require more complex equations with shadow compositions + # ----------------------------------------------------------------------------- + # Bubble and Dew Points + # Ideal-Ideal properties allow for the simplifications below + # Other methods require more complex equations with shadow compositions -# For future work, propose the following: -# Core class writes a set of constraints Phi_L_i == Phi_V_i -# Phi_L_i and Phi_V_i make calls to submethods which add shadow compositions -# as needed + # For future work, propose the following: + # Core class writes a set of constraints Phi_L_i == Phi_V_i + # Phi_L_i and Phi_V_i make calls to submethods which add shadow compositions + # as needed def _temperature_bubble(self): - self.temperature_bubble = Param(initialize=33.0, - units=pyunits.K, - doc="Bubble point temperature") + self.temperature_bubble = Param( + initialize=33.0, units=pyunits.K, doc="Bubble point temperature" + ) def _temperature_dew(self): - self.temperature_dew = Var(initialize=298.15, - units=pyunits.K, - doc="Dew point temperature") + self.temperature_dew = Var( + initialize=298.15, units=pyunits.K, doc="Dew point temperature" + ) def rule_psat_dew(b, j): - return 1e5*pyunits.Pa*10**(b._params.pressure_sat_coeff_A[j] - - b._params.pressure_sat_coeff_B[j] / - (b.temperature_dew + - b._params.pressure_sat_coeff_C[j])) + return ( + 1e5 + * pyunits.Pa + * 10 + ** ( + b._params.pressure_sat_coeff_A[j] + - b._params.pressure_sat_coeff_B[j] + / (b.temperature_dew + b._params.pressure_sat_coeff_C[j]) + ) + ) try: # Try to build expression - self._p_sat_dewT = Expression(self._params.component_list, - rule=rule_psat_dew) + self._p_sat_dewT = Expression( + self._params.component_list, rule=rule_psat_dew + ) def rule_temp_dew(b): - return b.pressure * sum(b.mole_frac_comp[i] / - b._p_sat_dewT[i] - for i in ['toluene', 'benzene']) \ - - 1 == 0 + return ( + b.pressure + * sum( + b.mole_frac_comp[i] / b._p_sat_dewT[i] + for i in ["toluene", "benzene"] + ) + - 1 + == 0 + ) + self.eq_temperature_dew = Constraint(rule=rule_temp_dew) except AttributeError: # If expression fails, clean up so that DAE can try again later @@ -1005,31 +1058,44 @@ def rule_temp_dew(b): self.del_component(self._p_sat_dewT) def _pressure_bubble(self): - self.pressure_bubble = Param(initialize=1e8, - units=pyunits.Pa, - doc="Bubble point pressure") + self.pressure_bubble = Param( + initialize=1e8, units=pyunits.Pa, doc="Bubble point pressure" + ) def _pressure_dew(self): - self.pressure_dew = Var(initialize=298.15, - units=pyunits.Pa, - doc="Dew point pressure") + self.pressure_dew = Var( + initialize=298.15, units=pyunits.Pa, doc="Dew point pressure" + ) def rule_psat_dew(b, j): - return 1e5*pyunits.Pa*10**(b._params.pressure_sat_coeff_A[j] - - b._params.pressure_sat_coeff_B[j] / - (b.temperature + - b._params.pressure_sat_coeff_C[j])) + return ( + 1e5 + * pyunits.Pa + * 10 + ** ( + b._params.pressure_sat_coeff_A[j] + - b._params.pressure_sat_coeff_B[j] + / (b.temperature + b._params.pressure_sat_coeff_C[j]) + ) + ) try: # Try to build expression - self._p_sat_dewP = Expression(self._params.component_list, - rule=rule_psat_dew) + self._p_sat_dewP = Expression( + self._params.component_list, rule=rule_psat_dew + ) def rule_pressure_dew(b): - return b.pressure_dew * \ - sum(b.mole_frac_comp[i] / b._p_sat_dewP[i] - for i in ['toluene', 'benzene']) \ - - 1 == 0 + return ( + b.pressure_dew + * sum( + b.mole_frac_comp[i] / b._p_sat_dewP[i] + for i in ["toluene", "benzene"] + ) + - 1 + == 0 + ) + self.eq_pressure_dew = Constraint(rule=rule_pressure_dew) except AttributeError: # If expression fails, clean up so that DAE can try again later @@ -1038,179 +1104,198 @@ def rule_pressure_dew(b): self.del_component(self.pressure_dew) self.del_component(self._p_sat_dewP) -# ----------------------------------------------------------------------------- -# Liquid phase properties + # ----------------------------------------------------------------------------- + # Liquid phase properties def _dens_mol_liq(b): - return b.dens_mol_phase['Liq'] == 1e3*sum( - b.mole_frac_phase_comp['Liq', j] * - b._params.dens_liq_param_1[j] / - b._params.dens_liq_param_2[j] ** - (1 + (1-b.temperature / - b._params.dens_liq_param_3[j]) ** - b._params.dens_liq_param_4[j]) - for j in ['benzene', 'toluene']) + return b.dens_mol_phase["Liq"] == 1e3 * sum( + b.mole_frac_phase_comp["Liq", j] + * b._params.dens_liq_param_1[j] + / b._params.dens_liq_param_2[j] + ** ( + 1 + + (1 - b.temperature / b._params.dens_liq_param_3[j]) + ** b._params.dens_liq_param_4[j] + ) + for j in ["benzene", "toluene"] + ) def _fug_phase_comp(self): def fug_phase_comp_rule(b, p, i): if p == "Liq": - if i in ['hydrogen', 'methane']: - return b.mole_frac_phase_comp['Liq', i] + if i in ["hydrogen", "methane"]: + return b.mole_frac_phase_comp["Liq", i] else: - return b.pressure_sat[i] * b.mole_frac_phase_comp['Liq', i] + return b.pressure_sat[i] * b.mole_frac_phase_comp["Liq", i] else: - if i in ['hydrogen', 'methane']: + if i in ["hydrogen", "methane"]: return 1e-6 else: - return b.mole_frac_phase_comp['Vap', i] * b.pressure - + return b.mole_frac_phase_comp["Vap", i] * b.pressure + self.fug_phase_comp = Expression( self._params.phase_list, self._params.component_list, - rule=fug_phase_comp_rule + rule=fug_phase_comp_rule, ) def _pressure_sat(self): - self.pressure_sat = Var(self._params.component_list, - initialize=101325, - units=pyunits.Pa, - doc="Vapor pressure") + self.pressure_sat = Var( + self._params.component_list, + initialize=101325, + units=pyunits.Pa, + doc="Vapor pressure", + ) def rule_P_sat(b, j): - return ((log10(b.pressure_sat[j]/pyunits.Pa*1e-5) - - b._params.pressure_sat_coeff_A[j]) * - (b._teq + b._params.pressure_sat_coeff_C[j])) == \ - -b._params.pressure_sat_coeff_B[j] - self.eq_pressure_sat = Constraint(self._params.component_list, - rule=rule_P_sat) + return ( + ( + log10(b.pressure_sat[j] / pyunits.Pa * 1e-5) + - b._params.pressure_sat_coeff_A[j] + ) + * (b._teq + b._params.pressure_sat_coeff_C[j]) + ) == -b._params.pressure_sat_coeff_B[j] + + self.eq_pressure_sat = Constraint(self._params.component_list, rule=rule_P_sat) def _enth_mol_comp_liq(b, j): - return b.enth_mol_phase_comp['Liq', j] * 1E3 == \ - ((b._params.cp_ig_5['Liq', j] / 5) * - (b.temperature**5 - b._params.temperature_ref**5) - + (b._params.cp_ig_4['Liq', j] / 4) * - (b.temperature**4 - b._params.temperature_ref**4) - + (b._params.cp_ig_3['Liq', j] / 3) * - (b.temperature**3 - b._params.temperature_ref**3) - + (b._params.cp_ig_2['Liq', j] / 2) * - (b.temperature**2 - b._params.temperature_ref**2) - + b._params.cp_ig_1['Liq', j] * - (b.temperature - b._params.temperature_ref)) + return b.enth_mol_phase_comp["Liq", j] * 1e3 == ( + (b._params.cp_ig_5["Liq", j] / 5) + * (b.temperature**5 - b._params.temperature_ref**5) + + (b._params.cp_ig_4["Liq", j] / 4) + * (b.temperature**4 - b._params.temperature_ref**4) + + (b._params.cp_ig_3["Liq", j] / 3) + * (b.temperature**3 - b._params.temperature_ref**3) + + (b._params.cp_ig_2["Liq", j] / 2) + * (b.temperature**2 - b._params.temperature_ref**2) + + b._params.cp_ig_1["Liq", j] * (b.temperature - b._params.temperature_ref) + ) def _entr_mol_comp_liq(b, j): - return b.entr_mol_phase_comp['Liq', j] * 1E3 == ( - ((b._params.cp_ig_5['Liq', j] / 4) * - (b.temperature**4 - b._params.temperature_ref**4) - + (b._params.cp_ig_4['Liq', j] / 3) * - (b.temperature**3 - b._params.temperature_ref**3) - + (b._params.cp_ig_3['Liq', j] / 2) * - (b.temperature**2 - b._params.temperature_ref**2) - + b._params.cp_ig_2['Liq', j] * - (b.temperature - b._params.temperature_ref) - + b._params.cp_ig_1['Liq', j] * - log(b.temperature / b._params.temperature_ref)) - - const.gas_constant * - log(b.mole_frac_phase_comp['Liq', j]*b.pressure / - b._params.pressure_ref)) - -# ----------------------------------------------------------------------------- -# Vapour phase properties + return b.entr_mol_phase_comp["Liq", j] * 1e3 == ( + ( + (b._params.cp_ig_5["Liq", j] / 4) + * (b.temperature**4 - b._params.temperature_ref**4) + + (b._params.cp_ig_4["Liq", j] / 3) + * (b.temperature**3 - b._params.temperature_ref**3) + + (b._params.cp_ig_3["Liq", j] / 2) + * (b.temperature**2 - b._params.temperature_ref**2) + + b._params.cp_ig_2["Liq", j] + * (b.temperature - b._params.temperature_ref) + + b._params.cp_ig_1["Liq", j] + * log(b.temperature / b._params.temperature_ref) + ) + - const.gas_constant + * log( + b.mole_frac_phase_comp["Liq", j] * b.pressure / b._params.pressure_ref + ) + ) + + # ----------------------------------------------------------------------------- + # Vapour phase properties def _dens_mol_vap(b): - return b.pressure == (b.dens_mol_phase['Vap'] * - const.gas_constant * - b.temperature) + return b.pressure == ( + b.dens_mol_phase["Vap"] * const.gas_constant * b.temperature + ) def _dh_vap(self): # heat of vaporization - add_object_reference(self, "dh_vap", - self._params.dh_vap) + add_object_reference(self, "dh_vap", self._params.dh_vap) def _ds_vap(self): # entropy of vaporization = dh_Vap/T_boil # TODO : something more rigorous would be nice - self.ds_vap = Var(self._params.component_list, - initialize=86, - units=pyunits.J/pyunits.mol/pyunits.K, - doc="Entropy of vaporization") + self.ds_vap = Var( + self._params.component_list, + initialize=86, + units=pyunits.J / pyunits.mol / pyunits.K, + doc="Entropy of vaporization", + ) def rule_ds_vap(b, j): - return b.dh_vap[j] == (b.ds_vap[j] * - b._params.temperature_boil[j]) - self.eq_ds_vap = Constraint(self._params.component_list, - rule=rule_ds_vap) + return b.dh_vap[j] == (b.ds_vap[j] * b._params.temperature_boil[j]) + + self.eq_ds_vap = Constraint(self._params.component_list, rule=rule_ds_vap) def _enth_mol_comp_vap(b, j): - return b.enth_mol_phase_comp['Vap', j] == b.dh_vap[j] + \ - ((b._params.cp_ig_5['Vap', j] / 5) * - (b.temperature**5 - b._params.temperature_ref**5) - + (b._params.cp_ig_4['Vap', j] / 4) * - (b.temperature**4 - b._params.temperature_ref**4) - + (b._params.cp_ig_3['Vap', j] / 3) * - (b.temperature**3 - b._params.temperature_ref**3) - + (b._params.cp_ig_2['Vap', j] / 2) * - (b.temperature**2 - b._params.temperature_ref**2) - + b._params.cp_ig_1['Vap', j] * - (b.temperature - b._params.temperature_ref)) + return b.enth_mol_phase_comp["Vap", j] == b.dh_vap[j] + ( + (b._params.cp_ig_5["Vap", j] / 5) + * (b.temperature**5 - b._params.temperature_ref**5) + + (b._params.cp_ig_4["Vap", j] / 4) + * (b.temperature**4 - b._params.temperature_ref**4) + + (b._params.cp_ig_3["Vap", j] / 3) + * (b.temperature**3 - b._params.temperature_ref**3) + + (b._params.cp_ig_2["Vap", j] / 2) + * (b.temperature**2 - b._params.temperature_ref**2) + + b._params.cp_ig_1["Vap", j] * (b.temperature - b._params.temperature_ref) + ) def _entr_mol_comp_vap(b, j): - return b.entr_mol_phase_comp['Vap', j] == ( - b.ds_vap[j] + - ((b._params.cp_ig_5['Vap', j] / 4) * - (b.temperature**4 - b._params.temperature_ref**4) - + (b._params.cp_ig_4['Vap', j] / 3) * - (b.temperature**3 - b._params.temperature_ref**3) - + (b._params.cp_ig_3['Vap', j] / 2) * - (b.temperature**2 - b._params.temperature_ref**2) - + b._params.cp_ig_2['Vap', j] * - (b.temperature - b._params.temperature_ref) - + b._params.cp_ig_1['Vap', j] * - log(b.temperature / b._params.temperature_ref)) - - const.gas_constant * - log(b.mole_frac_phase_comp['Vap', j]*b.pressure / - b._params.pressure_ref)) + return b.entr_mol_phase_comp["Vap", j] == ( + b.ds_vap[j] + + ( + (b._params.cp_ig_5["Vap", j] / 4) + * (b.temperature**4 - b._params.temperature_ref**4) + + (b._params.cp_ig_4["Vap", j] / 3) + * (b.temperature**3 - b._params.temperature_ref**3) + + (b._params.cp_ig_3["Vap", j] / 2) + * (b.temperature**2 - b._params.temperature_ref**2) + + b._params.cp_ig_2["Vap", j] + * (b.temperature - b._params.temperature_ref) + + b._params.cp_ig_1["Vap", j] + * log(b.temperature / b._params.temperature_ref) + ) + - const.gas_constant + * log( + b.mole_frac_phase_comp["Vap", j] * b.pressure / b._params.pressure_ref + ) + ) def calculate_scaling_factors(self): # Get default scale factors super().calculate_scaling_factors() is_two_phase = len(self._params.phase_list) == 2 - sf_flow = iscale.get_scaling_factor( - self.flow_mol, default=1, warning=True) - sf_T = iscale.get_scaling_factor( - self.temperature, default=1, warning=True) - sf_P = iscale.get_scaling_factor( - self.pressure, default=1, warning=True) + sf_flow = iscale.get_scaling_factor(self.flow_mol, default=1, warning=True) + sf_T = iscale.get_scaling_factor(self.temperature, default=1, warning=True) + sf_P = iscale.get_scaling_factor(self.pressure, default=1, warning=True) if self.is_property_constructed("_teq"): iscale.set_scaling_factor(self._teq, sf_T) if self.is_property_constructed("_teq_constraint"): iscale.constraint_scaling_transform( - self._teq_constraint, sf_T, overwrite=False) + self._teq_constraint, sf_T, overwrite=False + ) if self.is_property_constructed("_t1"): iscale.set_scaling_factor(self._t1, sf_T) if self.is_property_constructed("_t1_constraint"): iscale.constraint_scaling_transform( - self._t1_constraint, sf_T, overwrite=False) + self._t1_constraint, sf_T, overwrite=False + ) if self.is_property_constructed("_mole_frac_pdew"): iscale.set_scaling_factor(self._mole_frac_pdew, 1e3) iscale.constraint_scaling_transform( - self._sum_mole_frac_pdew, 1e3, overwrite=False) + self._sum_mole_frac_pdew, 1e3, overwrite=False + ) if self.is_property_constructed("total_flow_balance"): iscale.constraint_scaling_transform( - self.total_flow_balance, sf_flow, overwrite=False) + self.total_flow_balance, sf_flow, overwrite=False + ) if self.is_property_constructed("component_flow_balances"): for i, c in self.component_flow_balances.items(): if is_two_phase: s = iscale.get_scaling_factor( - self.mole_frac_comp[i], default=1, warning=True) + self.mole_frac_comp[i], default=1, warning=True + ) s *= sf_flow iscale.constraint_scaling_transform(c, s, overwrite=False) else: s = iscale.get_scaling_factor( - self.mole_frac_comp[i], default=1, warning=True) + self.mole_frac_comp[i], default=1, warning=True + ) iscale.constraint_scaling_transform(c, s, overwrite=False) if self.is_property_constructed("dens_mol_phase"): @@ -1220,37 +1305,37 @@ def calculate_scaling_factors(self): if self.is_property_constructed("dens_mass_phase"): for p, c in self.eq_dens_mass_phase.items(): sf = iscale.get_scaling_factor( - self.dens_mass_phase[p], default=1, warning=True) + self.dens_mass_phase[p], default=1, warning=True + ) iscale.constraint_scaling_transform(c, sf, overwrite=False) if self.is_property_constructed("enth_mol_phase"): for p, c in self.eq_enth_mol_phase.items(): sf = iscale.get_scaling_factor( - self.enth_mol_phase[p], default=1, warning=True) + self.enth_mol_phase[p], default=1, warning=True + ) iscale.constraint_scaling_transform(c, sf, overwrite=False) if self.is_property_constructed("enth_mol"): - sf = iscale.get_scaling_factor( - self.enth_mol, default=1, warning=True) + sf = iscale.get_scaling_factor(self.enth_mol, default=1, warning=True) sf *= sf_flow - iscale.constraint_scaling_transform( - self.eq_enth_mol, sf, overwrite=False) + iscale.constraint_scaling_transform(self.eq_enth_mol, sf, overwrite=False) if self.is_property_constructed("entr_mol_phase"): for p, c in self.eq_entr_mol_phase.items(): sf = iscale.get_scaling_factor( - self.entr_mol_phase[p], default=1, warning=True) + self.entr_mol_phase[p], default=1, warning=True + ) iscale.constraint_scaling_transform(c, sf, overwrite=False) if self.is_property_constructed("entr_mol"): - sf = iscale.get_scaling_factor( - self.entr_mol, default=1, warning=True) + sf = iscale.get_scaling_factor(self.entr_mol, default=1, warning=True) sf *= sf_flow - iscale.constraint_scaling_transform( - self.eq_entr_mol, sf, overwrite=False) + iscale.constraint_scaling_transform(self.eq_entr_mol, sf, overwrite=False) if self.is_property_constructed("gibbs_mol_phase"): for p, c in self.eq_gibbs_mol_phase.items(): sf = iscale.get_scaling_factor( - self.gibbs_mol_phase[p], default=1, warning=True) + self.gibbs_mol_phase[p], default=1, warning=True + ) iscale.constraint_scaling_transform(c, sf, overwrite=False) diff --git a/idaes_examples/mod/tut/visualizer_tutorial.py b/idaes_examples/mod/tut/visualizer_tutorial.py index 8622c69e..0bcd0a71 100644 --- a/idaes_examples/mod/tut/visualizer_tutorial.py +++ b/idaes_examples/mod/tut/visualizer_tutorial.py @@ -48,6 +48,8 @@ from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption from idaes.core.util.model_statistics import degrees_of_freedom +from idaes.core.solvers import get_solver +from idaes.core.util.exceptions import InitializationError try: import idaes_ui @@ -289,7 +291,13 @@ def initialize_model(m: ConcreteModel) -> ConcreteModel: seq.set_guesses_for(m.fs.H101.inlet, tear_guesses) def initialize_unit(unit): - unit.initialize(outlvl=idaeslog.DEBUG) + try: + initializer = unit.default_initializer() + initializer.initialize(unit, output_level=idaeslog.INFO) + except InitializationError: + solver=get_solver() + solver.solve(unit) + seq.run(m, initialize_unit) return m diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation.ipynb index ea0e1dd1..a8b9ba91 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation.ipynb @@ -234,6 +234,7 @@ "from idaes.core.util.initialization import propagate_state\n", "from idaes.core.solvers import get_solver\n", "import idaes.core.util.scaling as iscale\n", + "from idaes.core.util.exceptions import InitializationError\n", "\n", "# Import idaes logger to set output levels\n", "import idaes.logger as idaeslog" @@ -737,7 +738,15 @@ "cell_type": "code", "execution_count": 28, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "29\n" + ] + } + ], "source": [ "print(degrees_of_freedom(m))" ] @@ -952,7 +961,42 @@ "cell_type": "code", "execution_count": 38, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n" + ] + } + ], "source": [ "# Set scaling factors for heat duty, reaction extent and volume\n", "iscale.set_scaling_factor(m.fs.H101.control_volume.heat, 1e-2)\n", @@ -1002,7 +1046,15 @@ "solution" ] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + } + ], "source": [ "# Todo: Check the degrees of freedom\n", "print(degrees_of_freedom(m))" @@ -1061,7 +1113,15 @@ "cell_type": "code", "execution_count": 43, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fs.s03\n" + ] + } + ], "source": [ "for o in heuristic_tear_set:\n", " print(o.name)" @@ -1078,7 +1138,20 @@ "cell_type": "code", "execution_count": 44, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fs.H101\n", + "fs.R101\n", + "fs.F101\n", + "fs.S101\n", + "fs.C101\n", + "fs.M101\n" + ] + } + ], "source": [ "for o in order:\n", " print(o[0].name)" @@ -1110,7 +1183,7 @@ " (0, \"Liq\", \"hydrogen\"): 1e-5,\n", " (0, \"Liq\", \"methane\"): 1e-5,\n", " },\n", - " \"temperature\": {0: 303},\n", + " \"temperature\": {0: 303.2},\n", " \"pressure\": {0: 350000},\n", "}\n", "\n", @@ -1122,7 +1195,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we need to tell the tool how to initialize a particular unit. We will be writing a python function which takes in a \"unit\" and calls the initialize method on that unit." + "Next, we need to tell the tool how to initialize a particular unit. We will be writing a python function which takes in a \"unit\" and calls the initialize method on that unit. For the initialization, we will import a Block Triangularization Initializer which decomposes the model into a set of subproblems. These subproblems are solved using a block triangularization transformation before applying a simple Newton or user-selected solver. Methods such as block triangularization often solve faster and yield more reliable behavior than heuristic methods, but sometime struggle to decompose models with strongly coupled equations (e.g. column models, systems with counter-current flow, vapor-liquid equilibrium)." ] }, { @@ -1132,7 +1205,15 @@ "outputs": [], "source": [ "def function(unit):\n", - " unit.initialize(outlvl=idaeslog.INFO)" + " # Try initializing using default initializer, \n", + " # if it fails (probably due to scaling) try for the second time\n", + " try:\n", + " initializer = unit.default_initializer()\n", + " initializer.initialize(unit, output_level=idaeslog.INFO)\n", + " except InitializationError:\n", + " solver=get_solver()\n", + " solver.solve(unit)\n", + " " ] }, { @@ -1148,7 +1229,132 @@ "metadata": { "scrolled": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:14 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 12\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 11\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 11\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "WARNING: Wegstein failed to converge in 3 iterations\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:33 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 5 optimal - .\n" + ] + } + ], "source": [ "seq.run(m, function)" ] @@ -1167,7 +1373,91 @@ "cell_type": "code", "execution_count": 48, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 6\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 1097\n", + "Number of nonzeros in inequality constraint Jacobian.: 0\n", + "Number of nonzeros in Lagrangian Hessian.............: 877\n", + "\n", + "Total number of variables............................: 363\n", + " variables with only lower bounds: 8\n", + " variables with lower and upper bounds: 155\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 363\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.82e+04 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 0.0000000e+00 8.69e+03 1.44e+03 -1.0 2.00e+04 - 9.71e-01 4.67e-01H 1\n", + " 2 0.0000000e+00 1.29e+03 1.56e+03 -1.0 1.60e+04 - 9.79e-01 4.90e-01h 1\n", + " 3 0.0000000e+00 1.18e+03 1.55e+05 -1.0 1.40e+04 - 9.90e-01 4.99e-01h 1\n", + " 4 0.0000000e+00 5.46e+02 2.32e+09 -1.0 8.42e+03 - 1.00e+00 9.82e-01h 1\n", + " 5 0.0000000e+00 5.46e+03 3.66e+10 -1.0 5.97e+02 - 1.00e+00 9.90e-01h 1\n", + " 6 0.0000000e+00 1.21e+03 8.01e+09 -1.0 5.75e+00 - 1.00e+00 1.00e+00h 1\n", + " 7 0.0000000e+00 6.41e+00 3.87e+07 -1.0 1.53e-03 - 1.00e+00 1.00e+00f 1\n", + " 8 0.0000000e+00 1.96e-04 9.36e+02 -1.0 7.28e-06 - 1.00e+00 1.00e+00h 1\n", + " 9 0.0000000e+00 2.24e-08 4.99e-01 -3.8 5.92e-08 - 1.00e+00 1.00e+00h 1\n", + "Cannot recompute multipliers for feasibility problem. Error in eq_mult_calculator\n", + "\n", + "Number of Iterations....: 9\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Dual infeasibility......: 1.5042487592972509e+04 1.5042487592972509e+04\n", + "Constraint violation....: 2.9103830456733704e-11 2.2351741790771484e-08\n", + "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Overall NLP error.......: 2.9103830456733704e-11 1.5042487592972509e+04\n", + "\n", + "\n", + "Number of objective function evaluations = 11\n", + "Number of objective gradient evaluations = 10\n", + "Number of equality constraint evaluations = 11\n", + "Number of inequality constraint evaluations = 0\n", + "Number of equality constraint Jacobian evaluations = 10\n", + "Number of inequality constraint Jacobian evaluations = 0\n", + "Number of Lagrangian Hessian evaluations = 9\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.011\n", + "Total CPU secs in NLP function evaluations = 0.001\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + } + ], "source": [ "# Create the solver object\n", "solver = get_solver()\n", @@ -1215,7 +1505,617 @@ "cell_type": "code", "execution_count": 50, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_flow_reflux[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_mole_frac_reflux[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_mole_frac_reflux[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_flow_vapor_reboil[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_mole_frac_vapor_reboil[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_mole_frac_vapor_reboil[0.0,toluene]\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101: Begin initialization.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray: Begin initialization.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: State Released.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: State Released.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: State Released.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: State Released.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume: Initialization Complete\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser: Initialization Complete, optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: State Released.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: State Released.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler: Initialization Complete, optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: State Released.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1]: Begin initialization.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: State Released.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: State Released.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[2]: Begin initialization.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: State Released.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: State Released.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: State Released.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3]: Begin initialization.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: State Released.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: State Released.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: State Released.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4]: Begin initialization.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: State Released.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: State Released.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6]: Begin initialization.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: State Released.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: State Released.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[7]: Begin initialization.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: State Released.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: State Released.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: State Released.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8]: Begin initialization.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: State Released.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: State Released.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: State Released.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9]: Begin initialization.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: State Released.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: State Released.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: State Released.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10]: Begin initialization.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: State Released.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Rectification section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Stripping section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Column section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: State Released.\n", + "2024-08-28 18:39:02 [INFO] idaes.init.fs.D101: Column section + Condenser initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:02 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: State Released.\n", + "2024-08-28 18:39:03 [INFO] idaes.init.fs.D101: Column section + Condenser + Reboiler initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:03 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: State Released.\n" + ] + } + ], "source": [ "# Add distillation column to the flowsheet\n", "m.fs.D101 = TrayColumn(\n", @@ -1314,7 +2214,101 @@ "cell_type": "code", "execution_count": 53, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 7\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 4042\n", + "Number of nonzeros in inequality constraint Jacobian.: 0\n", + "Number of nonzeros in Lagrangian Hessian.............: 2376\n", + "\n", + "Total number of variables............................: 1169\n", + " variables with only lower bounds: 112\n", + " variables with lower and upper bounds: 365\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 1169\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.83e+04 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 0.0000000e+00 8.70e+03 1.50e+03 -1.0 3.69e+04 - 9.71e-01 4.62e-01H 1\n", + " 2 0.0000000e+00 1.53e+03 1.56e+03 -1.0 6.75e+03 - 9.77e-01 4.89e-01h 1\n", + " 3 0.0000000e+00 1.37e+03 1.55e+05 -1.0 9.37e+03 - 9.90e-01 4.99e-01h 1\n", + " 4 0.0000000e+00 6.14e+02 2.31e+09 -1.0 6.09e+03 - 1.00e+00 9.81e-01h 1\n", + " 5 0.0000000e+00 5.32e+03 3.62e+10 -1.0 5.56e+02 - 1.00e+00 9.90e-01h 1\n", + " 6 0.0000000e+00 1.16e+03 7.80e+09 -1.0 5.36e+00 - 1.00e+00 1.00e+00h 1\n", + " 7 0.0000000e+00 5.96e+00 3.64e+07 -1.0 1.47e-03 - 1.00e+00 1.00e+00f 1\n", + " 8 0.0000000e+00 1.69e-04 8.15e+02 -1.0 6.77e-06 - 1.00e+00 1.00e+00h 1\n", + " 9 0.0000000e+00 7.45e-09 6.64e-03 -3.8 2.00e-07 - 1.00e+00 1.00e+00h 1\n", + "Cannot recompute multipliers for feasibility problem. Error in eq_mult_calculator\n", + "\n", + "Number of Iterations....: 9\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Dual infeasibility......: 1.5042483516409773e+04 1.5042483516409773e+04\n", + "Constraint violation....: 2.9103830456733704e-11 7.4505805969238281e-09\n", + "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Overall NLP error.......: 2.9103830456733704e-11 1.5042483516409773e+04\n", + "\n", + "\n", + "Number of objective function evaluations = 11\n", + "Number of objective gradient evaluations = 10\n", + "Number of equality constraint evaluations = 11\n", + "Number of inequality constraint evaluations = 0\n", + "Number of equality constraint Jacobian evaluations = 10\n", + "Number of inequality constraint Jacobian evaluations = 0\n", + "Number of Lagrangian Hessian evaluations = 9\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.083\n", + "Total CPU secs in NLP function evaluations = 0.013\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'Problem': [{'Lower bound': -inf, 'Upper bound': inf, 'Number of objectives': 1, 'Number of constraints': 1169, 'Number of variables': 1169, 'Sense': 'unknown'}], 'Solver': [{'Status': 'ok', 'Message': 'Ipopt 3.13.2\\\\x3a Optimal Solution Found', 'Termination condition': 'optimal', 'Id': 0, 'Error rc': 0, 'Time': 0.2022566795349121}], 'Solution': [OrderedDict([('number of solutions', 0), ('number of solutions displayed', 0)])]}" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "solver.solve(m, tee=True)" ] @@ -1348,7 +2342,26 @@ "cell_type": "code", "execution_count": 55, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total cost = $ 442301.47075252194\n", + "operating cost = $ 427596.73056805483\n", + "capital cost = $ 14704.740184467111\n", + "\n", + "Distillate flowrate = 0.16196898920633368 mol/s\n", + "Benzene purity = 89.4916166580088 %\n", + "Residue flowrate = 0.10515007120697904 mol/s\n", + "Toluene purity = 43.32260291055251 %\n", + "\n", + "Conversion = 75.0 %\n", + "\n", + "Overhead benzene loss in F101 = 42.161938483603194 %\n" + ] + } + ], "source": [ "print(\"total cost = $\", value(m.fs.capital_cost) + value(m.fs.operating_cost))\n", "print(\"operating cost = $\", value(m.fs.operating_cost))\n", @@ -1390,7 +2403,16 @@ "testing" ] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "427596.73056805483\n", + "14704.740184467111\n" + ] + } + ], "source": [ "import pytest\n", "\n", @@ -1411,7 +2433,40 @@ "cell_type": "code", "execution_count": 57, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "====================================================================================\n", + "Unit : fs.R101 Time: 0.0\n", + "------------------------------------------------------------------------------------\n", + " Unit Performance\n", + "\n", + " Variables: \n", + "\n", + " Key : Value : Units : Fixed : Bounds\n", + " Heat Duty : 0.0000 : watt : True : (None, None)\n", + " Volume : 0.14705 : meter ** 3 : False : (None, None)\n", + "\n", + "------------------------------------------------------------------------------------\n", + " Stream Table\n", + " Units Inlet Outlet \n", + " flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.2993e-07\n", + " flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 8.4147e-07\n", + " flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-12\n", + " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-12\n", + " flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.11936 0.35374\n", + " flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.31252 0.078129\n", + " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.0377 1.2721\n", + " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.56260 0.32821\n", + " temperature kelvin 600.00 771.85\n", + " pressure pascal 3.5000e+05 3.5000e+05\n", + "====================================================================================\n" + ] + } + ], "source": [ "m.fs.R101.report()" ] @@ -1427,7 +2482,40 @@ "cell_type": "code", "execution_count": 58, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "====================================================================================\n", + "Unit : fs.F101 Time: 0.0\n", + "------------------------------------------------------------------------------------\n", + " Unit Performance\n", + "\n", + " Variables: \n", + "\n", + " Key : Value : Units : Fixed : Bounds\n", + " Heat Duty : -70343. : watt : False : (None, None)\n", + " Pressure Change : 0.0000 : pascal : True : (None, None)\n", + "\n", + "------------------------------------------------------------------------------------\n", + " Stream Table\n", + " Units Inlet Vapor Outlet Liquid Outlet\n", + " flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.0000e-08 0.20460 \n", + " flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 1.0000e-08 0.062520 \n", + " flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 2.6712e-07 \n", + " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 2.6712e-07 \n", + " flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.35374 0.14915 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.078129 0.015610 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2721 1.2721 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.32821 0.32821 1.0000e-08 \n", + " temperature kelvin 771.85 325.00 325.00 \n", + " pressure pascal 3.5000e+05 3.5000e+05 3.5000e+05 \n", + "====================================================================================\n" + ] + } + ], "source": [ "m.fs.F101.report()" ] @@ -1448,7 +2536,25 @@ "cell_type": "code", "execution_count": 59, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Units Reactor Light Gases\n", + "flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 \n", + "flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.35374 0.14915 \n", + "flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.078129 0.015610 \n", + "flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2721 1.2721 \n", + "flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.32821 0.32821 \n", + "temperature kelvin 771.85 325.00 \n", + "pressure pascal 3.5000e+05 3.5000e+05 \n" + ] + } + ], "source": [ "from idaes.core.util.tables import (\n", " create_stream_table_dataframe,\n", @@ -1755,7 +2861,117 @@ "cell_type": "code", "execution_count": 71, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 3\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 4073\n", + "Number of nonzeros in inequality constraint Jacobian.: 6\n", + "Number of nonzeros in Lagrangian Hessian.............: 2391\n", + "\n", + "Total number of variables............................: 1176\n", + " variables with only lower bounds: 113\n", + " variables with lower and upper bounds: 372\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 1169\n", + "Total number of inequality constraints...............: 3\n", + " inequality constraints with only lower bounds: 2\n", + " inequality constraints with lower and upper bounds: 0\n", + " inequality constraints with only upper bounds: 1\n", + "\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 0 4.4230147e+05 2.99e+05 9.90e+01 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 4.3753585e+05 2.91e+05 1.28e+02 -1.0 3.09e+06 - 3.58e-01 2.40e-02f 1\n", + " 2 4.3545100e+05 2.78e+05 1.55e+02 -1.0 1.78e+06 - 3.31e-01 4.74e-02h 1\n", + " 3 4.2822311e+05 2.20e+05 4.50e+02 -1.0 2.99e+06 - 2.95e-02 1.35e-01h 1\n", + " 4 4.2249096e+05 1.45e+05 1.43e+03 -1.0 7.01e+06 - 5.14e-01 2.03e-01h 1\n", + " 5 4.2194364e+05 8.17e+04 1.70e+04 -1.0 6.06e+06 - 5.97e-01 4.28e-01h 1\n", + " 6 4.2602765e+05 4.55e+04 1.10e+06 -1.0 4.32e+06 - 9.26e-01 5.07e-01h 1\n", + " 7 4.3776643e+05 2.03e+04 6.44e+09 -1.0 2.42e+06 - 9.90e-01 9.47e-01h 1\n", + " 8 4.3846260e+05 1.92e+04 6.05e+09 -1.0 4.42e+05 - 5.40e-01 5.74e-02h 1\n", + " 9 4.4529853e+05 4.05e+04 4.66e+10 -1.0 2.47e+05 - 9.96e-01 9.90e-01h 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 10 4.4906283e+05 9.76e+03 1.10e+10 -1.0 1.12e+03 -4.0 1.26e-01 7.45e-01h 1\n", + " 11 4.5079086e+05 1.19e+03 1.54e+09 -1.0 5.63e+02 -4.5 3.77e-01 1.00e+00h 1\n", + " 12 4.5024224e+05 2.66e+00 3.67e+06 -1.0 6.61e+01 -5.0 1.00e+00 1.00e+00f 1\n", + " 13 4.4946170e+05 5.64e-01 9.29e+05 -1.0 1.81e+02 -5.4 1.00e+00 7.88e-01f 1\n", + " 14 4.4916780e+05 8.48e+00 1.62e+05 -1.0 2.83e+02 -5.9 1.00e+00 1.00e+00f 1\n", + " 15 4.4899127e+05 4.83e+00 9.07e+04 -1.0 1.01e+02 -6.4 1.00e+00 4.40e-01f 2\n", + " 16 4.4886718e+05 7.00e-01 4.61e+02 -1.0 2.35e+02 -6.9 1.00e+00 1.00e+00f 1\n", + " 17 4.4800159e+05 1.39e+02 4.52e+06 -3.8 1.17e+03 -7.3 9.79e-01 9.37e-01f 1\n", + " 18 4.4672196e+05 9.59e+02 1.22e+06 -3.8 4.55e+03 -7.8 1.00e+00 9.43e-01f 1\n", + " 19 4.4401667e+05 7.75e+03 1.55e+05 -3.8 1.08e+04 -8.3 1.00e+00 1.00e+00f 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 20 4.4185035e+05 1.91e+04 1.36e+04 -3.8 1.33e+04 -8.8 1.00e+00 1.00e+00h 1\n", + " 21 4.4241001e+05 3.52e+03 5.96e+03 -3.8 2.94e+03 -9.2 1.00e+00 1.00e+00h 1\n", + " 22 4.4185237e+05 7.82e+00 2.91e+02 -3.8 7.13e+03 -9.7 2.39e-01 1.00e+00h 1\n", + " 23 4.4124091e+05 1.53e+01 3.11e+02 -3.8 4.82e+04 -10.2 8.59e-01 1.36e-01f 1\n", + " 24 4.4137379e+05 1.80e+00 2.91e+02 -3.8 1.41e+04 - 1.95e-01 1.00e+00h 1\n", + " 25 4.3862833e+05 1.70e+03 9.48e+04 -3.8 1.57e+07 - 1.29e-03 9.10e-02f 1\n", + " 26 4.3883308e+05 1.49e+03 8.46e+04 -3.8 1.02e+06 - 1.00e+00 1.35e-01h 1\n", + " 27 4.3885472e+05 2.18e+01 3.40e+03 -3.8 1.38e+05 - 1.00e+00 1.00e+00h 1\n", + " 28 4.3884160e+05 5.90e-02 6.38e+01 -3.8 8.66e+03 - 1.00e+00 1.00e+00h 1\n", + " 29 4.3884157e+05 6.48e-07 4.63e-04 -3.8 2.89e+01 - 1.00e+00 1.00e+00h 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 30 4.3883990e+05 3.57e-01 2.38e+03 -5.7 8.19e+02 - 1.00e+00 1.00e+00f 1\n", + " 31 4.3883992e+05 3.50e-07 7.79e-06 -5.7 3.55e-01 - 1.00e+00 1.00e+00h 1\n", + " 32 4.3883990e+05 5.47e-05 3.63e-01 -8.0 1.01e+01 - 1.00e+00 1.00e+00h 1\n", + " 33 4.3883990e+05 2.24e-08 1.46e-07 -8.0 5.42e-05 - 1.00e+00 1.00e+00h 1\n", + "\n", + "Number of Iterations....: 33\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 4.3883989842628603e+02 4.3883989842628600e+05\n", + "Dual infeasibility......: 1.4600704448671754e-07 1.4600704448671753e-04\n", + "Constraint violation....: 2.9103830456733704e-11 2.2351741790771484e-08\n", + "Complementarity.........: 9.0909948039799681e-09 9.0909948039799686e-06\n", + "Overall NLP error.......: 9.0909948039799681e-09 1.4600704448671753e-04\n", + "\n", + "\n", + "Number of objective function evaluations = 35\n", + "Number of objective gradient evaluations = 34\n", + "Number of equality constraint evaluations = 35\n", + "Number of inequality constraint evaluations = 35\n", + "Number of equality constraint Jacobian evaluations = 34\n", + "Number of inequality constraint Jacobian evaluations = 34\n", + "Number of Lagrangian Hessian evaluations = 33\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.164\n", + "Total CPU secs in NLP function evaluations = 0.020\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + } + ], "source": [ "results = solver.solve(m, tee=True)" ] @@ -1789,7 +3005,26 @@ "cell_type": "code", "execution_count": 73, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total cost = $ 438839.898426286\n", + "operating cost = $ 408883.5314830889\n", + "capital cost = $ 29956.3669431971\n", + "\n", + "Distillate flowrate = 0.1799999900263989 mol/s\n", + "Benzene purity = 98.99999900049086 %\n", + "Residue flowrate = 0.1085161642426372 mol/s\n", + "Toluene purity = 15.676178086213548 %\n", + "\n", + "Conversion = 93.38705916369427 %\n", + "\n", + "Overhead benzene loss in F101 = 17.34061793115618 %\n" + ] + } + ], "source": [ "print(\"total cost = $\", value(m.fs.capital_cost) + value(m.fs.operating_cost))\n", "print(\"operating cost = $\", value(m.fs.operating_cost))\n", @@ -1831,7 +3066,16 @@ "testing" ] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "408883.5314830889\n", + "29956.3669431971\n" + ] + } + ], "source": [ "import pytest\n", "\n", @@ -1853,7 +3097,23 @@ "cell_type": "code", "execution_count": 75, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimal Values\n", + "\n", + "H101 outlet temperature = 568.923204295196 K\n", + "\n", + "R101 outlet temperature = 790.3655425698853 K\n", + "\n", + "F101 outlet temperature = 298.0 K\n", + "\n", + "H102 outlet temperature = 368.7414339952852 K\n" + ] + } + ], "source": [ "print(\"Optimal Values\")\n", "print()\n", @@ -1883,13 +3143,6 @@ "\n", "Finally, observe that the operating temperature of the flash (F101) is almost at its lower bound. This helps in minimizing the amount of benzene in the vapor stream leaving the flash." ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -1909,7 +3162,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.16" + "version": "3.10.13" } }, "nbformat": 4, diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_doc.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_doc.ipynb index ff03b6e7..2983e6ec 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_doc.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_doc.ipynb @@ -1,7592 +1,2889 @@ { - "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": [ - "\n", - "# HDA Flowsheet Simulation and Optimization\n", - "Maintainer: Brandon Paul \n", - "Author: Brandon Paul \n", - "Updated: 2023-06-01 \n", - "\n", - "\n", - "## Note\n", - "\n", - "This tutorial will be similar to the HDA flowsheet tutorial in the Tutorials section, except that we use a distillation column instead of a second flash (F102) to produce benzene and toluene products.\n", - "\n", - "\n", - "## Learning outcomes\n", - "\n", - "\n", - "- Construct a steady-state flowsheet using the IDAES unit model library\n", - "- Connecting unit models in a flowsheet using Arcs\n", - "- Using the SequentialDecomposition tool to initialize a flowsheet with recycle\n", - "- Fomulate and solve an optimization problem\n", - " - Defining an objective function\n", - " - Setting variable bounds\n", - " - Adding additional constraints \n", - "\n", - "\n", - "## Problem Statement\n", - "\n", - "Hydrodealkylation is a chemical reaction that often involves reacting\n", - "an aromatic hydrocarbon in the presence of hydrogen gas to form a\n", - "simpler aromatic hydrocarbon devoid of functional groups. In this\n", - "example, toluene will be reacted with hydrogen gas at high temperatures\n", - " to form benzene via the following reaction:\n", - "\n", - "**C6H5CH3 + H2 → C6H6 + CH4**\n", - "\n", - "\n", - "This reaction is often accompanied by an equilibrium side reaction\n", - "which forms diphenyl, which we will neglect for this example.\n", - "\n", - "This example is based on the 1967 AIChE Student Contest problem as\n", - "present by Douglas, J.M., Chemical Design of Chemical Processes, 1988,\n", - "McGraw-Hill.\n", - "\n", - "The flowsheet that we will be using for this module is shown below with the stream conditions. We will be processing toluene and hydrogen to produce at least 370 TPY of benzene. As shown in the flowsheet, we use a flash tank, F101, to separate out the non-condensibles, and a distillation column, D101, to further separate the benzene-toluene mixture to improve the benzene purity. The non-condensibles separated out in F101 will be partially recycled back to M101 and the rest will be purged. We will assume ideal gas behavior for this flowsheet. The properties required for this module are defined in\n", - "\n", - "- `hda_ideal_VLE.py`\n", - "- `idaes.models.properties.activity_coeff_models.BTX_activity_coeff_VLE`\n", - "- `hda_reaction.py`\n", - "\n", - "We will be using two thermodynamic packages: one (first in the list above) containing all four components (i.e., toluene, hydrogen, benzene, and methane) and the other (second in the list above) containing benzene and toluene only. The latter is needed to simplify the VLE calculations in the distillation column model. \n", - "\n", - "![](HDA_flowsheet_distillation.png)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Translator block\n", - "\n", - "Benzene and toluene are separated by distillation, so the process involves phase equilibrium and two-phase flow conditions. However, the presence of hydrogen and methane complicates the calculations. This is because, hydrogen and methane are non-condensable under all conditions of interest; ergo, a vapor phase will always be present, and the mixture bubble point is extremely low. To simplify the phase equilibrium calculations, hydrogen and methane will be considered completely as non-condensable and insoluble in the liquid outlet from the flash F101.\n", - "\n", - "Since no hydrogen and methane will be present in the unit operations following the flash, a different component list can be used to simplify the property calculations. IDAES supports the definition of multiple property packages within a single flowsheet via `Translator` blocks. `Translator` blocks convert between different property calculations, component lists, and equations of state. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Importing required pyomo and idaes components\n", - "\n", - "\n", - "To construct a flowsheet, we will need several components from the pyomo and idaes package. Let us first import the following components from Pyomo:\n", - "- Constraint (to write constraints)\n", - "- Var (to declare variables)\n", - "- ConcreteModel (to create the concrete model object)\n", - "- Expression (to evaluate values as a function of variables defined in the model)\n", - "- Objective (to define an objective function for optimization)\n", - "- SolverFactory (to solve the problem)\n", - "- TransformationFactory (to apply certain transformations)\n", - "- Arc (to connect two unit models)\n", - "- SequentialDecomposition (to initialize the flowsheet in a sequential mode)\n", - "\n", - "For further details on these components, please refer to the pyomo documentation: https://pyomo.readthedocs.io/en/stable/\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from pyomo.environ import (\n", - " Constraint,\n", - " Var,\n", - " ConcreteModel,\n", - " Expression,\n", - " Objective,\n", - " TransformationFactory,\n", - " value,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "Import `Arc` and `SequentialDecomposition` tools from `pyomo.network`\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "# Todo: Import the above mentioned tools from pyomo.network\n", - "from pyomo.network import Arc, SequentialDecomposition" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "From IDAES, we will be needing the FlowsheetBlock and the following unit models:\n", - "- Mixer\n", - "- Heater\n", - "- CSTR\n", - "- Flash\n", - "- Separator (splitter) \n", - "- PressureChanger\n", - "- Translator (to switch from one property package to another)\n", - "- TrayColumn (distillation column)\n", - "- CondenserType (Type of the overhead condenser: complete or partial)\n", - "- TemperatureSpec (Temperature specification inside the condenser)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "from idaes.core import FlowsheetBlock" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "from idaes.models.unit_models import (\n", - " PressureChanger,\n", - " Mixer,\n", - " Separator as Splitter,\n", - " Heater,\n", - " CSTR,\n", - " Flash,\n", - " Translator,\n", - ")\n", - "\n", - "from idaes.models_extra.column_models import TrayColumn\n", - "from idaes.models_extra.column_models.condenser import CondenserType, TemperatureSpec" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will also be needing some utility tools to put together the flowsheet and calculate the degrees of freedom. " - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# Utility tools to put together the flowsheet and calculate the degrees of freedom\n", - "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", - "from idaes.core.util.model_statistics import degrees_of_freedom\n", - "from idaes.core.util.initialization import propagate_state\n", - "from idaes.core.solvers import get_solver\n", - "import idaes.core.util.scaling as iscale\n", - "\n", - "# Import idaes logger to set output levels\n", - "import idaes.logger as idaeslog" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Importing required thermo and reaction packages\n", - "\n", - "Finally, we import the thermophysical (`ideal_VLE.py` and `BTXParameterBlock`) packages and reaction package (`reaction.py`) for the HDA process. We have created custom thermophysical packages that assume ideal gas behavior with support for VLE. The reaction package consists of the stochiometric coefficients for the reaction, heat of reaction, and kinetic information (Arrhenius constant and activation energy). " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "from idaes_examples.mod.hda import hda_reaction as reaction_props\n", - "from idaes.models.properties.activity_coeff_models.BTX_activity_coeff_VLE import (\n", - " BTXParameterBlock,\n", - ")\n", - "\n", - "from idaes_examples.mod.hda.hda_ideal_VLE import HDAParameterBlock" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Constructing the Flowsheet\n", - "\n", - "We have now imported all the components, unit models, and property modules we need to construct a flowsheet. Let us create a ConcreteModel and add the flowsheet block to it. " - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "# Create a Pyomo Concrete Model to contain the problem\n", - "m = ConcreteModel()\n", - "\n", - "# Add a steady state flowsheet block to the model\n", - "m.fs = FlowsheetBlock(dynamic=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will now add the thermophysical and reaction packages to the flowsheet." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# Property package for benzene, toluene, hydrogen, methane mixture\n", - "m.fs.BTHM_params = HDAParameterBlock()\n", - "\n", - "# Property package for the benzene-toluene mixture\n", - "m.fs.BT_params = BTXParameterBlock(\n", - " valid_phase=(\"Liq\", \"Vap\"), activity_coeff_model=\"Ideal\"\n", - ")\n", - "\n", - "# Reaction package for the HDA reaction\n", - "m.fs.reaction_params = reaction_props.HDAReactionParameterBlock(\n", - " property_package=m.fs.BTHM_params\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Adding Unit Models\n", - "\n", - "Let us start adding the unit models we have imported to the flowsheet. Here, we are adding the Mixer (assigned a name M101) and a Heater (assigned a name H101). Note that, all unit models need to be given a property package argument. In addition, the Mixer unit model needs a `list` consisting of the inlets (toluene feed, hydrogen feed and vapor recycle streams in this case). " - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "# Adding the mixer M101 to the flowsheet\n", - "m.fs.M101 = Mixer(\n", - " property_package=m.fs.BTHM_params,\n", - " inlet_list=[\"toluene_feed\", \"hydrogen_feed\", \"vapor_recycle\"],\n", - ")\n", - "\n", - "# Adding the heater H101 to the flowsheet\n", - "m.fs.H101 = Heater(property_package=m.fs.BTHM_params, has_phase_equilibrium=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "Let us now add the CSTR (assign the name R101) and pass the following arguments:\n", - "
    \n", - "
  • \"property_package\": m.fs.BTHM_params
  • \n", - "
  • \"reaction_package\": m.fs.reaction_params
  • \n", - "
  • \"has_heat_of_reaction\": True
  • \n", - "
  • \"has_heat_transfer\": True
  • \n", - "
\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "# Todo: Add reactor with the specifications above\n", - "m.fs.R101 = CSTR(\n", - " property_package=m.fs.BTHM_params,\n", - " reaction_package=m.fs.reaction_params,\n", - " has_heat_of_reaction=True,\n", - " has_heat_transfer=True,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us now add the Flash (assign the name F101), Splitter (assign the name S101) and PressureChanger (assign the name C101)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "# Adding the flash tank F101 to the flowsheet\n", - "m.fs.F101 = Flash(\n", - " property_package=m.fs.BTHM_params, has_heat_transfer=True, has_pressure_change=True\n", - ")\n", - "\n", - "# Adding the splitter S101 to the flowsheet\n", - "m.fs.S101 = Splitter(\n", - " property_package=m.fs.BTHM_params, outlet_list=[\"purge\", \"recycle\"]\n", - ")\n", - "\n", - "# Adding the compressor C101 to the flowsheet\n", - "m.fs.C101 = PressureChanger(\n", - " property_package=m.fs.BTHM_params,\n", - " compressor=True,\n", - " thermodynamic_assumption=ThermodynamicAssumption.isothermal,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Remark\n", - "\n", - "Currently, the `SequentialDecomposition()` tool, which we will later be using to initialize the flowsheet, does not support the distillation column model. Thus, we will first simulate the flowsheet without the distillation column. After it converges, we will then add the distillation column, initialize it, and simulate the entire flowsheet." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As mentioned above, we use the `m.fs.BTHM_params` package, which contains all the four species, for the reactor loop, and the simpler `m.fs.BT_params` for unit operations following the flash (i.e., heater H102 and the distillation column D101). We define a `Translator` block to link the source property package and the package it is to be translated to in the following manner:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "# Add translator block to convert between property packages\n", - "m.fs.translator = Translator(\n", - " inlet_property_package=m.fs.BTHM_params, outlet_property_package=m.fs.BT_params\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Translator block constraints\n", - "\n", - "The `Translator` block needs to know how to translate between the two property packages. This must be custom coded for each application because of the generality of the IDAES framework.\n", - "\n", - "For this process, five constraints are required based on the state variables used in the outgoing process.\n", - "\n", - "- Since we assumed that only benzene and toluene are present in the liquid phase, the total molar flowrate must be the sum of molar flowrates of benzene and toluene, respectively.\n", - "- Temperature of the inlet and outlet streams must be the same.\n", - "- Pressure of the inlet and outgoing streams must be the same\n", - "- The mole fraction of benzene in the outgoing stream is the ratio of the molar flowrate of liquid benzene in the inlet to the sum of molar flowrates of liquid benzene and toluene in the inlet.\n", - "- The mole fraction of toluene in the outgoing stream is the ratio of the molar flowrate of liquid toluene in the inlet to the sum of molar flowrates of liquid benzene and toluene in the inlet." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "# Add constraint: Total flow = benzene flow + toluene flow (molar)\n", - "m.fs.translator.eq_total_flow = Constraint(\n", - " expr=m.fs.translator.outlet.flow_mol[0]\n", - " == m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"benzene\"]\n", - " + m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"toluene\"]\n", - ")\n", - "\n", - "# Add constraint: Outlet temperature = Inlet temperature\n", - "m.fs.translator.eq_temperature = Constraint(\n", - " expr=m.fs.translator.outlet.temperature[0] == m.fs.translator.inlet.temperature[0]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the above, note that the variable flow_mol_phase_comp has the index - [time, phase, component]. As this is a steady-state flowsheet, the time index by default is 0. The valid phases are [\"Liq\", \"Vap\"]. Similarly the valid component list is [\"benzene\", \"toluene\", \"hydrogen\", \"methane\"]." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "Add the constraint to ensure that the outlet pressure is the same as the inlet pressure\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "# Todo: Add constraint: Outlet pressure = Inlet pressure\n", - "m.fs.translator.eq_pressure = Constraint(\n", - " expr=m.fs.translator.outlet.pressure[0] == m.fs.translator.inlet.pressure[0]\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "# Remaining constraints on the translator block\n", - "\n", - "# Add constraint: Benzene mole fraction definition\n", - "m.fs.translator.eq_mole_frac_benzene = Constraint(\n", - " expr=m.fs.translator.outlet.mole_frac_comp[0, \"benzene\"]\n", - " == m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"benzene\"]\n", - " / (\n", - " m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"benzene\"]\n", - " + m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"toluene\"]\n", - " )\n", - ")\n", - "\n", - "# Add constraint: Toluene mole fraction definition\n", - "m.fs.translator.eq_mole_frac_toluene = Constraint(\n", - " expr=m.fs.translator.outlet.mole_frac_comp[0, \"toluene\"]\n", - " == m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"toluene\"]\n", - " / (\n", - " m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"benzene\"]\n", - " + m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"toluene\"]\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "Finally, let us add the Heater H102 in the same way as H101 but pass the m.fs.BT_params thermodynamic package. We will add the distillation column after converging the flowsheet.\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "# Todo: Add the Heater H102 to the flowsheet\n", - "m.fs.H102 = Heater(\n", - " property_package=m.fs.BT_params,\n", - " has_pressure_change=True,\n", - " has_phase_equilibrium=True,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Connecting Unit Models using Arcs\n", - "\n", - "We have now added the initial set of unit models to the flowsheet. However, we have not yet specified how the units are connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer (M101) to the inlet of the heater (H101). " - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.s03 = Arc(source=m.fs.M101.outlet, destination=m.fs.H101.inlet)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "![](HDA_flowsheet_distillation.png) \n", - "\n", - "
\n", - "Inline Exercise:\n", - "Now, connect the H101 outlet to the R101 inlet using the cell above as a guide. \n", - "
\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "# Todo: Connect the H101 outlet to R101 inlet\n", - "m.fs.s04 = Arc(source=m.fs.H101.outlet, destination=m.fs.R101.inlet)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will now be connecting the rest of the units as shown below. Notice how the outlet names are different for the flash tank as it has a vapor and a liquid outlet. " - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.s05 = Arc(source=m.fs.R101.outlet, destination=m.fs.F101.inlet)\n", - "m.fs.s06 = Arc(source=m.fs.F101.vap_outlet, destination=m.fs.S101.inlet)\n", - "m.fs.s08 = Arc(source=m.fs.S101.recycle, destination=m.fs.C101.inlet)\n", - "m.fs.s09 = Arc(source=m.fs.C101.outlet, destination=m.fs.M101.vapor_recycle)\n", - "m.fs.s10a = Arc(source=m.fs.F101.liq_outlet, destination=m.fs.translator.inlet)\n", - "m.fs.s10b = Arc(source=m.fs.translator.outlet, destination=m.fs.H102.inlet)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have now connected the unit model block using the arcs. However, each of these arcs link to ports on the two unit models that are connected. In this case, the ports consist of the state variables that need to be linked between the unit models. Pyomo provides a convenient method to write these equality constraints for us between two ports and this is done as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "TransformationFactory(\"network.expand_arcs\").apply_to(m)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Appending additional constraints to the model\n", - "\n", - "Now, we will see how we can add additional constraints to the model using `Constraint` from Pyomo.\n", - "\n", - "Consider the reactor R101. By default, the conversion of a component is not calculated when we simulate the flowsheet. If we are interested either in specifying or constraining the conversion value, we can add the following constraint to calculate the conversion:\n", - "$$ \\text{Conversion of toluene} = \\frac{\\text{molar flow of toluene in the inlet} - \\text{molar flow of toluene in the outlet}}{\\text{molar flow of toluene in the inlet}} $$ \n", - "\n", - "We add the constraint to the model as shown below." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "# Define the conversion variables using 'Var'\n", - "m.fs.R101.conversion = Var(initialize=0.75, bounds=(0, 1))\n", - "\n", - "# Append the constraint to the model\n", - "m.fs.R101.conv_constraint = Constraint(\n", - " expr=m.fs.R101.conversion * m.fs.R101.inlet.flow_mol_phase_comp[0, \"Vap\", \"toluene\"]\n", - " == (\n", - " m.fs.R101.inlet.flow_mol_phase_comp[0, \"Vap\", \"toluene\"]\n", - " - m.fs.R101.outlet.flow_mol_phase_comp[0, \"Vap\", \"toluene\"]\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Fixing feed conditions and Initializing the flowsheet\n", - "\n", - "Let us first check how many degrees of freedom exist for this flowsheet using the `degrees_of_freedom` tool we imported earlier. " - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "29\n" - ] - } - ], - "source": [ - "print(degrees_of_freedom(m))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will now be fixing the toluene feed stream to the conditions shown in the flowsheet above. Please note that though this is a pure toluene feed, the remaining components are still assigned a very small non-zero value to help with convergence and initializing. " - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"benzene\"].fix(1e-5)\n", - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"toluene\"].fix(1e-5)\n", - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"hydrogen\"].fix(1e-5)\n", - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"methane\"].fix(1e-5)\n", - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"benzene\"].fix(1e-5)\n", - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"toluene\"].fix(0.30)\n", - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"hydrogen\"].fix(1e-5)\n", - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"methane\"].fix(1e-5)\n", - "m.fs.M101.toluene_feed.temperature.fix(303.2)\n", - "m.fs.M101.toluene_feed.pressure.fix(350000)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Similarly, let us fix the hydrogen feed to the following conditions in the next cell:\n", - "
    \n", - "
  • FH2 = 0.30 mol/s
  • \n", - "
  • FCH4 = 0.02 mol/s
  • \n", - "
  • Remaining components = 1e-5 mol/s
  • \n", - "
  • T = 303.2 K
  • \n", - "
  • P = 350000 Pa
  • \n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"benzene\"].fix(1e-5)\n", - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"toluene\"].fix(1e-5)\n", - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"hydrogen\"].fix(0.30)\n", - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"methane\"].fix(0.02)\n", - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"benzene\"].fix(1e-5)\n", - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"toluene\"].fix(1e-5)\n", - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"hydrogen\"].fix(1e-5)\n", - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"methane\"].fix(1e-5)\n", - "m.fs.M101.hydrogen_feed.temperature.fix(303.2)\n", - "m.fs.M101.hydrogen_feed.pressure.fix(350000)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Fixing unit model specifications\n", - "\n", - "Now that we have fixed our inlet feed conditions, we will now be fixing the operating conditions for the unit models in the flowsheet. Let us set the H101 outlet temperature to 600 K. " - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "# Fix the temperature of the outlet from the heater H101\n", - "m.fs.H101.outlet.temperature.fix(600)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "Set the conditions for the reactor R101 to the following conditions:\n", - "
    \n", - "
  • `conversion` = 0.75
  • \n", - "
  • `heat_duty` = 0
  • \n", - "
\n", - "\n", - "Use Shift+Enter to run the cell once you have typed in your code. \n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "# Todo: Fix the 'conversion' of the reactor R101\n", - "m.fs.R101.conversion.fix(0.75)\n", - "\n", - "# Todo: Fix the 'heat_duty' of the reactor R101\n", - "m.fs.R101.heat_duty.fix(0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The Flash conditions for F101 can be set as follows. " - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [], - "source": [ - "# Fix the temperature of the vapor outlet from F101\n", - "m.fs.F101.vap_outlet.temperature.fix(325.0)\n", - "\n", - "# Fix the pressure drop in the flash F101\n", - "m.fs.F101.deltaP.fix(0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us fix the split fraction of the purge stream from the splitter S101 and the outlet pressure from the compressor C101" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "# Fix the split fraction of the 'purge' stream from S101\n", - "m.fs.S101.split_fraction[0, \"purge\"].fix(0.2)\n", - "\n", - "# Fix the pressure of the outlet from the compressor C101\n", - "m.fs.C101.outlet.pressure.fix(350000)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, let us fix the temperature of the outlet from H102 and the pressure drop in H102 as the following" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [], - "source": [ - "# Fix the temperature of the outlet from the heater H102\n", - "m.fs.H102.outlet.temperature.fix(375)\n", - "\n", - "# Fix the pressure drop in the heater H102\n", - "m.fs.H102.deltaP.fix(-200000)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To avoid convergence issues associated with poorly scaled variables and/or constraints, we scale the variables and constraints corresponding to the heaters H101 and H102, flash F101 and the reactor R101. Scaling factors for the flow rates, temperature, pressure, etc. have been defined in the property package: `ideal_VLE.py` file. Here, we set scaling factors only for the heat duty of the heater, the reaction extent, heat duty and volume of the reactor." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Liq,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Liq,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Vap,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Vap,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Liq,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Liq,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Vap,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Vap,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:18 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n" - ] - } - ], - "source": [ - "# Set scaling factors for heat duty, reaction extent and volume\n", - "iscale.set_scaling_factor(m.fs.H101.control_volume.heat, 1e-2)\n", - "iscale.set_scaling_factor(m.fs.R101.control_volume.heat, 1e-2)\n", - "iscale.set_scaling_factor(m.fs.R101.control_volume.rate_reaction_extent, 1)\n", - "iscale.set_scaling_factor(m.fs.R101.control_volume.volume, 1)\n", - "iscale.set_scaling_factor(m.fs.F101.control_volume.heat, 1e-2)\n", - "iscale.set_scaling_factor(m.fs.H102.control_volume.heat, 1e-2)\n", - "\n", - "# Set the scaling factors for the remaining variables and all constraints\n", - "iscale.calculate_scaling_factors(m.fs.H101)\n", - "iscale.calculate_scaling_factors(m.fs.R101)\n", - "iscale.calculate_scaling_factors(m.fs.F101)\n", - "iscale.calculate_scaling_factors(m.fs.H102)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "We have now defined all the feed conditions and the inputs required for the unit models. The system should now have 0 degrees of freedom i.e. should be a square problem. Please check that the degrees of freedom is 0. \n", - "\n", - "Use Shift+Enter to run the cell once you have typed in your code. \n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n" - ] - } - ], - "source": [ - "# Todo: Check the degrees of freedom\n", - "print(degrees_of_freedom(m))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Initialization\n", - "\n", - "This subsection will demonstrate how to use the built-in sequential decomposition tool to initialize our flowsheet.\n", - "\n", - "Let us first create an object for the `SequentialDecomposition` and specify our options for this. " - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "seq = SequentialDecomposition()\n", - "seq.options.select_tear_method = \"heuristic\"\n", - "seq.options.tear_method = \"Wegstein\"\n", - "seq.options.iterLim = 3\n", - "\n", - "# Using the SD tool\n", - "G = seq.create_graph(m)\n", - "heuristic_tear_set = seq.tear_set_arcs(G, method=\"heuristic\")\n", - "order = seq.calculation_order(G)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Which is the tear stream? Display tear set and order" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "fs.s03\n" - ] - } - ], - "source": [ - "for o in heuristic_tear_set:\n", - " print(o.name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "What sequence did the SD tool determine to solve this flowsheet with the least number of tears? " - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "fs.H101\n", - "fs.R101\n", - "fs.F101\n", - "fs.S101\n", - "fs.C101\n", - "fs.M101\n" - ] - } - ], - "source": [ - "for o in order:\n", - " print(o[0].name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The SequentialDecomposition tool has determined that the tear stream is the mixer outlet (s03 in the Figure above). We will need to provide a reasonable guess for this.\n", - "\n", - "For the initial guess, we assume that the flowrate of the recycle stream (s09) is zero. Consequently, the flow rate of the stream s03 is simply the sum of the flowrates of the toluene feed and hydrogen feed streams. Further, since the temperature and the pressure of both the toluene and hydrogen feed streams are the same, we specify their values as the initial guess for the temperature and pressure of the stream s03." - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "tear_guesses = {\n", - " \"flow_mol_phase_comp\": {\n", - " (0, \"Vap\", \"benzene\"): 1e-5,\n", - " (0, \"Vap\", \"toluene\"): 1e-5,\n", - " (0, \"Vap\", \"hydrogen\"): 0.30,\n", - " (0, \"Vap\", \"methane\"): 0.02,\n", - " (0, \"Liq\", \"benzene\"): 1e-5,\n", - " (0, \"Liq\", \"toluene\"): 0.30,\n", - " (0, \"Liq\", \"hydrogen\"): 1e-5,\n", - " (0, \"Liq\", \"methane\"): 1e-5,\n", - " },\n", - " \"temperature\": {0: 303},\n", - " \"pressure\": {0: 350000},\n", - "}\n", - "\n", - "# Pass the tear_guess to the SD tool\n", - "seq.set_guesses_for(m.fs.H101.inlet, tear_guesses)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we need to tell the tool how to initialize a particular unit. We will be writing a python function which takes in a \"unit\" and calls the initialize method on that unit." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "def function(unit):\n", - " unit.initialize(outlvl=idaeslog.INFO)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We are now ready to initialize our flowsheet in a sequential mode. Note that we specifically set the iteration limit to be 3 as we are trying to use this tool only to get a good set of initial values such that IPOPT can then take over and solve this flowsheet for us. " - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:19 [INFO] idaes.init.fs.H101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:19 [INFO] idaes.init.fs.H101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:19 [INFO] idaes.init.fs.R101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:19 [INFO] idaes.init.fs.R101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:19 [INFO] idaes.init.fs.F101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:19 [INFO] idaes.init.fs.F101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:19 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:19 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:19 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:19 [INFO] idaes.init.fs.translator.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:19 [INFO] idaes.init.fs.translator.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:19 [INFO] idaes.init.fs.translator.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:19 [INFO] idaes.init.fs.translator.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.translator.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.translator.properties_out: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.translator.properties_out: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.translator: Initialization Complete optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.C101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.C101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.H102.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.H102.control_volume.properties_in: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:20 [INFO] idaes.init.fs.H102: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:21 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:21 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:21 [INFO] idaes.init.fs.H101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:21 [INFO] idaes.init.fs.H101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:21 [INFO] idaes.init.fs.R101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:21 [INFO] idaes.init.fs.R101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:21 [INFO] idaes.init.fs.F101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:21 [INFO] idaes.init.fs.F101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:21 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:21 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:21 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:21 [INFO] idaes.init.fs.C101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:21 [INFO] idaes.init.fs.C101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:21 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:21 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:22 [INFO] idaes.init.fs.H101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:22 [INFO] idaes.init.fs.H101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:22 [INFO] idaes.init.fs.R101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:22 [INFO] idaes.init.fs.R101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:22 [INFO] idaes.init.fs.F101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:22 [INFO] idaes.init.fs.F101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:22 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:22 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:22 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:22 [INFO] idaes.init.fs.C101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:22 [INFO] idaes.init.fs.C101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:22 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:22 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:22 [INFO] idaes.init.fs.H101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:23 [INFO] idaes.init.fs.H101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:23 [INFO] idaes.init.fs.R101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:23 [INFO] idaes.init.fs.R101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:23 [INFO] idaes.init.fs.F101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:23 [INFO] idaes.init.fs.F101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:23 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:23 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:23 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:23 [INFO] idaes.init.fs.C101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:23 [INFO] idaes.init.fs.C101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:23 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:23 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:23 [INFO] idaes.init.fs.H101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:23 [INFO] idaes.init.fs.H101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:23 [INFO] idaes.init.fs.R101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.R101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.F101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.F101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.C101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.C101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: Wegstein failed to converge in 3 iterations\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.translator.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.translator.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.translator.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.translator.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.translator.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.translator.properties_out: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.translator.properties_out: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.translator: Initialization Complete optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:24 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [INFO] idaes.init.fs.H102.control_volume.properties_out: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [INFO] idaes.init.fs.H102.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [INFO] idaes.init.fs.H102.control_volume.properties_in: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [INFO] idaes.init.fs.H102: Initialization Complete: optimal - Optimal Solution Found\n" - ] - } - ], - "source": [ - "seq.run(m, function)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "We have now initialized the flowsheet. Let us run the flowsheet in a simulation mode to look at the results. \n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.H102.control_volume.properties_out[0.0].scaling_factor' that contains 1\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix 'fs.H102.control_volume.scaling_factor'\n", - "that contains 1 component keys that are not exported as part of the NL file.\n", - "Skipping.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.F101.control_volume.properties_out[0.0].scaling_factor' that contains 26\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.F101.control_volume.properties_in[0.0].scaling_factor' that contains 25\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix 'fs.F101.control_volume.scaling_factor'\n", - "that contains 1 component keys that are not exported as part of the NL file.\n", - "Skipping.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.R101.control_volume.properties_out[0.0].scaling_factor' that contains 25\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.R101.control_volume.properties_in[0.0].scaling_factor' that contains 25\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix 'fs.R101.control_volume.scaling_factor'\n", - "that contains 2 component keys that are not exported as part of the NL file.\n", - "Skipping.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.H101.control_volume.properties_out[0.0].scaling_factor' that contains 26\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.H101.control_volume.properties_in[0.0].scaling_factor' that contains 25\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", - "tol=1e-06\n", - "max_iter=200\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\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 ma27.\n", - "\n", - "Number of nonzeros in equality constraint Jacobian...: 1097\n", - "Number of nonzeros in inequality constraint Jacobian.: 0\n", - "Number of nonzeros in Lagrangian Hessian.............: 877\n", - "\n", - "Total number of variables............................: 363\n", - " variables with only lower bounds: 8\n", - " variables with lower and upper bounds: 155\n", - " variables with only upper bounds: 0\n", - "Total number of equality constraints.................: 363\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.82e+04 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", - " 1 0.0000000e+00 8.69e+03 1.44e+03 -1.0 2.00e+04 - 9.71e-01 4.67e-01H 1\n", - " 2 0.0000000e+00 1.29e+03 1.56e+03 -1.0 1.60e+04 - 9.79e-01 4.90e-01h 1\n", - " 3 0.0000000e+00 1.18e+03 1.55e+05 -1.0 1.40e+04 - 9.90e-01 4.99e-01h 1\n", - " 4 0.0000000e+00 5.46e+02 2.32e+09 -1.0 8.43e+03 - 1.00e+00 9.82e-01h 1\n", - " 5 0.0000000e+00 5.46e+03 3.66e+10 -1.0 5.97e+02 - 1.00e+00 9.90e-01h 1\n", - " 6 0.0000000e+00 1.21e+03 8.01e+09 -1.0 5.75e+00 - 1.00e+00 1.00e+00h 1\n", - " 7 0.0000000e+00 6.42e+00 3.87e+07 -1.0 1.53e-03 - 1.00e+00 1.00e+00f 1\n", - " 8 0.0000000e+00 1.96e-04 9.36e+02 -1.0 7.28e-06 - 1.00e+00 1.00e+00h 1\n", - " 9 0.0000000e+00 2.24e-08 5.91e-02 -3.8 1.38e-07 - 1.00e+00 1.00e+00h 1\n", - "Cannot recompute multipliers for feasibility problem. Error in eq_mult_calculator\n", - "\n", - "Number of Iterations....: 9\n", - "\n", - " (scaled) (unscaled)\n", - "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", - "Dual infeasibility......: 1.5042546731871284e+04 1.5042546731871284e+04\n", - "Constraint violation....: 2.9103830456733704e-11 2.2351741790771484e-08\n", - "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", - "Overall NLP error.......: 2.9103830456733704e-11 1.5042546731871284e+04\n", - "\n", - "\n", - "Number of objective function evaluations = 11\n", - "Number of objective gradient evaluations = 10\n", - "Number of equality constraint evaluations = 11\n", - "Number of inequality constraint evaluations = 0\n", - "Number of equality constraint Jacobian evaluations = 10\n", - "Number of inequality constraint Jacobian evaluations = 0\n", - "Number of Lagrangian Hessian evaluations = 9\n", - "Total CPU secs in IPOPT (w/o function evaluations) = 0.010\n", - "Total CPU secs in NLP function evaluations = 0.000\n", - "\n", - "EXIT: Optimal Solution Found.\n" - ] - } - ], - "source": [ - "# Create the solver object\n", - "solver = get_solver()\n", - "\n", - "# Solve the model\n", - "results = solver.solve(m, tee=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Add distillation column \n", - "\n", - "As mentioned earlier, the `SequentialDecomposition` tool currently does not support the distillation column model. Thus, we have not included the distillation column in the flowsheet. Now that we have a converged flowsheet, we will add the distillation column and simulate the entire flowsheet. \n", - "\n", - "In the following, we will\n", - "- Add the distillation column \n", - "- Connect it to the heater \n", - "- Add the necessary equality constraints\n", - "- Propagate the state variable information from the outlet of the heater to the inlet of the distillation column \n", - "- Fix the degrees of freedom of the distillation block (reflux ratio, boilup ratio, and condenser pressure)\n", - "- Scale the control volume heat variables to help convergence\n", - "- Initialize the distillation block.\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:25 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].flow_mol_phase\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_comp[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_comp[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_P_vap[benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_P_vap[toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_flow_liq_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_liq_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_liq_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_flow_liq_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_liq_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_liq_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_flow_liq_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_liq_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_liq_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_flow_vap_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_vap_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_vap_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_flow_vap_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_vap_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_vap_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_flow_vap_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_vap_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_vap_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_flow_liq_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_liq_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_liq_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_flow_liq_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_liq_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_liq_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_flow_liq_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_liq_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_liq_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_flow_liq_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_liq_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_liq_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_flow_vap_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_vap_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_vap_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_flow_vap_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_vap_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_vap_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_flow_vap_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_vap_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_vap_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_flow_vap_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_vap_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_vap_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_flow_liq_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_liq_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_liq_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_flow_liq_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_liq_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_liq_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_flow_vap_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_vap_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_vap_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_flow_vap_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_vap_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_vap_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_flow_vap_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_vap_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_vap_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_flow_reflux[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_mole_frac_reflux[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_mole_frac_reflux[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_flow_liq_out[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_liq_out[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_liq_out[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_flow_vapor_reboil[0.0]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_mole_frac_vapor_reboil[0.0,benzene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_mole_frac_vapor_reboil[0.0,toluene]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101: Begin initialization.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray: Begin initialization.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_out: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:26 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.feed_tray: Mass balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.feed_tray: Mass and energy balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.feed_tray: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.feed_tray: Initialization complete, status optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.condenser.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.condenser: Initialization Complete, optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:27 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.reboiler: Initialization Complete, optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1]: Begin initialization.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:28 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass and energy balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[1]: Initialization complete, status optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2]: Begin initialization.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass and energy balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2]: Initialization complete, status optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3]: Begin initialization.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:29 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass and energy balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[3]: Initialization complete, status optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4]: Begin initialization.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass and energy balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4]: Initialization complete, status optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.stripping_section[6]: Begin initialization.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:30 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass and energy balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[6]: Initialization complete, status optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: State Released.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7]: Begin initialization.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] + "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", + "###############################################################################" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# HDA Flowsheet Simulation and Optimization\n", + "Maintainer: Brandon Paul \n", + "Author: Brandon Paul \n", + "Updated: 2023-06-01 \n", + "\n", + "\n", + "## Note\n", + "\n", + "This tutorial will be similar to the HDA flowsheet tutorial in the Tutorials section, except that we use a distillation column instead of a second flash (F102) to produce benzene and toluene products.\n", + "\n", + "\n", + "## Learning outcomes\n", + "\n", + "\n", + "- Construct a steady-state flowsheet using the IDAES unit model library\n", + "- Connecting unit models in a flowsheet using Arcs\n", + "- Using the SequentialDecomposition tool to initialize a flowsheet with recycle\n", + "- Fomulate and solve an optimization problem\n", + " - Defining an objective function\n", + " - Setting variable bounds\n", + " - Adding additional constraints \n", + "\n", + "\n", + "## Problem Statement\n", + "\n", + "Hydrodealkylation is a chemical reaction that often involves reacting\n", + "an aromatic hydrocarbon in the presence of hydrogen gas to form a\n", + "simpler aromatic hydrocarbon devoid of functional groups. In this\n", + "example, toluene will be reacted with hydrogen gas at high temperatures\n", + " to form benzene via the following reaction:\n", + "\n", + "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", + "\n", + "\n", + "This reaction is often accompanied by an equilibrium side reaction\n", + "which forms diphenyl, which we will neglect for this example.\n", + "\n", + "This example is based on the 1967 AIChE Student Contest problem as\n", + "present by Douglas, J.M., Chemical Design of Chemical Processes, 1988,\n", + "McGraw-Hill.\n", + "\n", + "The flowsheet that we will be using for this module is shown below with the stream conditions. We will be processing toluene and hydrogen to produce at least 370 TPY of benzene. As shown in the flowsheet, we use a flash tank, F101, to separate out the non-condensibles, and a distillation column, D101, to further separate the benzene-toluene mixture to improve the benzene purity. The non-condensibles separated out in F101 will be partially recycled back to M101 and the rest will be purged. We will assume ideal gas behavior for this flowsheet. The properties required for this module are defined in\n", + "\n", + "- `hda_ideal_VLE.py`\n", + "- `idaes.models.properties.activity_coeff_models.BTX_activity_coeff_VLE`\n", + "- `hda_reaction.py`\n", + "\n", + "We will be using two thermodynamic packages: one (first in the list above) containing all four components (i.e., toluene, hydrogen, benzene, and methane) and the other (second in the list above) containing benzene and toluene only. The latter is needed to simplify the VLE calculations in the distillation column model. \n", + "\n", + "![](HDA_flowsheet_distillation.png)\n", + "\n" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Translator block\n", + "\n", + "Benzene and toluene are separated by distillation, so the process involves phase equilibrium and two-phase flow conditions. However, the presence of hydrogen and methane complicates the calculations. This is because, hydrogen and methane are non-condensable under all conditions of interest; ergo, a vapor phase will always be present, and the mixture bubble point is extremely low. To simplify the phase equilibrium calculations, hydrogen and methane will be considered completely as non-condensable and insoluble in the liquid outlet from the flash F101.\n", + "\n", + "Since no hydrogen and methane will be present in the unit operations following the flash, a different component list can be used to simplify the property calculations. IDAES supports the definition of multiple property packages within a single flowsheet via `Translator` blocks. `Translator` blocks convert between different property calculations, component lists, and equations of state. " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Importing required pyomo and idaes components\n", + "\n", + "\n", + "To construct a flowsheet, we will need several components from the pyomo and idaes package. Let us first import the following components from Pyomo:\n", + "- Constraint (to write constraints)\n", + "- Var (to declare variables)\n", + "- ConcreteModel (to create the concrete model object)\n", + "- Expression (to evaluate values as a function of variables defined in the model)\n", + "- Objective (to define an objective function for optimization)\n", + "- SolverFactory (to solve the problem)\n", + "- TransformationFactory (to apply certain transformations)\n", + "- Arc (to connect two unit models)\n", + "- SequentialDecomposition (to initialize the flowsheet in a sequential mode)\n", + "\n", + "For further details on these components, please refer to the pyomo documentation: https://pyomo.readthedocs.io/en/stable/\n" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from pyomo.environ import (\n", + " Constraint,\n", + " Var,\n", + " ConcreteModel,\n", + " Expression,\n", + " Objective,\n", + " TransformationFactory,\n", + " value,\n", + ")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: State Released.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "Import `Arc` and `SequentialDecomposition` tools from `pyomo.network`\n", + "
" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Complete: optimal - Optimal Solution Found\n" - ] + "cell_type": "code", + "execution_count": 4, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Todo: Import the above mentioned tools from pyomo.network\n", + "from pyomo.network import Arc, SequentialDecomposition" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass balance solve optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From IDAES, we will be needing the FlowsheetBlock and the following unit models:\n", + "- Mixer\n", + "- Heater\n", + "- CSTR\n", + "- Flash\n", + "- Separator (splitter) \n", + "- PressureChanger\n", + "- Translator (to switch from one property package to another)\n", + "- TrayColumn (distillation column)\n", + "- CondenserType (Type of the overhead condenser: complete or partial)\n", + "- TemperatureSpec (Temperature specification inside the condenser)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass and energy balance solve optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from idaes.core import FlowsheetBlock" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from idaes.models.unit_models import (\n", + " PressureChanger,\n", + " Mixer,\n", + " Separator as Splitter,\n", + " Heater,\n", + " CSTR,\n", + " Flash,\n", + " Translator,\n", + ")\n", + "\n", + "from idaes.models_extra.column_models import TrayColumn\n", + "from idaes.models_extra.column_models.condenser import CondenserType, TemperatureSpec" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7]: Initialization complete, status optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will also be needing some utility tools to put together the flowsheet and calculate the degrees of freedom. " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: State Released.\n" - ] + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Utility tools to put together the flowsheet and calculate the degrees of freedom\n", + "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", + "from idaes.core.util.model_statistics import degrees_of_freedom\n", + "from idaes.core.util.initialization import propagate_state\n", + "from idaes.core.solvers import get_solver\n", + "import idaes.core.util.scaling as iscale\n", + "from idaes.core.util.exceptions import InitializationError\n", + "\n", + "# Import idaes logger to set output levels\n", + "import idaes.logger as idaeslog" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: State Released.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Importing required thermo and reaction packages\n", + "\n", + "Finally, we import the thermophysical (`ideal_VLE.py` and `BTXParameterBlock`) packages and reaction package (`reaction.py`) for the HDA process. We have created custom thermophysical packages that assume ideal gas behavior with support for VLE. The reaction package consists of the stochiometric coefficients for the reaction, heat of reaction, and kinetic information (Arrhenius constant and activation energy). " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[8]: Begin initialization.\n" - ] + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "from idaes_examples.mod.hda import hda_reaction as reaction_props\n", + "from idaes.models.properties.activity_coeff_models.BTX_activity_coeff_VLE import (\n", + " BTXParameterBlock,\n", + ")\n", + "\n", + "from idaes_examples.mod.hda.hda_ideal_VLE import HDAParameterBlock" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Constructing the Flowsheet\n", + "\n", + "We have now imported all the components, unit models, and property modules we need to construct a flowsheet. Let us create a ConcreteModel and add the flowsheet block to it. " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a Pyomo Concrete Model to contain the problem\n", + "m = ConcreteModel()\n", + "\n", + "# Add a steady state flowsheet block to the model\n", + "m.fs = FlowsheetBlock(dynamic=False)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will now add the thermophysical and reaction packages to the flowsheet." + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Property package for benzene, toluene, hydrogen, methane mixture\n", + "m.fs.BTHM_params = HDAParameterBlock()\n", + "\n", + "# Property package for the benzene-toluene mixture\n", + "m.fs.BT_params = BTXParameterBlock(\n", + " valid_phase=(\"Liq\", \"Vap\"), activity_coeff_model=\"Ideal\"\n", + ")\n", + "\n", + "# Reaction package for the HDA reaction\n", + "m.fs.reaction_params = reaction_props.HDAReactionParameterBlock(\n", + " property_package=m.fs.BTHM_params\n", + ")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adding Unit Models\n", + "\n", + "Let us start adding the unit models we have imported to the flowsheet. Here, we are adding the Mixer (assigned a name M101) and a Heater (assigned a name H101). Note that, all unit models need to be given a property package argument. In addition, the Mixer unit model needs a `list` consisting of the inlets (toluene feed, hydrogen feed and vapor recycle streams in this case). " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:31 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# Adding the mixer M101 to the flowsheet\n", + "m.fs.M101 = Mixer(\n", + " property_package=m.fs.BTHM_params,\n", + " inlet_list=[\"toluene_feed\", \"hydrogen_feed\", \"vapor_recycle\"],\n", + ")\n", + "\n", + "# Adding the heater H101 to the flowsheet\n", + "m.fs.H101 = Heater(property_package=m.fs.BTHM_params, has_phase_equilibrium=True)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "Let us now add the CSTR (assign the name R101) and pass the following arguments:\n", + "
    \n", + "
  • \"property_package\": m.fs.BTHM_params
  • \n", + "
  • \"reaction_package\": m.fs.reaction_params
  • \n", + "
  • \"has_heat_of_reaction\": True
  • \n", + "
  • \"has_heat_transfer\": True
  • \n", + "
\n", + "
" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 13, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Todo: Add reactor with the specifications above\n", + "m.fs.R101 = CSTR(\n", + " property_package=m.fs.BTHM_params,\n", + " reaction_package=m.fs.reaction_params,\n", + " has_heat_of_reaction=True,\n", + " has_heat_transfer=True,\n", + ")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us now add the Flash (assign the name F101), Splitter (assign the name S101) and PressureChanger (assign the name C101)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# Adding the flash tank F101 to the flowsheet\n", + "m.fs.F101 = Flash(\n", + " property_package=m.fs.BTHM_params, has_heat_transfer=True, has_pressure_change=True\n", + ")\n", + "\n", + "# Adding the splitter S101 to the flowsheet\n", + "m.fs.S101 = Splitter(\n", + " property_package=m.fs.BTHM_params, outlet_list=[\"purge\", \"recycle\"]\n", + ")\n", + "\n", + "# Adding the compressor C101 to the flowsheet\n", + "m.fs.C101 = PressureChanger(\n", + " property_package=m.fs.BTHM_params,\n", + " compressor=True,\n", + " thermodynamic_assumption=ThermodynamicAssumption.isothermal,\n", + ")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Remark\n", + "\n", + "Currently, the `SequentialDecomposition()` tool, which we will later be using to initialize the flowsheet, does not support the distillation column model. Thus, we will first simulate the flowsheet without the distillation column. After it converges, we will then add the distillation column, initialize it, and simulate the entire flowsheet." + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As mentioned above, we use the `m.fs.BTHM_params` package, which contains all the four species, for the reactor loop, and the simpler `m.fs.BT_params` for unit operations following the flash (i.e., heater H102 and the distillation column D101). We define a `Translator` block to link the source property package and the package it is to be translated to in the following manner:" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# Add translator block to convert between property packages\n", + "m.fs.translator = Translator(\n", + " inlet_property_package=m.fs.BTHM_params, outlet_property_package=m.fs.BT_params\n", + ")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Translator block constraints\n", + "\n", + "The `Translator` block needs to know how to translate between the two property packages. This must be custom coded for each application because of the generality of the IDAES framework.\n", + "\n", + "For this process, five constraints are required based on the state variables used in the outgoing process.\n", + "\n", + "- Since we assumed that only benzene and toluene are present in the liquid phase, the total molar flowrate must be the sum of molar flowrates of benzene and toluene, respectively.\n", + "- Temperature of the inlet and outlet streams must be the same.\n", + "- Pressure of the inlet and outgoing streams must be the same\n", + "- The mole fraction of benzene in the outgoing stream is the ratio of the molar flowrate of liquid benzene in the inlet to the sum of molar flowrates of liquid benzene and toluene in the inlet.\n", + "- The mole fraction of toluene in the outgoing stream is the ratio of the molar flowrate of liquid toluene in the inlet to the sum of molar flowrates of liquid benzene and toluene in the inlet." + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# Add constraint: Total flow = benzene flow + toluene flow (molar)\n", + "m.fs.translator.eq_total_flow = Constraint(\n", + " expr=m.fs.translator.outlet.flow_mol[0]\n", + " == m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"benzene\"]\n", + " + m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"toluene\"]\n", + ")\n", + "\n", + "# Add constraint: Outlet temperature = Inlet temperature\n", + "m.fs.translator.eq_temperature = Constraint(\n", + " expr=m.fs.translator.outlet.temperature[0] == m.fs.translator.inlet.temperature[0]\n", + ")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: State Released.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the above, note that the variable flow_mol_phase_comp has the index - [time, phase, component]. As this is a steady-state flowsheet, the time index by default is 0. The valid phases are [\"Liq\", \"Vap\"]. Similarly the valid component list is [\"benzene\", \"toluene\", \"hydrogen\", \"methane\"]." + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Complete: optimal - Optimal Solution Found\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "Add the constraint to ensure that the outlet pressure is the same as the inlet pressure\n", + "
" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass balance solve optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 18, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Todo: Add constraint: Outlet pressure = Inlet pressure\n", + "m.fs.translator.eq_pressure = Constraint(\n", + " expr=m.fs.translator.outlet.pressure[0] == m.fs.translator.inlet.pressure[0]\n", + ")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass and energy balance solve optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Remaining constraints on the translator block\n", + "\n", + "# Add constraint: Benzene mole fraction definition\n", + "m.fs.translator.eq_mole_frac_benzene = Constraint(\n", + " expr=m.fs.translator.outlet.mole_frac_comp[0, \"benzene\"]\n", + " == m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"benzene\"]\n", + " / (\n", + " m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"benzene\"]\n", + " + m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"toluene\"]\n", + " )\n", + ")\n", + "\n", + "# Add constraint: Toluene mole fraction definition\n", + "m.fs.translator.eq_mole_frac_toluene = Constraint(\n", + " expr=m.fs.translator.outlet.mole_frac_comp[0, \"toluene\"]\n", + " == m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"toluene\"]\n", + " / (\n", + " m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"benzene\"]\n", + " + m.fs.translator.inlet.flow_mol_phase_comp[0, \"Liq\", \"toluene\"]\n", + " )\n", + ")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "Finally, let us add the Heater H102 in the same way as H101 but pass the m.fs.BT_params thermodynamic package. We will add the distillation column after converging the flowsheet.\n", + "
" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8]: Initialization complete, status optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 21, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Todo: Add the Heater H102 to the flowsheet\n", + "m.fs.H102 = Heater(\n", + " property_package=m.fs.BT_params,\n", + " has_pressure_change=True,\n", + " has_phase_equilibrium=True,\n", + ")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: State Released.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Connecting Unit Models using Arcs\n", + "\n", + "We have now added the initial set of unit models to the flowsheet. However, we have not yet specified how the units are connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer (M101) to the inlet of the heater (H101). " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: State Released.\n" - ] + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.s03 = Arc(source=m.fs.M101.outlet, destination=m.fs.H101.inlet)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9]: Begin initialization.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "![](HDA_flowsheet_distillation.png) \n", + "\n", + "
\n", + "Inline Exercise:\n", + "Now, connect the H101 outlet to the R101 inlet using the cell above as a guide. \n", + "
\n", + "\n" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 24, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Todo: Connect the H101 outlet to R101 inlet\n", + "m.fs.s04 = Arc(source=m.fs.H101.outlet, destination=m.fs.R101.inlet)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will now be connecting the rest of the units as shown below. Notice how the outlet names are different for the flash tank as it has a vapor and a liquid outlet. " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.s05 = Arc(source=m.fs.R101.outlet, destination=m.fs.F101.inlet)\n", + "m.fs.s06 = Arc(source=m.fs.F101.vap_outlet, destination=m.fs.S101.inlet)\n", + "m.fs.s08 = Arc(source=m.fs.S101.recycle, destination=m.fs.C101.inlet)\n", + "m.fs.s09 = Arc(source=m.fs.C101.outlet, destination=m.fs.M101.vapor_recycle)\n", + "m.fs.s10a = Arc(source=m.fs.F101.liq_outlet, destination=m.fs.translator.inlet)\n", + "m.fs.s10b = Arc(source=m.fs.translator.outlet, destination=m.fs.H102.inlet)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have now connected the unit model block using the arcs. However, each of these arcs link to ports on the two unit models that are connected. In this case, the ports consist of the state variables that need to be linked between the unit models. Pyomo provides a convenient method to write these equality constraints for us between two ports and this is done as follows:" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "TransformationFactory(\"network.expand_arcs\").apply_to(m)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Appending additional constraints to the model\n", + "\n", + "Now, we will see how we can add additional constraints to the model using `Constraint` from Pyomo.\n", + "\n", + "Consider the reactor R101. By default, the conversion of a component is not calculated when we simulate the flowsheet. If we are interested either in specifying or constraining the conversion value, we can add the following constraint to calculate the conversion:\n", + "$$ \\text{Conversion of toluene} = \\frac{\\text{molar flow of toluene in the inlet} - \\text{molar flow of toluene in the outlet}}{\\text{molar flow of toluene in the inlet}} $$ \n", + "\n", + "We add the constraint to the model as shown below." + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "# Define the conversion variables using 'Var'\n", + "m.fs.R101.conversion = Var(initialize=0.75, bounds=(0, 1))\n", + "\n", + "# Append the constraint to the model\n", + "m.fs.R101.conv_constraint = Constraint(\n", + " expr=m.fs.R101.conversion * m.fs.R101.inlet.flow_mol_phase_comp[0, \"Vap\", \"toluene\"]\n", + " == (\n", + " m.fs.R101.inlet.flow_mol_phase_comp[0, \"Vap\", \"toluene\"]\n", + " - m.fs.R101.outlet.flow_mol_phase_comp[0, \"Vap\", \"toluene\"]\n", + " )\n", + ")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fixing feed conditions and Initializing the flowsheet\n", + "\n", + "Let us first check how many degrees of freedom exist for this flowsheet using the `degrees_of_freedom` tool we imported earlier. " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "29\n" + ] + } + ], + "source": [ + "print(degrees_of_freedom(m))" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will now be fixing the toluene feed stream to the conditions shown in the flowsheet above. Please note that though this is a pure toluene feed, the remaining components are still assigned a very small non-zero value to help with convergence and initializing. " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"benzene\"].fix(1e-5)\n", + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"toluene\"].fix(1e-5)\n", + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"hydrogen\"].fix(1e-5)\n", + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"methane\"].fix(1e-5)\n", + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"benzene\"].fix(1e-5)\n", + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"toluene\"].fix(0.30)\n", + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"hydrogen\"].fix(1e-5)\n", + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"methane\"].fix(1e-5)\n", + "m.fs.M101.toluene_feed.temperature.fix(303.2)\n", + "m.fs.M101.toluene_feed.pressure.fix(350000)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similarly, let us fix the hydrogen feed to the following conditions in the next cell:\n", + "
    \n", + "
  • FH2 = 0.30 mol/s
  • \n", + "
  • FCH4 = 0.02 mol/s
  • \n", + "
  • Remaining components = 1e-5 mol/s
  • \n", + "
  • T = 303.2 K
  • \n", + "
  • P = 350000 Pa
  • \n", + "
" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"benzene\"].fix(1e-5)\n", + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"toluene\"].fix(1e-5)\n", + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"hydrogen\"].fix(0.30)\n", + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"methane\"].fix(0.02)\n", + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"benzene\"].fix(1e-5)\n", + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"toluene\"].fix(1e-5)\n", + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"hydrogen\"].fix(1e-5)\n", + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"methane\"].fix(1e-5)\n", + "m.fs.M101.hydrogen_feed.temperature.fix(303.2)\n", + "m.fs.M101.hydrogen_feed.pressure.fix(350000)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fixing unit model specifications\n", + "\n", + "Now that we have fixed our inlet feed conditions, we will now be fixing the operating conditions for the unit models in the flowsheet. Let us set the H101 outlet temperature to 600 K. " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "# Fix the temperature of the outlet from the heater H101\n", + "m.fs.H101.outlet.temperature.fix(600)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: State Released.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "Set the conditions for the reactor R101 to the following conditions:\n", + "
    \n", + "
  • `conversion` = 0.75
  • \n", + "
  • `heat_duty` = 0
  • \n", + "
\n", + "\n", + "Use Shift+Enter to run the cell once you have typed in your code. \n", + "
" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Complete: optimal - Optimal Solution Found\n" - ] + "cell_type": "code", + "execution_count": 34, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Todo: Fix the 'conversion' of the reactor R101\n", + "m.fs.R101.conversion.fix(0.75)\n", + "\n", + "# Todo: Fix the 'heat_duty' of the reactor R101\n", + "m.fs.R101.heat_duty.fix(0)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass balance solve optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Flash conditions for F101 can be set as follows. " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass and energy balance solve optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "# Fix the temperature of the vapor outlet from F101\n", + "m.fs.F101.vap_outlet.temperature.fix(325.0)\n", + "\n", + "# Fix the pressure drop in the flash F101\n", + "m.fs.F101.deltaP.fix(0)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us fix the split fraction of the purge stream from the splitter S101 and the outlet pressure from the compressor C101" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9]: Initialization complete, status optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "# Fix the split fraction of the 'purge' stream from S101\n", + "m.fs.S101.split_fraction[0, \"purge\"].fix(0.2)\n", + "\n", + "# Fix the pressure of the outlet from the compressor C101\n", + "m.fs.C101.outlet.pressure.fix(350000)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: State Released.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, let us fix the temperature of the outlet from H102 and the pressure drop in H102 as the following" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: State Released.\n" - ] + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "# Fix the temperature of the outlet from the heater H102\n", + "m.fs.H102.outlet.temperature.fix(375)\n", + "\n", + "# Fix the pressure drop in the heater H102\n", + "m.fs.H102.deltaP.fix(-200000)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[10]: Begin initialization.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To avoid convergence issues associated with poorly scaled variables and/or constraints, we scale the variables and constraints corresponding to the heaters H101 and H102, flash F101 and the reactor R101. Scaling factors for the flow rates, temperature, pressure, etc. have been defined in the property package: `ideal_VLE.py` file. Here, we set scaling factors only for the heat duty of the heater, the reaction extent, heat duty and volume of the reactor." + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n" + ] + } + ], + "source": [ + "# Set scaling factors for heat duty, reaction extent and volume\n", + "iscale.set_scaling_factor(m.fs.H101.control_volume.heat, 1e-2)\n", + "iscale.set_scaling_factor(m.fs.R101.control_volume.heat, 1e-2)\n", + "iscale.set_scaling_factor(m.fs.R101.control_volume.rate_reaction_extent, 1)\n", + "iscale.set_scaling_factor(m.fs.R101.control_volume.volume, 1)\n", + "iscale.set_scaling_factor(m.fs.F101.control_volume.heat, 1e-2)\n", + "iscale.set_scaling_factor(m.fs.H102.control_volume.heat, 1e-2)\n", + "\n", + "# Set the scaling factors for the remaining variables and all constraints\n", + "iscale.calculate_scaling_factors(m.fs.H101)\n", + "iscale.calculate_scaling_factors(m.fs.R101)\n", + "iscale.calculate_scaling_factors(m.fs.F101)\n", + "iscale.calculate_scaling_factors(m.fs.H102)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "We have now defined all the feed conditions and the inputs required for the unit models. The system should now have 0 degrees of freedom i.e. should be a square problem. Please check that the degrees of freedom is 0. \n", + "\n", + "Use Shift+Enter to run the cell once you have typed in your code. \n", + "
" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 40, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + } + ], + "source": [ + "# Todo: Check the degrees of freedom\n", + "print(degrees_of_freedom(m))" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:32 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Initialization\n", + "\n", + "This subsection will demonstrate how to use the built-in sequential decomposition tool to initialize our flowsheet.\n", + "\n", + "Let us first create an object for the `SequentialDecomposition` and specify our options for this. " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "seq = SequentialDecomposition()\n", + "seq.options.select_tear_method = \"heuristic\"\n", + "seq.options.tear_method = \"Wegstein\"\n", + "seq.options.iterLim = 3\n", + "\n", + "# Using the SD tool\n", + "G = seq.create_graph(m)\n", + "heuristic_tear_set = seq.tear_set_arcs(G, method=\"heuristic\")\n", + "order = seq.calculation_order(G)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Which is the tear stream? Display tear set and order" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fs.s03\n" + ] + } + ], + "source": [ + "for o in heuristic_tear_set:\n", + " print(o.name)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What sequence did the SD tool determine to solve this flowsheet with the least number of tears? " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fs.H101\n", + "fs.R101\n", + "fs.F101\n", + "fs.S101\n", + "fs.C101\n", + "fs.M101\n" + ] + } + ], + "source": [ + "for o in order:\n", + " print(o[0].name)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The SequentialDecomposition tool has determined that the tear stream is the mixer outlet (s03 in the Figure above). We will need to provide a reasonable guess for this.\n", + "\n", + "For the initial guess, we assume that the flowrate of the recycle stream (s09) is zero. Consequently, the flow rate of the stream s03 is simply the sum of the flowrates of the toluene feed and hydrogen feed streams. Further, since the temperature and the pressure of both the toluene and hydrogen feed streams are the same, we specify their values as the initial guess for the temperature and pressure of the stream s03." + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "tear_guesses = {\n", + " \"flow_mol_phase_comp\": {\n", + " (0, \"Vap\", \"benzene\"): 1e-5,\n", + " (0, \"Vap\", \"toluene\"): 1e-5,\n", + " (0, \"Vap\", \"hydrogen\"): 0.30,\n", + " (0, \"Vap\", \"methane\"): 0.02,\n", + " (0, \"Liq\", \"benzene\"): 1e-5,\n", + " (0, \"Liq\", \"toluene\"): 0.30,\n", + " (0, \"Liq\", \"hydrogen\"): 1e-5,\n", + " (0, \"Liq\", \"methane\"): 1e-5,\n", + " },\n", + " \"temperature\": {0: 303.2},\n", + " \"pressure\": {0: 350000},\n", + "}\n", + "\n", + "# Pass the tear_guess to the SD tool\n", + "seq.set_guesses_for(m.fs.H101.inlet, tear_guesses)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we need to tell the tool how to initialize a particular unit. We will be writing a python function which takes in a \"unit\" and calls the initialize method on that unit. For the initialization, we will import a Block Triangularization Initializer which decomposes the model into a set of subproblems. These subproblems are solved using a block triangularization transformation before applying a simple Newton or user-selected solver. Methods such as block triangularization often solve faster and yield more reliable behavior than heuristic methods, but sometime struggle to decompose models with strongly coupled equations (e.g. column models, systems with counter-current flow, vapor-liquid equilibrium)." + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "def function(unit):\n", + " # Try initializing using default initializer, \n", + " # if it fails (probably due to scaling) try for the second time\n", + " try:\n", + " initializer = unit.default_initializer()\n", + " initializer.initialize(unit, output_level=idaeslog.INFO)\n", + " except InitializationError:\n", + " solver=get_solver()\n", + " solver.solve(unit)\n", + " " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are now ready to initialize our flowsheet in a sequential mode. Note that we specifically set the iteration limit to be 3 as we are trying to use this tool only to get a good set of initial values such that IPOPT can then take over and solve this flowsheet for us. " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 47, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:14 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 12\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 11\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 11\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "WARNING: Wegstein failed to converge in 3 iterations\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:33 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 5 optimal - .\n" + ] + } + ], + "source": [ + "seq.run(m, function)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: State Released.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "We have now initialized the flowsheet. Let us run the flowsheet in a simulation mode to look at the results. \n", + "
" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Complete: optimal - Optimal Solution Found\n" - ] + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 6\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 1097\n", + "Number of nonzeros in inequality constraint Jacobian.: 0\n", + "Number of nonzeros in Lagrangian Hessian.............: 877\n", + "\n", + "Total number of variables............................: 363\n", + " variables with only lower bounds: 8\n", + " variables with lower and upper bounds: 155\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 363\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.82e+04 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 0.0000000e+00 8.69e+03 1.44e+03 -1.0 2.00e+04 - 9.71e-01 4.67e-01H 1\n", + " 2 0.0000000e+00 1.29e+03 1.56e+03 -1.0 1.60e+04 - 9.79e-01 4.90e-01h 1\n", + " 3 0.0000000e+00 1.18e+03 1.55e+05 -1.0 1.40e+04 - 9.90e-01 4.99e-01h 1\n", + " 4 0.0000000e+00 5.46e+02 2.32e+09 -1.0 8.42e+03 - 1.00e+00 9.82e-01h 1\n", + " 5 0.0000000e+00 5.46e+03 3.66e+10 -1.0 5.97e+02 - 1.00e+00 9.90e-01h 1\n", + " 6 0.0000000e+00 1.21e+03 8.01e+09 -1.0 5.75e+00 - 1.00e+00 1.00e+00h 1\n", + " 7 0.0000000e+00 6.41e+00 3.87e+07 -1.0 1.53e-03 - 1.00e+00 1.00e+00f 1\n", + " 8 0.0000000e+00 1.96e-04 9.36e+02 -1.0 7.28e-06 - 1.00e+00 1.00e+00h 1\n", + " 9 0.0000000e+00 2.24e-08 4.99e-01 -3.8 5.92e-08 - 1.00e+00 1.00e+00h 1\n", + "Cannot recompute multipliers for feasibility problem. Error in eq_mult_calculator\n", + "\n", + "Number of Iterations....: 9\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Dual infeasibility......: 1.5042487592972509e+04 1.5042487592972509e+04\n", + "Constraint violation....: 2.9103830456733704e-11 2.2351741790771484e-08\n", + "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Overall NLP error.......: 2.9103830456733704e-11 1.5042487592972509e+04\n", + "\n", + "\n", + "Number of objective function evaluations = 11\n", + "Number of objective gradient evaluations = 10\n", + "Number of equality constraint evaluations = 11\n", + "Number of inequality constraint evaluations = 0\n", + "Number of equality constraint Jacobian evaluations = 10\n", + "Number of inequality constraint Jacobian evaluations = 0\n", + "Number of Lagrangian Hessian evaluations = 9\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.011\n", + "Total CPU secs in NLP function evaluations = 0.001\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + } + ], + "source": [ + "# Create the solver object\n", + "solver = get_solver()\n", + "\n", + "# Solve the model\n", + "results = solver.solve(m, tee=True)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass balance solve optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Add distillation column \n", + "\n", + "As mentioned earlier, the `SequentialDecomposition` tool currently does not support the distillation column model. Thus, we have not included the distillation column in the flowsheet. Now that we have a converged flowsheet, we will add the distillation column and simulate the entire flowsheet. \n", + "\n", + "In the following, we will\n", + "- Add the distillation column \n", + "- Connect it to the heater \n", + "- Add the necessary equality constraints\n", + "- Propagate the state variable information from the outlet of the heater to the inlet of the distillation column \n", + "- Fix the degrees of freedom of the distillation block (reflux ratio, boilup ratio, and condenser pressure)\n", + "- Scale the control volume heat variables to help convergence\n", + "- Initialize the distillation block.\n", + "\n" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass and energy balance solve optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_flow_reflux[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_mole_frac_reflux[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_mole_frac_reflux[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_flow_vapor_reboil[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_mole_frac_vapor_reboil[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_mole_frac_vapor_reboil[0.0,toluene]\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101: Begin initialization.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray: Begin initialization.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: State Released.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: State Released.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: State Released.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: State Released.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume: Initialization Complete\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser: Initialization Complete, optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: State Released.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: State Released.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler: Initialization Complete, optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: State Released.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1]: Begin initialization.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: State Released.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: State Released.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[2]: Begin initialization.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: State Released.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: State Released.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: State Released.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3]: Begin initialization.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: State Released.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: State Released.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: State Released.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4]: Begin initialization.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: State Released.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: State Released.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6]: Begin initialization.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: State Released.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: State Released.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[7]: Begin initialization.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: State Released.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: State Released.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: State Released.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8]: Begin initialization.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: State Released.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: State Released.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: State Released.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9]: Begin initialization.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: State Released.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: State Released.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: State Released.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10]: Begin initialization.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: State Released.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Rectification section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Stripping section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Column section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: State Released.\n", + "2024-08-28 18:39:02 [INFO] idaes.init.fs.D101: Column section + Condenser initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:02 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: State Released.\n", + "2024-08-28 18:39:03 [INFO] idaes.init.fs.D101: Column section + Condenser + Reboiler initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:03 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: State Released.\n" + ] + } + ], + "source": [ + "# Add distillation column to the flowsheet\n", + "m.fs.D101 = TrayColumn(\n", + " number_of_trays=10,\n", + " feed_tray_location=5,\n", + " condenser_type=CondenserType.totalCondenser,\n", + " condenser_temperature_spec=TemperatureSpec.atBubblePoint,\n", + " property_package=m.fs.BT_params,\n", + ")\n", + "\n", + "# Connect the outlet from the heater H102 to the distillation column\n", + "m.fs.s11 = Arc(source=m.fs.H102.outlet, destination=m.fs.D101.feed)\n", + "\n", + "# Add the necessary equality constraints\n", + "TransformationFactory(\"network.expand_arcs\").apply_to(m)\n", + "\n", + "# Propagate the state\n", + "propagate_state(m.fs.s11)\n", + "\n", + "# Fix the reflux ratio, boilup ratio, and the condenser pressure\n", + "m.fs.D101.condenser.reflux_ratio.fix(0.5)\n", + "m.fs.D101.reboiler.boilup_ratio.fix(0.5)\n", + "m.fs.D101.condenser.condenser_pressure.fix(150000)\n", + "\n", + "# set scaling factors\n", + "# Set scaling factors for heat duty\n", + "iscale.set_scaling_factor(m.fs.D101.condenser.control_volume.heat, 1e-2)\n", + "iscale.set_scaling_factor(m.fs.D101.reboiler.control_volume.heat, 1e-2)\n", + "\n", + "# Set the scaling factors for the remaining variables and all constraints\n", + "iscale.calculate_scaling_factors(m.fs.D101)\n", + "\n", + "# Initialize the distillation column\n", + "m.fs.D101.initialize(outlvl=idaeslog.INFO)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adding expressions to compute capital and operating costs\n", + "\n", + "In this section, we will add a few Expressions that allow us to evaluate the performance. Expressions provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on Expressions, please refer to: https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10]: Initialization complete, status optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "# Expression to compute the total cooling cost\n", + "m.fs.cooling_cost = Expression(\n", + " expr=0.25e-7 * (-m.fs.F101.heat_duty[0])\n", + " + 0.2e-7 * (-m.fs.D101.condenser.heat_duty[0])\n", + ")\n", + "\n", + "# Expression to compute the total heating cost\n", + "m.fs.heating_cost = Expression(\n", + " expr=2.2e-7 * m.fs.H101.heat_duty[0]\n", + " + 1.2e-7 * m.fs.H102.heat_duty[0]\n", + " + 1.9e-7 * m.fs.D101.reboiler.heat_duty[0]\n", + ")\n", + "\n", + "# Expression to compute the total operating cost\n", + "m.fs.operating_cost = Expression(\n", + " expr=(3600 * 24 * 365 * (m.fs.heating_cost + m.fs.cooling_cost))\n", + ")\n", + "\n", + "# Expression to compute the total capital cost\n", + "m.fs.capital_cost = Expression(expr=1e5 * m.fs.R101.volume[0])" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: State Released.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Solve the entire flowsheet" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101: Rectification section initialization status optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 7\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 4042\n", + "Number of nonzeros in inequality constraint Jacobian.: 0\n", + "Number of nonzeros in Lagrangian Hessian.............: 2376\n", + "\n", + "Total number of variables............................: 1169\n", + " variables with only lower bounds: 112\n", + " variables with lower and upper bounds: 365\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 1169\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.83e+04 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 0.0000000e+00 8.70e+03 1.50e+03 -1.0 3.69e+04 - 9.71e-01 4.62e-01H 1\n", + " 2 0.0000000e+00 1.53e+03 1.56e+03 -1.0 6.75e+03 - 9.77e-01 4.89e-01h 1\n", + " 3 0.0000000e+00 1.37e+03 1.55e+05 -1.0 9.37e+03 - 9.90e-01 4.99e-01h 1\n", + " 4 0.0000000e+00 6.14e+02 2.31e+09 -1.0 6.09e+03 - 1.00e+00 9.81e-01h 1\n", + " 5 0.0000000e+00 5.32e+03 3.62e+10 -1.0 5.56e+02 - 1.00e+00 9.90e-01h 1\n", + " 6 0.0000000e+00 1.16e+03 7.80e+09 -1.0 5.36e+00 - 1.00e+00 1.00e+00h 1\n", + " 7 0.0000000e+00 5.96e+00 3.64e+07 -1.0 1.47e-03 - 1.00e+00 1.00e+00f 1\n", + " 8 0.0000000e+00 1.69e-04 8.15e+02 -1.0 6.77e-06 - 1.00e+00 1.00e+00h 1\n", + " 9 0.0000000e+00 7.45e-09 6.64e-03 -3.8 2.00e-07 - 1.00e+00 1.00e+00h 1\n", + "Cannot recompute multipliers for feasibility problem. Error in eq_mult_calculator\n", + "\n", + "Number of Iterations....: 9\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Dual infeasibility......: 1.5042483516409773e+04 1.5042483516409773e+04\n", + "Constraint violation....: 2.9103830456733704e-11 7.4505805969238281e-09\n", + "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Overall NLP error.......: 2.9103830456733704e-11 1.5042483516409773e+04\n", + "\n", + "\n", + "Number of objective function evaluations = 11\n", + "Number of objective gradient evaluations = 10\n", + "Number of equality constraint evaluations = 11\n", + "Number of inequality constraint evaluations = 0\n", + "Number of equality constraint Jacobian evaluations = 10\n", + "Number of inequality constraint Jacobian evaluations = 0\n", + "Number of Lagrangian Hessian evaluations = 9\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.083\n", + "Total CPU secs in NLP function evaluations = 0.013\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'Problem': [{'Lower bound': -inf, 'Upper bound': inf, 'Number of objectives': 1, 'Number of constraints': 1169, 'Number of variables': 1169, 'Sense': 'unknown'}], 'Solver': [{'Status': 'ok', 'Message': 'Ipopt 3.13.2\\\\x3a Optimal Solution Found', 'Termination condition': 'optimal', 'Id': 0, 'Error rc': 0, 'Time': 0.2022566795349121}], 'Solution': [OrderedDict([('number of solutions', 0), ('number of solutions displayed', 0)])]}" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "solver.solve(m, tee=True)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101: Stripping section initialization status optimal - Optimal Solution Found.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analyze the Results of the Square Problem\n", + "\n", + "How much is the total cost (operating cost + capital cost), operating cost, capital cost, benzene purity in the distillate from the distilation column, and conversion of toluene in the reactor?" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: State Released.\n" - ] + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total cost = $ 442301.47075252194\n", + "operating cost = $ 427596.73056805483\n", + "capital cost = $ 14704.740184467111\n", + "\n", + "Distillate flowrate = 0.16196898920633368 mol/s\n", + "Benzene purity = 89.4916166580088 %\n", + "Residue flowrate = 0.10515007120697904 mol/s\n", + "Toluene purity = 43.32260291055251 %\n", + "\n", + "Conversion = 75.0 %\n", + "\n", + "Overhead benzene loss in F101 = 42.161938483603194 %\n" + ] + } + ], + "source": [ + "print(\"total cost = $\", value(m.fs.capital_cost) + value(m.fs.operating_cost))\n", + "print(\"operating cost = $\", value(m.fs.operating_cost))\n", + "print(\"capital cost = $\", value(m.fs.capital_cost))\n", + "print()\n", + "print(\n", + " \"Distillate flowrate = \",\n", + " value(m.fs.D101.condenser.distillate.flow_mol[0]()),\n", + " \"mol/s\",\n", + ")\n", + "print(\n", + " \"Benzene purity = \",\n", + " 100 * value(m.fs.D101.condenser.distillate.mole_frac_comp[0, \"benzene\"]),\n", + " \"%\",\n", + ")\n", + "print(\"Residue flowrate = \", value(m.fs.D101.reboiler.bottoms.flow_mol[0]()), \"mol/s\")\n", + "print(\n", + " \"Toluene purity = \",\n", + " 100 * value(m.fs.D101.reboiler.bottoms.mole_frac_comp[0, \"toluene\"]),\n", + " \"%\",\n", + ")\n", + "print()\n", + "print(\"Conversion = \", 100 * value(m.fs.R101.conversion), \"%\")\n", + "print()\n", + "print(\n", + " \"Overhead benzene loss in F101 = \",\n", + " 100\n", + " * value(m.fs.F101.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"])\n", + " / value(m.fs.R101.outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]),\n", + " \"%\",\n", + ")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: State Released.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Get the state of the streams entering and leaving the reactor R101" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101: Column section initialization status optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "====================================================================================\n", + "Unit : fs.R101 Time: 0.0\n", + "------------------------------------------------------------------------------------\n", + " Unit Performance\n", + "\n", + " Variables: \n", + "\n", + " Key : Value : Units : Fixed : Bounds\n", + " Heat Duty : 0.0000 : watt : True : (None, None)\n", + " Volume : 0.14705 : meter ** 3 : False : (None, None)\n", + "\n", + "------------------------------------------------------------------------------------\n", + " Stream Table\n", + " Units Inlet Outlet \n", + " flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.2993e-07\n", + " flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 8.4147e-07\n", + " flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-12\n", + " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-12\n", + " flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.11936 0.35374\n", + " flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.31252 0.078129\n", + " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.0377 1.2721\n", + " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.56260 0.32821\n", + " temperature kelvin 600.00 771.85\n", + " pressure pascal 3.5000e+05 3.5000e+05\n", + "====================================================================================\n" + ] + } + ], + "source": [ + "m.fs.R101.report()" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: State Released.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Get the state of the streams entering and leaving the reactor R101" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101: Column section + Condenser initialization status optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "====================================================================================\n", + "Unit : fs.F101 Time: 0.0\n", + "------------------------------------------------------------------------------------\n", + " Unit Performance\n", + "\n", + " Variables: \n", + "\n", + " Key : Value : Units : Fixed : Bounds\n", + " Heat Duty : -70343. : watt : False : (None, None)\n", + " Pressure Change : 0.0000 : pascal : True : (None, None)\n", + "\n", + "------------------------------------------------------------------------------------\n", + " Stream Table\n", + " Units Inlet Vapor Outlet Liquid Outlet\n", + " flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.0000e-08 0.20460 \n", + " flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 1.0000e-08 0.062520 \n", + " flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 2.6712e-07 \n", + " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 2.6712e-07 \n", + " flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.35374 0.14915 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.078129 0.015610 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2721 1.2721 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.32821 0.32821 1.0000e-08 \n", + " temperature kelvin 771.85 325.00 325.00 \n", + " pressure pascal 3.5000e+05 3.5000e+05 3.5000e+05 \n", + "====================================================================================\n" + ] + } + ], + "source": [ + "m.fs.F101.report()" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: State Released.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, let's look at how much benzene we are losing with the light gases out of F101. IDAES has tools for creating stream tables based on the `Arcs` and/or `Ports` in a flowsheet. Let us create and print a simple stream table showing the stream leaving the reactor and the vapor stream from F101.\n", + "\n", + "
\n", + "Inline Exercise:\n", + "How much benzene are we losing in the F101 vapor outlet stream?\n", + "
" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101: Column section + Condenser + Reboiler initialization status optimal - Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Units Reactor Light Gases\n", + "flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 \n", + "flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.35374 0.14915 \n", + "flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.078129 0.015610 \n", + "flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2721 1.2721 \n", + "flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.32821 0.32821 \n", + "temperature kelvin 771.85 325.00 \n", + "pressure pascal 3.5000e+05 3.5000e+05 \n" + ] + } + ], + "source": [ + "from idaes.core.util.tables import (\n", + " create_stream_table_dataframe,\n", + " stream_table_dataframe_to_string,\n", + ")\n", + "\n", + "st = create_stream_table_dataframe({\"Reactor\": m.fs.s05, \"Light Gases\": m.fs.s06})\n", + "print(stream_table_dataframe_to_string(st))" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:33 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: State Released.\n" - ] - } - ], - "source": [ - "# Add distillation column to the flowsheet\n", - "m.fs.D101 = TrayColumn(\n", - " number_of_trays=10,\n", - " feed_tray_location=5,\n", - " condenser_type=CondenserType.totalCondenser,\n", - " condenser_temperature_spec=TemperatureSpec.atBubblePoint,\n", - " property_package=m.fs.BT_params,\n", - ")\n", - "\n", - "# Connect the outlet from the heater H102 to the distillation column\n", - "m.fs.s11 = Arc(source=m.fs.H102.outlet, destination=m.fs.D101.feed)\n", - "\n", - "# Add the necessary equality constraints\n", - "TransformationFactory(\"network.expand_arcs\").apply_to(m)\n", - "\n", - "# Propagate the state\n", - "propagate_state(m.fs.s11)\n", - "\n", - "# Fix the reflux ratio, boilup ratio, and the condenser pressure\n", - "m.fs.D101.condenser.reflux_ratio.fix(0.5)\n", - "m.fs.D101.reboiler.boilup_ratio.fix(0.5)\n", - "m.fs.D101.condenser.condenser_pressure.fix(150000)\n", - "\n", - "# set scaling factors\n", - "# Set scaling factors for heat duty\n", - "iscale.set_scaling_factor(m.fs.D101.condenser.control_volume.heat, 1e-2)\n", - "iscale.set_scaling_factor(m.fs.D101.reboiler.control_volume.heat, 1e-2)\n", - "\n", - "# Set the scaling factors for the remaining variables and all constraints\n", - "iscale.calculate_scaling_factors(m.fs.D101)\n", - "\n", - "# Initialize the distillation column\n", - "m.fs.D101.initialize(outlvl=idaeslog.INFO)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Adding expressions to compute capital and operating costs\n", - "\n", - "In this section, we will add a few Expressions that allow us to evaluate the performance. Expressions provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on Expressions, please refer to: https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "# Expression to compute the total cooling cost\n", - "m.fs.cooling_cost = Expression(\n", - " expr=0.25e-7 * (-m.fs.F101.heat_duty[0])\n", - " + 0.2e-7 * (-m.fs.D101.condenser.heat_duty[0])\n", - ")\n", - "\n", - "# Expression to compute the total heating cost\n", - "m.fs.heating_cost = Expression(\n", - " expr=2.2e-7 * m.fs.H101.heat_duty[0]\n", - " + 1.2e-7 * m.fs.H102.heat_duty[0]\n", - " + 1.9e-7 * m.fs.D101.reboiler.heat_duty[0]\n", - ")\n", - "\n", - "# Expression to compute the total operating cost\n", - "m.fs.operating_cost = Expression(\n", - " expr=(3600 * 24 * 365 * (m.fs.heating_cost + m.fs.cooling_cost))\n", - ")\n", - "\n", - "# Expression to compute the total capital cost\n", - "m.fs.capital_cost = Expression(expr=1e5 * m.fs.R101.volume[0])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Solve the entire flowsheet" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.D101.condenser.control_volume.properties_out[0.0].scaling_factor' that\n", - "contains 1 component keys that are not exported as part of the NL file.\n", - "Skipping.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "You can query additional variables here if you like. \n", + "\n", + "Use Shift+Enter to run the cell once you have typed in your code. \n", + "
" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.H102.control_volume.properties_out[0.0].scaling_factor' that contains 1\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Optimization\n", + "\n", + "\n", + "We saw from the results above that the total operating cost for the base case was $442,297 per year. We are producing 0.162 mol/s of benzene at a purity of 89.5%. However, we are losing around 43.3% of benzene in F101 vapor outlet stream. \n", + "\n", + "Let us try to minimize this cost such that:\n", + "- we are producing at least 0.18 mol/s of benzene as distillate i.e. our product stream\n", + "- purity of benzene i.e. the mole fraction of benzene in the distillate is at least 99%\n", + "- restricting the benzene loss in F101 vapor outlet to less than 20%\n", + "\n", + "For this problem, our decision variables are as follows:\n", + "- H101 outlet temperature\n", + "- R101 outlet temperature\n", + "- F101 outlet temperature\n", + "- H102 outlet temperature\n", + "- Condenser pressure\n", + "- reflux ratio\n", + "- boilup ratio\n" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix 'fs.H102.control_volume.scaling_factor'\n", - "that contains 1 component keys that are not exported as part of the NL file.\n", - "Skipping.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us declare our objective function for this problem. " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.F101.control_volume.properties_out[0.0].scaling_factor' that contains 26\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.objective = Objective(expr=m.fs.operating_cost + m.fs.capital_cost)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.F101.control_volume.properties_in[0.0].scaling_factor' that contains 25\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we need to unfix the decision variables as we had solved a square problem (degrees of freedom = 0) until now. " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix 'fs.F101.control_volume.scaling_factor'\n", - "that contains 1 component keys that are not exported as part of the NL file.\n", - "Skipping.\n" - ] + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.H101.outlet.temperature.unfix()\n", + "m.fs.R101.conversion.unfix()\n", + "m.fs.F101.vap_outlet.temperature.unfix()\n", + "m.fs.D101.condenser.condenser_pressure.unfix()\n", + "m.fs.D101.condenser.reflux_ratio.unfix()\n", + "m.fs.D101.reboiler.boilup_ratio.unfix()" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.R101.control_volume.properties_out[0.0].scaling_factor' that contains 25\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "Let us now unfix the remaining variable: the temperature of the outlet from H102\n", + "\n", + "Use Shift+Enter to run the cell once you have typed in your code. \n", + "
\n", + "\n" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.R101.control_volume.properties_in[0.0].scaling_factor' that contains 25\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] + "cell_type": "code", + "execution_count": 63, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Todo: Unfix the temperature of the outlet from H102\n", + "m.fs.H102.outlet.temperature.unfix()" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix 'fs.R101.control_volume.scaling_factor'\n", - "that contains 2 component keys that are not exported as part of the NL file.\n", - "Skipping.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we need to set bounds on these decision variables to values shown below:\n", + "\n", + " - H101 outlet temperature [500, 600] K\n", + " - R101 outlet temperature [600, 900] K\n", + " - F101 outlet temperature [298, 450] K\n", + " - H102 outlet temperature [350, 400] K\n", + " - D101 condenser pressure [101325, 150000] Pa\n", + " - D101 reflux ratio [0.1, 5]\n", + " - D101 boilup ratio [0.1, 5]" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.H101.control_volume.properties_out[0.0].scaling_factor' that contains 26\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "# Set bounds on the temperature of the outlet from H101\n", + "m.fs.H101.outlet.temperature[0].setlb(500)\n", + "m.fs.H101.outlet.temperature[0].setub(600)\n", + "\n", + "# Set bounds on the temperature of the outlet from R101\n", + "m.fs.R101.outlet.temperature[0].setlb(600)\n", + "m.fs.R101.outlet.temperature[0].setub(900)\n", + "\n", + "# Set bounds on the volume of the reactor R101\n", + "m.fs.R101.volume[0].setlb(0)\n", + "\n", + "# Set bounds on the temperature of the vapor outlet from F101\n", + "m.fs.F101.vap_outlet.temperature[0].setlb(298)\n", + "m.fs.F101.vap_outlet.temperature[0].setub(450.0)\n", + "\n", + "# Set bounds on the temperature of the outlet from H102\n", + "m.fs.H102.outlet.temperature[0].setlb(350)\n", + "m.fs.H102.outlet.temperature[0].setub(400)\n", + "\n", + "# Set bounds on the pressure inside the condenser\n", + "m.fs.D101.condenser.condenser_pressure.setlb(101325)\n", + "m.fs.D101.condenser.condenser_pressure.setub(150000)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.H101.control_volume.properties_in[0.0].scaling_factor' that contains 25\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "Now, set the bounds for the D101 reflux ratio and boilup ratio.\n", + "\n", + "Use Shift+Enter to run the cell once you have typed in your code. \n", + "
" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", - "tol=1e-06\n", - "max_iter=200\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 ma27.\n", - "\n", - "Number of nonzeros in equality constraint Jacobian...: 4042\n", - "Number of nonzeros in inequality constraint Jacobian.: 0\n", - "Number of nonzeros in Lagrangian Hessian.............: 2376\n", - "\n", - "Total number of variables............................: 1169\n", - " variables with only lower bounds: 112\n", - " variables with lower and upper bounds: 365\n", - " variables with only upper bounds: 0\n", - "Total number of equality constraints.................: 1169\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.83e+04 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", - " 1 0.0000000e+00 8.70e+03 1.50e+03 -1.0 3.69e+04 - 9.71e-01 4.62e-01H 1\n", - " 2 0.0000000e+00 1.53e+03 1.56e+03 -1.0 6.75e+03 - 9.77e-01 4.89e-01h 1\n", - " 3 0.0000000e+00 1.37e+03 1.55e+05 -1.0 9.37e+03 - 9.90e-01 4.99e-01h 1\n", - " 4 0.0000000e+00 6.14e+02 2.31e+09 -1.0 6.09e+03 - 1.00e+00 9.81e-01h 1\n", - " 5 0.0000000e+00 5.32e+03 3.62e+10 -1.0 5.56e+02 - 1.00e+00 9.90e-01h 1\n", - " 6 0.0000000e+00 1.16e+03 7.80e+09 -1.0 5.36e+00 - 1.00e+00 1.00e+00h 1\n", - " 7 0.0000000e+00 5.96e+00 3.64e+07 -1.0 1.47e-03 - 1.00e+00 1.00e+00f 1\n", - " 8 0.0000000e+00 1.69e-04 8.15e+02 -1.0 6.77e-06 - 1.00e+00 1.00e+00h 1\n", - " 9 0.0000000e+00 1.27e-04 7.49e+06 -3.8 5.68e-08 - 1.00e+00 2.50e-01h 3\n", - "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", - " 10 0.0000000e+00 9.51e-05 5.62e+06 -3.8 1.19e-06 - 1.00e+00 2.50e-01h 3\n", - "Cannot recompute multipliers for feasibility problem. Error in eq_mult_calculator\n", - "\n", - "Number of Iterations....: 10\n", - "\n", - " (scaled) (unscaled)\n", - "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", - "Dual infeasibility......: 5.6320546602153890e+06 5.6320546602153890e+06\n", - "Constraint violation....: 2.9103830456733704e-11 9.5061208412516862e-05\n", - "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", - "Overall NLP error.......: 2.9103830456733704e-11 5.6320546602153890e+06\n", - "\n", - "\n", - "Number of objective function evaluations = 18\n", - "Number of objective gradient evaluations = 11\n", - "Number of equality constraint evaluations = 18\n", - "Number of inequality constraint evaluations = 0\n", - "Number of equality constraint Jacobian evaluations = 11\n", - "Number of inequality constraint Jacobian evaluations = 0\n", - "Number of Lagrangian Hessian evaluations = 10\n", - "Total CPU secs in IPOPT (w/o function evaluations) = 0.011\n", - "Total CPU secs in NLP function evaluations = 0.010\n", - "\n", - "EXIT: Optimal Solution Found.\n" - ] + "cell_type": "code", + "execution_count": 66, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Todo: Set bounds on the reflux ratio\n", + "m.fs.D101.condenser.reflux_ratio.setlb(0.1)\n", + "m.fs.D101.condenser.reflux_ratio.setub(5)\n", + "\n", + "# Todo: Set bounds on the boilup ratio\n", + "m.fs.D101.reboiler.boilup_ratio.setlb(0.1)\n", + "m.fs.D101.reboiler.boilup_ratio.setub(5)" + ] }, { - "data": { - "text/plain": [ - "{'Problem': [{'Lower bound': -inf, 'Upper bound': inf, 'Number of objectives': 1, 'Number of constraints': 1169, 'Number of variables': 1169, 'Sense': 'unknown'}], 'Solver': [{'Status': 'ok', 'Message': 'Ipopt 3.13.2\\\\x3a Optimal Solution Found', 'Termination condition': 'optimal', 'Id': 0, 'Error rc': 0, 'Time': 0.08404064178466797}], 'Solution': [OrderedDict([('number of solutions', 0), ('number of solutions displayed', 0)])]}" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, the only things left to define are our constraints on overhead loss in F101, distillate flowrate and its purity. Let us first look at defining a constraint for the overhead loss in F101 where we are restricting the benzene leaving the vapor stream to less than 20 % of the benzene available in the reactor outlet. " ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "solver.solve(m, tee=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Analyze the Results of the Square Problem\n", - "\n", - "How much is the total cost (operating cost + capital cost), operating cost, capital cost, benzene purity in the distillate from the distilation column, and conversion of toluene in the reactor?" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "total cost = $ 442301.4707525308\n", - "operating cost = $ 427596.7305680824\n", - "capital cost = $ 14704.74018444835\n", - "\n", - "Distillate flowrate = 0.16196898920642744 mol/s\n", - "Benzene purity = 89.49161665800828 %\n", - "Residue flowrate = 0.1051500712068829 mol/s\n", - "Toluene purity = 43.32260291055269 %\n", - "\n", - "Conversion = 75.0 %\n", - "\n", - "Overhead benzene loss in F101 = 42.16193848360187 %\n" - ] - } - ], - "source": [ - "print(\"total cost = $\", value(m.fs.capital_cost) + value(m.fs.operating_cost))\n", - "print(\"operating cost = $\", value(m.fs.operating_cost))\n", - "print(\"capital cost = $\", value(m.fs.capital_cost))\n", - "print()\n", - "print(\n", - " \"Distillate flowrate = \",\n", - " value(m.fs.D101.condenser.distillate.flow_mol[0]()),\n", - " \"mol/s\",\n", - ")\n", - "print(\n", - " \"Benzene purity = \",\n", - " 100 * value(m.fs.D101.condenser.distillate.mole_frac_comp[0, \"benzene\"]),\n", - " \"%\",\n", - ")\n", - "print(\"Residue flowrate = \", value(m.fs.D101.reboiler.bottoms.flow_mol[0]()), \"mol/s\")\n", - "print(\n", - " \"Toluene purity = \",\n", - " 100 * value(m.fs.D101.reboiler.bottoms.mole_frac_comp[0, \"toluene\"]),\n", - " \"%\",\n", - ")\n", - "print()\n", - "print(\"Conversion = \", 100 * value(m.fs.R101.conversion), \"%\")\n", - "print()\n", - "print(\n", - " \"Overhead benzene loss in F101 = \",\n", - " 100\n", - " * value(m.fs.F101.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"])\n", - " / value(m.fs.R101.outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]),\n", - " \"%\",\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Get the state of the streams entering and leaving the reactor R101" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "====================================================================================\n", - "Unit : fs.R101 Time: 0.0\n", - "------------------------------------------------------------------------------------\n", - " Unit Performance\n", - "\n", - " Variables: \n", - "\n", - " Key : Value : Units : Fixed : Bounds\n", - " Heat Duty : 0.0000 : watt : True : (None, None)\n", - " Volume : 0.14705 : meter ** 3 : False : (None, None)\n", - "\n", - "------------------------------------------------------------------------------------\n", - " Stream Table\n", - " Units Inlet Outlet \n", - " flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.2993e-07\n", - " flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 8.4147e-07\n", - " flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-12\n", - " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-12\n", - " flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.11936 0.35374\n", - " flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.31252 0.078129\n", - " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.0377 1.2721\n", - " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.56260 0.32821\n", - " temperature kelvin 600.00 771.85\n", - " pressure pascal 3.5000e+05 3.5000e+05\n", - "====================================================================================\n" - ] - } - ], - "source": [ - "m.fs.R101.report()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Get the state of the streams entering and leaving the reactor R101" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "====================================================================================\n", - "Unit : fs.F101 Time: 0.0\n", - "------------------------------------------------------------------------------------\n", - " Unit Performance\n", - "\n", - " Variables: \n", - "\n", - " Key : Value : Units : Fixed : Bounds\n", - " Heat Duty : -70343. : watt : False : (None, None)\n", - " Pressure Change : 0.0000 : pascal : True : (None, None)\n", - "\n", - "------------------------------------------------------------------------------------\n", - " Stream Table\n", - " Units Inlet Vapor Outlet Liquid Outlet\n", - " flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.0000e-08 0.20460 \n", - " flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 1.0000e-08 0.062520 \n", - " flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 2.6712e-07 \n", - " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 2.6712e-07 \n", - " flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.35374 0.14915 1.0000e-08 \n", - " flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.078129 0.015610 1.0000e-08 \n", - " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2721 1.2721 1.0000e-08 \n", - " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.32821 0.32821 1.0000e-08 \n", - " temperature kelvin 771.85 325.00 325.00 \n", - " pressure pascal 3.5000e+05 3.5000e+05 3.5000e+05 \n", - "====================================================================================\n" - ] - } - ], - "source": [ - "m.fs.F101.report()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, let's look at how much benzene we are losing with the light gases out of F101. IDAES has tools for creating stream tables based on the `Arcs` and/or `Ports` in a flowsheet. Let us create and print a simple stream table showing the stream leaving the reactor and the vapor stream from F101.\n", - "\n", - "
\n", - "Inline Exercise:\n", - "How much benzene are we losing in the F101 vapor outlet stream?\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Units Reactor Light Gases\n", - "flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.0000e-08 \n", - "flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 1.0000e-08 \n", - "flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 \n", - "flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 \n", - "flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.35374 0.14915 \n", - "flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.078129 0.015610 \n", - "flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2721 1.2721 \n", - "flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.32821 0.32821 \n", - "temperature kelvin 771.85 325.00 \n", - "pressure pascal 3.5000e+05 3.5000e+05 \n" - ] - } - ], - "source": [ - "from idaes.core.util.tables import (\n", - " create_stream_table_dataframe,\n", - " stream_table_dataframe_to_string,\n", - ")\n", - "\n", - "st = create_stream_table_dataframe({\"Reactor\": m.fs.s05, \"Light Gases\": m.fs.s06})\n", - "print(stream_table_dataframe_to_string(st))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "You can query additional variables here if you like. \n", - "\n", - "Use Shift+Enter to run the cell once you have typed in your code. \n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Optimization\n", - "\n", - "\n", - "We saw from the results above that the total operating cost for the base case was $442,297 per year. We are producing 0.162 mol/s of benzene at a purity of 89.5%. However, we are losing around 43.3% of benzene in F101 vapor outlet stream. \n", - "\n", - "Let us try to minimize this cost such that:\n", - "- we are producing at least 0.18 mol/s of benzene as distillate i.e. our product stream\n", - "- purity of benzene i.e. the mole fraction of benzene in the distillate is at least 99%\n", - "- restricting the benzene loss in F101 vapor outlet to less than 20%\n", - "\n", - "For this problem, our decision variables are as follows:\n", - "- H101 outlet temperature\n", - "- R101 outlet temperature\n", - "- F101 outlet temperature\n", - "- H102 outlet temperature\n", - "- Condenser pressure\n", - "- reflux ratio\n", - "- boilup ratio\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us declare our objective function for this problem. " - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.objective = Objective(expr=m.fs.operating_cost + m.fs.capital_cost)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we need to unfix the decision variables as we had solved a square problem (degrees of freedom = 0) until now. " - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.H101.outlet.temperature.unfix()\n", - "m.fs.R101.conversion.unfix()\n", - "m.fs.F101.vap_outlet.temperature.unfix()\n", - "m.fs.D101.condenser.condenser_pressure.unfix()\n", - "m.fs.D101.condenser.reflux_ratio.unfix()\n", - "m.fs.D101.reboiler.boilup_ratio.unfix()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "Let us now unfix the remaining variable: the temperature of the outlet from H102\n", - "\n", - "Use Shift+Enter to run the cell once you have typed in your code. \n", - "
\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "# Todo: Unfix the temperature of the outlet from H102\n", - "m.fs.H102.outlet.temperature.unfix()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we need to set bounds on these decision variables to values shown below:\n", - "\n", - " - H101 outlet temperature [500, 600] K\n", - " - R101 outlet temperature [600, 900] K\n", - " - F101 outlet temperature [298, 450] K\n", - " - H102 outlet temperature [350, 400] K\n", - " - D101 condenser pressure [101325, 150000] Pa\n", - " - D101 reflux ratio [0.1, 5]\n", - " - D101 boilup ratio [0.1, 5]" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [], - "source": [ - "# Set bounds on the temperature of the outlet from H101\n", - "m.fs.H101.outlet.temperature[0].setlb(500)\n", - "m.fs.H101.outlet.temperature[0].setub(600)\n", - "\n", - "# Set bounds on the temperature of the outlet from R101\n", - "m.fs.R101.outlet.temperature[0].setlb(600)\n", - "m.fs.R101.outlet.temperature[0].setub(900)\n", - "\n", - "# Set bounds on the volume of the reactor R101\n", - "m.fs.R101.volume[0].setlb(0)\n", - "\n", - "# Set bounds on the temperature of the vapor outlet from F101\n", - "m.fs.F101.vap_outlet.temperature[0].setlb(298)\n", - "m.fs.F101.vap_outlet.temperature[0].setub(450.0)\n", - "\n", - "# Set bounds on the temperature of the outlet from H102\n", - "m.fs.H102.outlet.temperature[0].setlb(350)\n", - "m.fs.H102.outlet.temperature[0].setub(400)\n", - "\n", - "# Set bounds on the pressure inside the condenser\n", - "m.fs.D101.condenser.condenser_pressure.setlb(101325)\n", - "m.fs.D101.condenser.condenser_pressure.setub(150000)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "Now, set the bounds for the D101 reflux ratio and boilup ratio.\n", - "\n", - "Use Shift+Enter to run the cell once you have typed in your code. \n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "# Todo: Set bounds on the reflux ratio\n", - "m.fs.D101.condenser.reflux_ratio.setlb(0.1)\n", - "m.fs.D101.condenser.reflux_ratio.setub(5)\n", - "\n", - "# Todo: Set bounds on the boilup ratio\n", - "m.fs.D101.reboiler.boilup_ratio.setlb(0.1)\n", - "m.fs.D101.reboiler.boilup_ratio.setub(5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, the only things left to define are our constraints on overhead loss in F101, distillate flowrate and its purity. Let us first look at defining a constraint for the overhead loss in F101 where we are restricting the benzene leaving the vapor stream to less than 20 % of the benzene available in the reactor outlet. " - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [], - "source": [ - "# Ensure that the overhead loss of benzene from F101 <= 20%\n", - "m.fs.overhead_loss = Constraint(\n", - " expr=m.fs.F101.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]\n", - " <= 0.20 * m.fs.R101.outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "Now, add the constraint such that we are producing at least 0.18 mol/s of benzene in the product stream which is the distillate of D101. Let us name this constraint as m.fs.product_flow. \n", - "\n", - "Use Shift+Enter to run the cell once you have typed in your code. \n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "# Todo: Add minimum product flow constraint\n", - "m.fs.product_flow = Constraint(expr=m.fs.D101.condenser.distillate.flow_mol[0] >= 0.18)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us add the final constraint on product purity or the mole fraction of benzene in the distillate such that it is at least greater than 99%. " - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.product_purity = Constraint(\n", - " expr=m.fs.D101.condenser.distillate.mole_frac_comp[0, \"benzene\"] >= 0.99\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "We have now defined the optimization problem and we are now ready to solve this problem. \n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix 'fs.H102.control_volume.scaling_factor'\n", - "that contains 1 component keys that are not exported as part of the NL file.\n", - "Skipping.\n" - ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.F101.control_volume.properties_out[0.0].scaling_factor' that contains 25\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [], + "source": [ + "# Ensure that the overhead loss of benzene from F101 <= 20%\n", + "m.fs.overhead_loss = Constraint(\n", + " expr=m.fs.F101.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]\n", + " <= 0.20 * m.fs.R101.outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]\n", + ")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.F101.control_volume.properties_in[0.0].scaling_factor' that contains 25\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "Now, add the constraint such that we are producing at least 0.18 mol/s of benzene in the product stream which is the distillate of D101. Let us name this constraint as m.fs.product_flow. \n", + "\n", + "Use Shift+Enter to run the cell once you have typed in your code. \n", + "
" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix 'fs.F101.control_volume.scaling_factor'\n", - "that contains 1 component keys that are not exported as part of the NL file.\n", - "Skipping.\n" - ] + "cell_type": "code", + "execution_count": 69, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Todo: Add minimum product flow constraint\n", + "m.fs.product_flow = Constraint(expr=m.fs.D101.condenser.distillate.flow_mol[0] >= 0.18)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.R101.control_volume.properties_out[0.0].scaling_factor' that contains 25\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us add the final constraint on product purity or the mole fraction of benzene in the distillate such that it is at least greater than 99%. " + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.R101.control_volume.properties_in[0.0].scaling_factor' that contains 25\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.product_purity = Constraint(\n", + " expr=m.fs.D101.condenser.distillate.mole_frac_comp[0, \"benzene\"] >= 0.99\n", + ")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix 'fs.R101.control_volume.scaling_factor'\n", - "that contains 2 component keys that are not exported as part of the NL file.\n", - "Skipping.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "We have now defined the optimization problem and we are now ready to solve this problem. \n", + "\n", + "\n" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.H101.control_volume.properties_out[0.0].scaling_factor' that contains 25\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 3\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 4073\n", + "Number of nonzeros in inequality constraint Jacobian.: 6\n", + "Number of nonzeros in Lagrangian Hessian.............: 2391\n", + "\n", + "Total number of variables............................: 1176\n", + " variables with only lower bounds: 113\n", + " variables with lower and upper bounds: 372\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 1169\n", + "Total number of inequality constraints...............: 3\n", + " inequality constraints with only lower bounds: 2\n", + " inequality constraints with lower and upper bounds: 0\n", + " inequality constraints with only upper bounds: 1\n", + "\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 0 4.4230147e+05 2.99e+05 9.90e+01 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 4.3753585e+05 2.91e+05 1.28e+02 -1.0 3.09e+06 - 3.58e-01 2.40e-02f 1\n", + " 2 4.3545100e+05 2.78e+05 1.55e+02 -1.0 1.78e+06 - 3.31e-01 4.74e-02h 1\n", + " 3 4.2822311e+05 2.20e+05 4.50e+02 -1.0 2.99e+06 - 2.95e-02 1.35e-01h 1\n", + " 4 4.2249096e+05 1.45e+05 1.43e+03 -1.0 7.01e+06 - 5.14e-01 2.03e-01h 1\n", + " 5 4.2194364e+05 8.17e+04 1.70e+04 -1.0 6.06e+06 - 5.97e-01 4.28e-01h 1\n", + " 6 4.2602765e+05 4.55e+04 1.10e+06 -1.0 4.32e+06 - 9.26e-01 5.07e-01h 1\n", + " 7 4.3776643e+05 2.03e+04 6.44e+09 -1.0 2.42e+06 - 9.90e-01 9.47e-01h 1\n", + " 8 4.3846260e+05 1.92e+04 6.05e+09 -1.0 4.42e+05 - 5.40e-01 5.74e-02h 1\n", + " 9 4.4529853e+05 4.05e+04 4.66e+10 -1.0 2.47e+05 - 9.96e-01 9.90e-01h 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 10 4.4906283e+05 9.76e+03 1.10e+10 -1.0 1.12e+03 -4.0 1.26e-01 7.45e-01h 1\n", + " 11 4.5079086e+05 1.19e+03 1.54e+09 -1.0 5.63e+02 -4.5 3.77e-01 1.00e+00h 1\n", + " 12 4.5024224e+05 2.66e+00 3.67e+06 -1.0 6.61e+01 -5.0 1.00e+00 1.00e+00f 1\n", + " 13 4.4946170e+05 5.64e-01 9.29e+05 -1.0 1.81e+02 -5.4 1.00e+00 7.88e-01f 1\n", + " 14 4.4916780e+05 8.48e+00 1.62e+05 -1.0 2.83e+02 -5.9 1.00e+00 1.00e+00f 1\n", + " 15 4.4899127e+05 4.83e+00 9.07e+04 -1.0 1.01e+02 -6.4 1.00e+00 4.40e-01f 2\n", + " 16 4.4886718e+05 7.00e-01 4.61e+02 -1.0 2.35e+02 -6.9 1.00e+00 1.00e+00f 1\n", + " 17 4.4800159e+05 1.39e+02 4.52e+06 -3.8 1.17e+03 -7.3 9.79e-01 9.37e-01f 1\n", + " 18 4.4672196e+05 9.59e+02 1.22e+06 -3.8 4.55e+03 -7.8 1.00e+00 9.43e-01f 1\n", + " 19 4.4401667e+05 7.75e+03 1.55e+05 -3.8 1.08e+04 -8.3 1.00e+00 1.00e+00f 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 20 4.4185035e+05 1.91e+04 1.36e+04 -3.8 1.33e+04 -8.8 1.00e+00 1.00e+00h 1\n", + " 21 4.4241001e+05 3.52e+03 5.96e+03 -3.8 2.94e+03 -9.2 1.00e+00 1.00e+00h 1\n", + " 22 4.4185237e+05 7.82e+00 2.91e+02 -3.8 7.13e+03 -9.7 2.39e-01 1.00e+00h 1\n", + " 23 4.4124091e+05 1.53e+01 3.11e+02 -3.8 4.82e+04 -10.2 8.59e-01 1.36e-01f 1\n", + " 24 4.4137379e+05 1.80e+00 2.91e+02 -3.8 1.41e+04 - 1.95e-01 1.00e+00h 1\n", + " 25 4.3862833e+05 1.70e+03 9.48e+04 -3.8 1.57e+07 - 1.29e-03 9.10e-02f 1\n", + " 26 4.3883308e+05 1.49e+03 8.46e+04 -3.8 1.02e+06 - 1.00e+00 1.35e-01h 1\n", + " 27 4.3885472e+05 2.18e+01 3.40e+03 -3.8 1.38e+05 - 1.00e+00 1.00e+00h 1\n", + " 28 4.3884160e+05 5.90e-02 6.38e+01 -3.8 8.66e+03 - 1.00e+00 1.00e+00h 1\n", + " 29 4.3884157e+05 6.48e-07 4.63e-04 -3.8 2.89e+01 - 1.00e+00 1.00e+00h 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 30 4.3883990e+05 3.57e-01 2.38e+03 -5.7 8.19e+02 - 1.00e+00 1.00e+00f 1\n", + " 31 4.3883992e+05 3.50e-07 7.79e-06 -5.7 3.55e-01 - 1.00e+00 1.00e+00h 1\n", + " 32 4.3883990e+05 5.47e-05 3.63e-01 -8.0 1.01e+01 - 1.00e+00 1.00e+00h 1\n", + " 33 4.3883990e+05 2.24e-08 1.46e-07 -8.0 5.42e-05 - 1.00e+00 1.00e+00h 1\n", + "\n", + "Number of Iterations....: 33\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 4.3883989842628603e+02 4.3883989842628600e+05\n", + "Dual infeasibility......: 1.4600704448671754e-07 1.4600704448671753e-04\n", + "Constraint violation....: 2.9103830456733704e-11 2.2351741790771484e-08\n", + "Complementarity.........: 9.0909948039799681e-09 9.0909948039799686e-06\n", + "Overall NLP error.......: 9.0909948039799681e-09 1.4600704448671753e-04\n", + "\n", + "\n", + "Number of objective function evaluations = 35\n", + "Number of objective gradient evaluations = 34\n", + "Number of equality constraint evaluations = 35\n", + "Number of inequality constraint evaluations = 35\n", + "Number of equality constraint Jacobian evaluations = 34\n", + "Number of inequality constraint Jacobian evaluations = 34\n", + "Number of Lagrangian Hessian evaluations = 33\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.164\n", + "Total CPU secs in NLP function evaluations = 0.020\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + } + ], + "source": [ + "results = solver.solve(m, tee=True)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: model contains export suffix\n", - "'fs.H101.control_volume.properties_in[0.0].scaling_factor' that contains 25\n", - "component keys that are not exported as part of the NL file. Skipping.\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optimization Results\n", + "\n", + "Display the results and product specifications" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", - "tol=1e-06\n", - "max_iter=200\n" - ] + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total cost = $ 438839.898426286\n", + "operating cost = $ 408883.5314830889\n", + "capital cost = $ 29956.3669431971\n", + "\n", + "Distillate flowrate = 0.1799999900263989 mol/s\n", + "Benzene purity = 98.99999900049086 %\n", + "Residue flowrate = 0.1085161642426372 mol/s\n", + "Toluene purity = 15.676178086213548 %\n", + "\n", + "Conversion = 93.38705916369427 %\n", + "\n", + "Overhead benzene loss in F101 = 17.34061793115618 %\n" + ] + } + ], + "source": [ + "print(\"total cost = $\", value(m.fs.capital_cost) + value(m.fs.operating_cost))\n", + "print(\"operating cost = $\", value(m.fs.operating_cost))\n", + "print(\"capital cost = $\", value(m.fs.capital_cost))\n", + "print()\n", + "print(\n", + " \"Distillate flowrate = \",\n", + " value(m.fs.D101.condenser.distillate.flow_mol[0]()),\n", + " \"mol/s\",\n", + ")\n", + "print(\n", + " \"Benzene purity = \",\n", + " 100 * value(m.fs.D101.condenser.distillate.mole_frac_comp[0, \"benzene\"]),\n", + " \"%\",\n", + ")\n", + "print(\"Residue flowrate = \", value(m.fs.D101.reboiler.bottoms.flow_mol[0]()), \"mol/s\")\n", + "print(\n", + " \"Toluene purity = \",\n", + " 100 * value(m.fs.D101.reboiler.bottoms.mole_frac_comp[0, \"toluene\"]),\n", + " \"%\",\n", + ")\n", + "print()\n", + "print(\"Conversion = \", 100 * value(m.fs.R101.conversion), \"%\")\n", + "print()\n", + "print(\n", + " \"Overhead benzene loss in F101 = \",\n", + " 100\n", + " * value(m.fs.F101.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"])\n", + " / value(m.fs.R101.outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]),\n", + " \"%\",\n", + ")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "\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 ma27.\n", - "\n", - "Number of nonzeros in equality constraint Jacobian...: 4073\n", - "Number of nonzeros in inequality constraint Jacobian.: 6\n", - "Number of nonzeros in Lagrangian Hessian.............: 2391\n", - "\n", - "Total number of variables............................: 1176\n", - " variables with only lower bounds: 113\n", - " variables with lower and upper bounds: 372\n", - " variables with only upper bounds: 0\n", - "Total number of equality constraints.................: 1169\n", - "Total number of inequality constraints...............: 3\n", - " inequality constraints with only lower bounds: 2\n", - " inequality constraints with lower and upper bounds: 0\n", - " inequality constraints with only upper bounds: 1\n", - "\n", - "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", - " 0 4.4230147e+05 2.99e+05 9.90e+01 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", - " 1 4.3753585e+05 2.91e+05 1.28e+02 -1.0 3.09e+06 - 3.58e-01 2.40e-02f 1\n", - " 2 4.3545100e+05 2.78e+05 1.55e+02 -1.0 1.78e+06 - 3.31e-01 4.74e-02h 1\n", - " 3 4.2822311e+05 2.20e+05 4.50e+02 -1.0 2.99e+06 - 2.95e-02 1.35e-01h 1\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Display optimal values for the decision variables" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - " 4 4.2249096e+05 1.45e+05 1.43e+03 -1.0 7.01e+06 - 5.14e-01 2.03e-01h 1\n", - " 5 4.2194364e+05 8.17e+04 1.70e+04 -1.0 6.06e+06 - 5.97e-01 4.28e-01h 1\n", - " 6 4.2602765e+05 4.55e+04 1.10e+06 -1.0 4.32e+06 - 9.26e-01 5.07e-01h 1\n", - " 7 4.3776643e+05 2.03e+04 6.44e+09 -1.0 2.42e+06 - 9.90e-01 9.47e-01h 1\n", - " 8 4.3846260e+05 1.92e+04 6.05e+09 -1.0 4.42e+05 - 5.40e-01 5.74e-02h 1\n", - " 9 4.4529853e+05 4.05e+04 4.66e+10 -1.0 2.47e+05 - 9.96e-01 9.90e-01h 1\n", - "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", - " 10 4.4906283e+05 9.76e+03 1.10e+10 -1.0 1.12e+03 -4.0 1.26e-01 7.45e-01h 1\n", - " 11 4.5079086e+05 1.19e+03 1.54e+09 -1.0 5.63e+02 -4.5 3.77e-01 1.00e+00h 1\n", - " 12 4.5024224e+05 2.66e+00 3.67e+06 -1.0 6.61e+01 -5.0 1.00e+00 1.00e+00f 1\n", - " 13 4.4946170e+05 5.64e-01 9.29e+05 -1.0 1.81e+02 -5.4 1.00e+00 7.88e-01f 1\n", - " 14 4.4916780e+05 8.48e+00 1.62e+05 -1.0 2.83e+02 -5.9 1.00e+00 1.00e+00f 1\n" - ] + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimal Values\n", + "\n", + "H101 outlet temperature = 568.923204295196 K\n", + "\n", + "R101 outlet temperature = 790.3655425698853 K\n", + "\n", + "F101 outlet temperature = 298.0 K\n", + "\n", + "H102 outlet temperature = 368.7414339952852 K\n" + ] + } + ], + "source": [ + "print(\"Optimal Values\")\n", + "print()\n", + "\n", + "print(\"H101 outlet temperature = \", value(m.fs.H101.outlet.temperature[0]), \"K\")\n", + "\n", + "print()\n", + "print(\"R101 outlet temperature = \", value(m.fs.R101.outlet.temperature[0]), \"K\")\n", + "\n", + "print()\n", + "print(\"F101 outlet temperature = \", value(m.fs.F101.vap_outlet.temperature[0]), \"K\")\n", + "\n", + "print()\n", + "print(\"H102 outlet temperature = \", value(m.fs.H102.outlet.temperature[0]), \"K\")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - " 15 4.4899127e+05 4.83e+00 9.06e+04 -1.0 1.01e+02 -6.4 1.00e+00 4.40e-01f 2\n", - " 16 4.4886718e+05 7.00e-01 4.61e+02 -1.0 2.35e+02 -6.9 1.00e+00 1.00e+00f 1\n", - " 17 4.4800159e+05 1.39e+02 4.52e+06 -3.8 1.17e+03 -7.3 9.79e-01 9.37e-01f 1\n", - " 18 4.4672196e+05 9.59e+02 1.22e+06 -3.8 4.55e+03 -7.8 1.00e+00 9.43e-01f 1\n", - " 19 4.4401667e+05 7.75e+03 1.55e+05 -3.8 1.08e+04 -8.3 1.00e+00 1.00e+00f 1\n", - "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", - " 20 4.4185035e+05 1.91e+04 1.36e+04 -3.8 1.33e+04 -8.8 1.00e+00 1.00e+00h 1\n", - " 21 4.4241001e+05 3.52e+03 5.96e+03 -3.8 2.94e+03 -9.2 1.00e+00 1.00e+00h 1\n", - " 22 4.4185237e+05 7.82e+00 2.91e+02 -3.8 7.13e+03 -9.7 2.39e-01 1.00e+00h 1\n", - " 23 4.4124091e+05 1.53e+01 3.11e+02 -3.8 4.82e+04 -10.2 8.59e-01 1.36e-01f 1\n", - " 24 4.4137379e+05 1.80e+00 2.91e+02 -3.8 1.41e+04 - 1.95e-01 1.00e+00h 1\n", - " 25 4.3862833e+05 1.70e+03 9.48e+04 -3.8 1.57e+07 - 1.29e-03 9.10e-02f 1\n", - " 26 4.3883308e+05 1.49e+03 8.46e+04 -3.8 1.02e+06 - 1.00e+00 1.35e-01h 1\n", - " 27 4.3885472e+05 2.18e+01 3.40e+03 -3.8 1.38e+05 - 1.00e+00 1.00e+00h 1\n", - " 28 4.3884160e+05 5.90e-02 6.38e+01 -3.8 8.66e+03 - 1.00e+00 1.00e+00h 1\n", - " 29 4.3884157e+05 6.41e-07 4.63e-04 -3.8 2.89e+01 - 1.00e+00 1.00e+00h 1\n", - "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", - " 30 4.3883990e+05 3.57e-01 2.38e+03 -5.7 8.19e+02 - 1.00e+00 1.00e+00f 1\n", - " 31 4.3883992e+05 3.65e-07 1.29e-05 -5.7 3.55e-01 - 1.00e+00 1.00e+00h 1\n", - " 32 4.3883990e+05 5.46e-05 3.63e-01 -8.0 1.01e+01 - 1.00e+00 1.00e+00h 1\n", - " 33 4.3883990e+05 3.73e-08 3.38e-07 -8.0 5.42e-05 - 1.00e+00 1.00e+00h 1\n", - "\n", - "Number of Iterations....: 33\n", - "\n", - " (scaled) (unscaled)\n", - "Objective...............: 4.3883989842628671e+02 4.3883989842628670e+05\n", - "Dual infeasibility......: 3.3796318887468276e-07 3.3796318887468276e-04\n", - "Constraint violation....: 2.9103830456733704e-11 3.7252902984619141e-08\n", - "Complementarity.........: 9.0909948039808002e-09 9.0909948039808004e-06\n", - "Overall NLP error.......: 9.0909948039808002e-09 3.3796318887468276e-04\n", - "\n", - "\n", - "Number of objective function evaluations = 35\n", - "Number of objective gradient evaluations = 34\n", - "Number of equality constraint evaluations = 35\n", - "Number of inequality constraint evaluations = 35\n", - "Number of equality constraint Jacobian evaluations = 34\n", - "Number of inequality constraint Jacobian evaluations = 34\n", - "Number of Lagrangian Hessian evaluations = 33\n", - "Total CPU secs in IPOPT (w/o function evaluations) = 0.076\n", - "Total CPU secs in NLP function evaluations = 0.017\n", - "\n", - "EXIT: Optimal Solution Found.\n" - ] - } - ], - "source": [ - "results = solver.solve(m, tee=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Optimization Results\n", - "\n", - "Display the results and product specifications" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "total cost = $ 438839.8984262867\n", - "operating cost = $ 408883.53148308955\n", - "capital cost = $ 29956.366943197143\n", - "\n", - "Distillate flowrate = 0.17999999002639888 mol/s\n", - "Benzene purity = 98.99999900049087 %\n", - "Residue flowrate = 0.10851616424263709 mol/s\n", - "Toluene purity = 15.676178086212413 %\n", - "\n", - "Conversion = 93.38705916369456 %\n", - "\n", - "Overhead benzene loss in F101 = 17.340617931156157 %\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Key Takeaways\n", + "\n", + "Observe that the optimization was able to reduce the yearly operating cost from \\\\$427,593 to \\\\$408,342 (~4.5%). However, the amortized capital cost more than doubled from \\\\$14,704 to \\\\$29,927 due to the need to increase the conversion in the reactor (from 75% to 93%) to meet the production and purity constraints. \n", + "\n", + "Further, observe that the product flow rate and product purity are at their minimum values (0.18 mol/s and 99%, respectively). This is expected as increasing recovery would require more energy and cost to purify the product.\n", + "\n", + "\n", + "Finally, observe that the operating temperature of the flash (F101) is almost at its lower bound. This helps in minimizing the amount of benzene in the vapor stream leaving the flash." + ] } - ], - "source": [ - "print(\"total cost = $\", value(m.fs.capital_cost) + value(m.fs.operating_cost))\n", - "print(\"operating cost = $\", value(m.fs.operating_cost))\n", - "print(\"capital cost = $\", value(m.fs.capital_cost))\n", - "print()\n", - "print(\n", - " \"Distillate flowrate = \",\n", - " value(m.fs.D101.condenser.distillate.flow_mol[0]()),\n", - " \"mol/s\",\n", - ")\n", - "print(\n", - " \"Benzene purity = \",\n", - " 100 * value(m.fs.D101.condenser.distillate.mole_frac_comp[0, \"benzene\"]),\n", - " \"%\",\n", - ")\n", - "print(\"Residue flowrate = \", value(m.fs.D101.reboiler.bottoms.flow_mol[0]()), \"mol/s\")\n", - "print(\n", - " \"Toluene purity = \",\n", - " 100 * value(m.fs.D101.reboiler.bottoms.mole_frac_comp[0, \"toluene\"]),\n", - " \"%\",\n", - ")\n", - "print()\n", - "print(\"Conversion = \", 100 * value(m.fs.R101.conversion), \"%\")\n", - "print()\n", - "print(\n", - " \"Overhead benzene loss in F101 = \",\n", - " 100\n", - " * value(m.fs.F101.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"])\n", - " / value(m.fs.R101.outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]),\n", - " \"%\",\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Display optimal values for the decision variables" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Optimal Values\n", - "\n", - "H101 outlet temperature = 568.9232042951961 K\n", - "\n", - "R101 outlet temperature = 790.3655425698863 K\n", - "\n", - "F101 outlet temperature = 298.0 K\n", - "\n", - "H102 outlet temperature = 368.7414339952852 K\n" - ] + ], + "metadata": { + "celltoolbar": "Tags", + "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" } - ], - "source": [ - "print(\"Optimal Values\")\n", - "print()\n", - "\n", - "print(\"H101 outlet temperature = \", value(m.fs.H101.outlet.temperature[0]), \"K\")\n", - "\n", - "print()\n", - "print(\"R101 outlet temperature = \", value(m.fs.R101.outlet.temperature[0]), \"K\")\n", - "\n", - "print()\n", - "print(\"F101 outlet temperature = \", value(m.fs.F101.vap_outlet.temperature[0]), \"K\")\n", - "\n", - "print()\n", - "print(\"H102 outlet temperature = \", value(m.fs.H102.outlet.temperature[0]), \"K\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Key Takeaways\n", - "\n", - "Observe that the optimization was able to reduce the yearly operating cost from \\\\$427,593 to \\\\$408,342 (~4.5%). However, the amortized capital cost more than doubled from \\\\$14,704 to \\\\$29,927 due to the need to increase the conversion in the reactor (from 75% to 93%) to meet the production and purity constraints. \n", - "\n", - "Further, observe that the product flow rate and product purity are at their minimum values (0.18 mol/s and 99%, respectively). This is expected as increasing recovery would require more energy and cost to purify the product.\n", - "\n", - "\n", - "Finally, observe that the operating temperature of the flash (F101) is almost at its lower bound. This helps in minimizing the amount of benzene in the vapor stream leaving the flash." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "celltoolbar": "Tags", - "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.11.5" - } - }, - "nbformat": 4, - "nbformat_minor": 3 -} + "nbformat": 4, + "nbformat_minor": 3 +} \ No newline at end of file diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_exercise.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_exercise.ipynb index 410b7c88..65ccb95f 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_exercise.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_exercise.ipynb @@ -61,7 +61,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 → C6H6 + CH4**\n", + "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -220,6 +220,7 @@ "from idaes.core.util.initialization import propagate_state\n", "from idaes.core.solvers import get_solver\n", "import idaes.core.util.scaling as iscale\n", + "from idaes.core.util.exceptions import InitializationError\n", "\n", "# Import idaes logger to set output levels\n", "import idaes.logger as idaeslog" @@ -656,7 +657,15 @@ "cell_type": "code", "execution_count": 28, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "29\n" + ] + } + ], "source": [ "print(degrees_of_freedom(m))" ] @@ -840,7 +849,42 @@ "cell_type": "code", "execution_count": 38, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n" + ] + } + ], "source": [ "# Set scaling factors for heat duty, reaction extent and volume\n", "iscale.set_scaling_factor(m.fs.H101.control_volume.heat, 1e-2)\n", @@ -921,7 +965,15 @@ "cell_type": "code", "execution_count": 43, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fs.s03\n" + ] + } + ], "source": [ "for o in heuristic_tear_set:\n", " print(o.name)" @@ -938,7 +990,20 @@ "cell_type": "code", "execution_count": 44, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fs.H101\n", + "fs.R101\n", + "fs.F101\n", + "fs.S101\n", + "fs.C101\n", + "fs.M101\n" + ] + } + ], "source": [ "for o in order:\n", " print(o[0].name)" @@ -970,7 +1035,7 @@ " (0, \"Liq\", \"hydrogen\"): 1e-5,\n", " (0, \"Liq\", \"methane\"): 1e-5,\n", " },\n", - " \"temperature\": {0: 303},\n", + " \"temperature\": {0: 303.2},\n", " \"pressure\": {0: 350000},\n", "}\n", "\n", @@ -982,7 +1047,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we need to tell the tool how to initialize a particular unit. We will be writing a python function which takes in a \"unit\" and calls the initialize method on that unit." + "Next, we need to tell the tool how to initialize a particular unit. We will be writing a python function which takes in a \"unit\" and calls the initialize method on that unit. For the initialization, we will import a Block Triangularization Initializer which decomposes the model into a set of subproblems. These subproblems are solved using a block triangularization transformation before applying a simple Newton or user-selected solver. Methods such as block triangularization often solve faster and yield more reliable behavior than heuristic methods, but sometime struggle to decompose models with strongly coupled equations (e.g. column models, systems with counter-current flow, vapor-liquid equilibrium)." ] }, { @@ -992,7 +1057,15 @@ "outputs": [], "source": [ "def function(unit):\n", - " unit.initialize(outlvl=idaeslog.INFO)" + " # Try initializing using default initializer, \n", + " # if it fails (probably due to scaling) try for the second time\n", + " try:\n", + " initializer = unit.default_initializer()\n", + " initializer.initialize(unit, output_level=idaeslog.INFO)\n", + " except InitializationError:\n", + " solver=get_solver()\n", + " solver.solve(unit)\n", + " " ] }, { @@ -1008,7 +1081,132 @@ "metadata": { "scrolled": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:14 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 12\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 11\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 11\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "WARNING: Wegstein failed to converge in 3 iterations\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:33 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 5 optimal - .\n" + ] + } + ], "source": [ "seq.run(m, function)" ] @@ -1027,7 +1225,91 @@ "cell_type": "code", "execution_count": 48, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 6\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 1097\n", + "Number of nonzeros in inequality constraint Jacobian.: 0\n", + "Number of nonzeros in Lagrangian Hessian.............: 877\n", + "\n", + "Total number of variables............................: 363\n", + " variables with only lower bounds: 8\n", + " variables with lower and upper bounds: 155\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 363\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.82e+04 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 0.0000000e+00 8.69e+03 1.44e+03 -1.0 2.00e+04 - 9.71e-01 4.67e-01H 1\n", + " 2 0.0000000e+00 1.29e+03 1.56e+03 -1.0 1.60e+04 - 9.79e-01 4.90e-01h 1\n", + " 3 0.0000000e+00 1.18e+03 1.55e+05 -1.0 1.40e+04 - 9.90e-01 4.99e-01h 1\n", + " 4 0.0000000e+00 5.46e+02 2.32e+09 -1.0 8.42e+03 - 1.00e+00 9.82e-01h 1\n", + " 5 0.0000000e+00 5.46e+03 3.66e+10 -1.0 5.97e+02 - 1.00e+00 9.90e-01h 1\n", + " 6 0.0000000e+00 1.21e+03 8.01e+09 -1.0 5.75e+00 - 1.00e+00 1.00e+00h 1\n", + " 7 0.0000000e+00 6.41e+00 3.87e+07 -1.0 1.53e-03 - 1.00e+00 1.00e+00f 1\n", + " 8 0.0000000e+00 1.96e-04 9.36e+02 -1.0 7.28e-06 - 1.00e+00 1.00e+00h 1\n", + " 9 0.0000000e+00 2.24e-08 4.99e-01 -3.8 5.92e-08 - 1.00e+00 1.00e+00h 1\n", + "Cannot recompute multipliers for feasibility problem. Error in eq_mult_calculator\n", + "\n", + "Number of Iterations....: 9\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Dual infeasibility......: 1.5042487592972509e+04 1.5042487592972509e+04\n", + "Constraint violation....: 2.9103830456733704e-11 2.2351741790771484e-08\n", + "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Overall NLP error.......: 2.9103830456733704e-11 1.5042487592972509e+04\n", + "\n", + "\n", + "Number of objective function evaluations = 11\n", + "Number of objective gradient evaluations = 10\n", + "Number of equality constraint evaluations = 11\n", + "Number of inequality constraint evaluations = 0\n", + "Number of equality constraint Jacobian evaluations = 10\n", + "Number of inequality constraint Jacobian evaluations = 0\n", + "Number of Lagrangian Hessian evaluations = 9\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.011\n", + "Total CPU secs in NLP function evaluations = 0.001\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + } + ], "source": [ "# Create the solver object\n", "solver = get_solver()\n", @@ -1059,7 +1341,617 @@ "cell_type": "code", "execution_count": 50, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_flow_reflux[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_mole_frac_reflux[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_mole_frac_reflux[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_flow_vapor_reboil[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_mole_frac_vapor_reboil[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_mole_frac_vapor_reboil[0.0,toluene]\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101: Begin initialization.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray: Begin initialization.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: State Released.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: State Released.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: State Released.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: State Released.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume: Initialization Complete\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser: Initialization Complete, optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: State Released.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: State Released.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler: Initialization Complete, optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: State Released.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1]: Begin initialization.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: State Released.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: State Released.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[2]: Begin initialization.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: State Released.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: State Released.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: State Released.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3]: Begin initialization.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: State Released.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: State Released.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: State Released.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4]: Begin initialization.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: State Released.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: State Released.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6]: Begin initialization.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: State Released.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: State Released.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[7]: Begin initialization.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: State Released.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: State Released.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: State Released.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8]: Begin initialization.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: State Released.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: State Released.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: State Released.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9]: Begin initialization.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: State Released.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: State Released.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: State Released.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10]: Begin initialization.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: State Released.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Rectification section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Stripping section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Column section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: State Released.\n", + "2024-08-28 18:39:02 [INFO] idaes.init.fs.D101: Column section + Condenser initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:02 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: State Released.\n", + "2024-08-28 18:39:03 [INFO] idaes.init.fs.D101: Column section + Condenser + Reboiler initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:03 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: State Released.\n" + ] + } + ], "source": [ "# Add distillation column to the flowsheet\n", "m.fs.D101 = TrayColumn(\n", @@ -1144,7 +2036,101 @@ "cell_type": "code", "execution_count": 53, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 7\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 4042\n", + "Number of nonzeros in inequality constraint Jacobian.: 0\n", + "Number of nonzeros in Lagrangian Hessian.............: 2376\n", + "\n", + "Total number of variables............................: 1169\n", + " variables with only lower bounds: 112\n", + " variables with lower and upper bounds: 365\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 1169\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.83e+04 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 0.0000000e+00 8.70e+03 1.50e+03 -1.0 3.69e+04 - 9.71e-01 4.62e-01H 1\n", + " 2 0.0000000e+00 1.53e+03 1.56e+03 -1.0 6.75e+03 - 9.77e-01 4.89e-01h 1\n", + " 3 0.0000000e+00 1.37e+03 1.55e+05 -1.0 9.37e+03 - 9.90e-01 4.99e-01h 1\n", + " 4 0.0000000e+00 6.14e+02 2.31e+09 -1.0 6.09e+03 - 1.00e+00 9.81e-01h 1\n", + " 5 0.0000000e+00 5.32e+03 3.62e+10 -1.0 5.56e+02 - 1.00e+00 9.90e-01h 1\n", + " 6 0.0000000e+00 1.16e+03 7.80e+09 -1.0 5.36e+00 - 1.00e+00 1.00e+00h 1\n", + " 7 0.0000000e+00 5.96e+00 3.64e+07 -1.0 1.47e-03 - 1.00e+00 1.00e+00f 1\n", + " 8 0.0000000e+00 1.69e-04 8.15e+02 -1.0 6.77e-06 - 1.00e+00 1.00e+00h 1\n", + " 9 0.0000000e+00 7.45e-09 6.64e-03 -3.8 2.00e-07 - 1.00e+00 1.00e+00h 1\n", + "Cannot recompute multipliers for feasibility problem. Error in eq_mult_calculator\n", + "\n", + "Number of Iterations....: 9\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Dual infeasibility......: 1.5042483516409773e+04 1.5042483516409773e+04\n", + "Constraint violation....: 2.9103830456733704e-11 7.4505805969238281e-09\n", + "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Overall NLP error.......: 2.9103830456733704e-11 1.5042483516409773e+04\n", + "\n", + "\n", + "Number of objective function evaluations = 11\n", + "Number of objective gradient evaluations = 10\n", + "Number of equality constraint evaluations = 11\n", + "Number of inequality constraint evaluations = 0\n", + "Number of equality constraint Jacobian evaluations = 10\n", + "Number of inequality constraint Jacobian evaluations = 0\n", + "Number of Lagrangian Hessian evaluations = 9\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.083\n", + "Total CPU secs in NLP function evaluations = 0.013\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'Problem': [{'Lower bound': -inf, 'Upper bound': inf, 'Number of objectives': 1, 'Number of constraints': 1169, 'Number of variables': 1169, 'Sense': 'unknown'}], 'Solver': [{'Status': 'ok', 'Message': 'Ipopt 3.13.2\\\\x3a Optimal Solution Found', 'Termination condition': 'optimal', 'Id': 0, 'Error rc': 0, 'Time': 0.2022566795349121}], 'Solution': [OrderedDict([('number of solutions', 0), ('number of solutions displayed', 0)])]}" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "solver.solve(m, tee=True)" ] @@ -1162,7 +2148,26 @@ "cell_type": "code", "execution_count": 55, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total cost = $ 442301.47075252194\n", + "operating cost = $ 427596.73056805483\n", + "capital cost = $ 14704.740184467111\n", + "\n", + "Distillate flowrate = 0.16196898920633368 mol/s\n", + "Benzene purity = 89.4916166580088 %\n", + "Residue flowrate = 0.10515007120697904 mol/s\n", + "Toluene purity = 43.32260291055251 %\n", + "\n", + "Conversion = 75.0 %\n", + "\n", + "Overhead benzene loss in F101 = 42.161938483603194 %\n" + ] + } + ], "source": [ "print(\"total cost = $\", value(m.fs.capital_cost) + value(m.fs.operating_cost))\n", "print(\"operating cost = $\", value(m.fs.operating_cost))\n", @@ -1207,7 +2212,40 @@ "cell_type": "code", "execution_count": 57, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "====================================================================================\n", + "Unit : fs.R101 Time: 0.0\n", + "------------------------------------------------------------------------------------\n", + " Unit Performance\n", + "\n", + " Variables: \n", + "\n", + " Key : Value : Units : Fixed : Bounds\n", + " Heat Duty : 0.0000 : watt : True : (None, None)\n", + " Volume : 0.14705 : meter ** 3 : False : (None, None)\n", + "\n", + "------------------------------------------------------------------------------------\n", + " Stream Table\n", + " Units Inlet Outlet \n", + " flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.2993e-07\n", + " flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 8.4147e-07\n", + " flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-12\n", + " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-12\n", + " flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.11936 0.35374\n", + " flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.31252 0.078129\n", + " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.0377 1.2721\n", + " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.56260 0.32821\n", + " temperature kelvin 600.00 771.85\n", + " pressure pascal 3.5000e+05 3.5000e+05\n", + "====================================================================================\n" + ] + } + ], "source": [ "m.fs.R101.report()" ] @@ -1223,7 +2261,40 @@ "cell_type": "code", "execution_count": 58, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "====================================================================================\n", + "Unit : fs.F101 Time: 0.0\n", + "------------------------------------------------------------------------------------\n", + " Unit Performance\n", + "\n", + " Variables: \n", + "\n", + " Key : Value : Units : Fixed : Bounds\n", + " Heat Duty : -70343. : watt : False : (None, None)\n", + " Pressure Change : 0.0000 : pascal : True : (None, None)\n", + "\n", + "------------------------------------------------------------------------------------\n", + " Stream Table\n", + " Units Inlet Vapor Outlet Liquid Outlet\n", + " flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.0000e-08 0.20460 \n", + " flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 1.0000e-08 0.062520 \n", + " flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 2.6712e-07 \n", + " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 2.6712e-07 \n", + " flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.35374 0.14915 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.078129 0.015610 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2721 1.2721 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.32821 0.32821 1.0000e-08 \n", + " temperature kelvin 771.85 325.00 325.00 \n", + " pressure pascal 3.5000e+05 3.5000e+05 3.5000e+05 \n", + "====================================================================================\n" + ] + } + ], "source": [ "m.fs.F101.report()" ] @@ -1244,7 +2315,25 @@ "cell_type": "code", "execution_count": 59, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Units Reactor Light Gases\n", + "flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 \n", + "flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.35374 0.14915 \n", + "flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.078129 0.015610 \n", + "flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2721 1.2721 \n", + "flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.32821 0.32821 \n", + "temperature kelvin 771.85 325.00 \n", + "pressure pascal 3.5000e+05 3.5000e+05 \n" + ] + } + ], "source": [ "from idaes.core.util.tables import (\n", " create_stream_table_dataframe,\n", @@ -1504,7 +2593,117 @@ "cell_type": "code", "execution_count": 71, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 3\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 4073\n", + "Number of nonzeros in inequality constraint Jacobian.: 6\n", + "Number of nonzeros in Lagrangian Hessian.............: 2391\n", + "\n", + "Total number of variables............................: 1176\n", + " variables with only lower bounds: 113\n", + " variables with lower and upper bounds: 372\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 1169\n", + "Total number of inequality constraints...............: 3\n", + " inequality constraints with only lower bounds: 2\n", + " inequality constraints with lower and upper bounds: 0\n", + " inequality constraints with only upper bounds: 1\n", + "\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 0 4.4230147e+05 2.99e+05 9.90e+01 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 4.3753585e+05 2.91e+05 1.28e+02 -1.0 3.09e+06 - 3.58e-01 2.40e-02f 1\n", + " 2 4.3545100e+05 2.78e+05 1.55e+02 -1.0 1.78e+06 - 3.31e-01 4.74e-02h 1\n", + " 3 4.2822311e+05 2.20e+05 4.50e+02 -1.0 2.99e+06 - 2.95e-02 1.35e-01h 1\n", + " 4 4.2249096e+05 1.45e+05 1.43e+03 -1.0 7.01e+06 - 5.14e-01 2.03e-01h 1\n", + " 5 4.2194364e+05 8.17e+04 1.70e+04 -1.0 6.06e+06 - 5.97e-01 4.28e-01h 1\n", + " 6 4.2602765e+05 4.55e+04 1.10e+06 -1.0 4.32e+06 - 9.26e-01 5.07e-01h 1\n", + " 7 4.3776643e+05 2.03e+04 6.44e+09 -1.0 2.42e+06 - 9.90e-01 9.47e-01h 1\n", + " 8 4.3846260e+05 1.92e+04 6.05e+09 -1.0 4.42e+05 - 5.40e-01 5.74e-02h 1\n", + " 9 4.4529853e+05 4.05e+04 4.66e+10 -1.0 2.47e+05 - 9.96e-01 9.90e-01h 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 10 4.4906283e+05 9.76e+03 1.10e+10 -1.0 1.12e+03 -4.0 1.26e-01 7.45e-01h 1\n", + " 11 4.5079086e+05 1.19e+03 1.54e+09 -1.0 5.63e+02 -4.5 3.77e-01 1.00e+00h 1\n", + " 12 4.5024224e+05 2.66e+00 3.67e+06 -1.0 6.61e+01 -5.0 1.00e+00 1.00e+00f 1\n", + " 13 4.4946170e+05 5.64e-01 9.29e+05 -1.0 1.81e+02 -5.4 1.00e+00 7.88e-01f 1\n", + " 14 4.4916780e+05 8.48e+00 1.62e+05 -1.0 2.83e+02 -5.9 1.00e+00 1.00e+00f 1\n", + " 15 4.4899127e+05 4.83e+00 9.07e+04 -1.0 1.01e+02 -6.4 1.00e+00 4.40e-01f 2\n", + " 16 4.4886718e+05 7.00e-01 4.61e+02 -1.0 2.35e+02 -6.9 1.00e+00 1.00e+00f 1\n", + " 17 4.4800159e+05 1.39e+02 4.52e+06 -3.8 1.17e+03 -7.3 9.79e-01 9.37e-01f 1\n", + " 18 4.4672196e+05 9.59e+02 1.22e+06 -3.8 4.55e+03 -7.8 1.00e+00 9.43e-01f 1\n", + " 19 4.4401667e+05 7.75e+03 1.55e+05 -3.8 1.08e+04 -8.3 1.00e+00 1.00e+00f 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 20 4.4185035e+05 1.91e+04 1.36e+04 -3.8 1.33e+04 -8.8 1.00e+00 1.00e+00h 1\n", + " 21 4.4241001e+05 3.52e+03 5.96e+03 -3.8 2.94e+03 -9.2 1.00e+00 1.00e+00h 1\n", + " 22 4.4185237e+05 7.82e+00 2.91e+02 -3.8 7.13e+03 -9.7 2.39e-01 1.00e+00h 1\n", + " 23 4.4124091e+05 1.53e+01 3.11e+02 -3.8 4.82e+04 -10.2 8.59e-01 1.36e-01f 1\n", + " 24 4.4137379e+05 1.80e+00 2.91e+02 -3.8 1.41e+04 - 1.95e-01 1.00e+00h 1\n", + " 25 4.3862833e+05 1.70e+03 9.48e+04 -3.8 1.57e+07 - 1.29e-03 9.10e-02f 1\n", + " 26 4.3883308e+05 1.49e+03 8.46e+04 -3.8 1.02e+06 - 1.00e+00 1.35e-01h 1\n", + " 27 4.3885472e+05 2.18e+01 3.40e+03 -3.8 1.38e+05 - 1.00e+00 1.00e+00h 1\n", + " 28 4.3884160e+05 5.90e-02 6.38e+01 -3.8 8.66e+03 - 1.00e+00 1.00e+00h 1\n", + " 29 4.3884157e+05 6.48e-07 4.63e-04 -3.8 2.89e+01 - 1.00e+00 1.00e+00h 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 30 4.3883990e+05 3.57e-01 2.38e+03 -5.7 8.19e+02 - 1.00e+00 1.00e+00f 1\n", + " 31 4.3883992e+05 3.50e-07 7.79e-06 -5.7 3.55e-01 - 1.00e+00 1.00e+00h 1\n", + " 32 4.3883990e+05 5.47e-05 3.63e-01 -8.0 1.01e+01 - 1.00e+00 1.00e+00h 1\n", + " 33 4.3883990e+05 2.24e-08 1.46e-07 -8.0 5.42e-05 - 1.00e+00 1.00e+00h 1\n", + "\n", + "Number of Iterations....: 33\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 4.3883989842628603e+02 4.3883989842628600e+05\n", + "Dual infeasibility......: 1.4600704448671754e-07 1.4600704448671753e-04\n", + "Constraint violation....: 2.9103830456733704e-11 2.2351741790771484e-08\n", + "Complementarity.........: 9.0909948039799681e-09 9.0909948039799686e-06\n", + "Overall NLP error.......: 9.0909948039799681e-09 1.4600704448671753e-04\n", + "\n", + "\n", + "Number of objective function evaluations = 35\n", + "Number of objective gradient evaluations = 34\n", + "Number of equality constraint evaluations = 35\n", + "Number of inequality constraint evaluations = 35\n", + "Number of equality constraint Jacobian evaluations = 34\n", + "Number of inequality constraint Jacobian evaluations = 34\n", + "Number of Lagrangian Hessian evaluations = 33\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.164\n", + "Total CPU secs in NLP function evaluations = 0.020\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + } + ], "source": [ "results = solver.solve(m, tee=True)" ] @@ -1522,7 +2721,26 @@ "cell_type": "code", "execution_count": 73, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total cost = $ 438839.898426286\n", + "operating cost = $ 408883.5314830889\n", + "capital cost = $ 29956.3669431971\n", + "\n", + "Distillate flowrate = 0.1799999900263989 mol/s\n", + "Benzene purity = 98.99999900049086 %\n", + "Residue flowrate = 0.1085161642426372 mol/s\n", + "Toluene purity = 15.676178086213548 %\n", + "\n", + "Conversion = 93.38705916369427 %\n", + "\n", + "Overhead benzene loss in F101 = 17.34061793115618 %\n" + ] + } + ], "source": [ "print(\"total cost = $\", value(m.fs.capital_cost) + value(m.fs.operating_cost))\n", "print(\"operating cost = $\", value(m.fs.operating_cost))\n", @@ -1567,7 +2785,23 @@ "cell_type": "code", "execution_count": 75, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimal Values\n", + "\n", + "H101 outlet temperature = 568.923204295196 K\n", + "\n", + "R101 outlet temperature = 790.3655425698853 K\n", + "\n", + "F101 outlet temperature = 298.0 K\n", + "\n", + "H102 outlet temperature = 368.7414339952852 K\n" + ] + } + ], "source": [ "print(\"Optimal Values\")\n", "print()\n", @@ -1597,13 +2831,6 @@ "\n", "Finally, observe that the operating temperature of the flash (F101) is almost at its lower bound. This helps in minimizing the amount of benzene in the vapor stream leaving the flash." ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -1623,9 +2850,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.16" + "version": "3.10.13" } }, "nbformat": 4, "nbformat_minor": 3 -} +} \ No newline at end of file diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_solution.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_solution.ipynb index 1412322e..a401e9b8 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_solution.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_solution.ipynb @@ -61,7 +61,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 → C6H6 + CH4**\n", + "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -234,6 +234,7 @@ "from idaes.core.util.initialization import propagate_state\n", "from idaes.core.solvers import get_solver\n", "import idaes.core.util.scaling as iscale\n", + "from idaes.core.util.exceptions import InitializationError\n", "\n", "# Import idaes logger to set output levels\n", "import idaes.logger as idaeslog" @@ -737,7 +738,15 @@ "cell_type": "code", "execution_count": 28, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "29\n" + ] + } + ], "source": [ "print(degrees_of_freedom(m))" ] @@ -938,7 +947,42 @@ "cell_type": "code", "execution_count": 38, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n" + ] + } + ], "source": [ "# Set scaling factors for heat duty, reaction extent and volume\n", "iscale.set_scaling_factor(m.fs.H101.control_volume.heat, 1e-2)\n", @@ -988,7 +1032,15 @@ "solution" ] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + } + ], "source": [ "# Todo: Check the degrees of freedom\n", "print(degrees_of_freedom(m))" @@ -1033,7 +1085,15 @@ "cell_type": "code", "execution_count": 43, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fs.s03\n" + ] + } + ], "source": [ "for o in heuristic_tear_set:\n", " print(o.name)" @@ -1050,7 +1110,20 @@ "cell_type": "code", "execution_count": 44, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fs.H101\n", + "fs.R101\n", + "fs.F101\n", + "fs.S101\n", + "fs.C101\n", + "fs.M101\n" + ] + } + ], "source": [ "for o in order:\n", " print(o[0].name)" @@ -1082,7 +1155,7 @@ " (0, \"Liq\", \"hydrogen\"): 1e-5,\n", " (0, \"Liq\", \"methane\"): 1e-5,\n", " },\n", - " \"temperature\": {0: 303},\n", + " \"temperature\": {0: 303.2},\n", " \"pressure\": {0: 350000},\n", "}\n", "\n", @@ -1094,7 +1167,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we need to tell the tool how to initialize a particular unit. We will be writing a python function which takes in a \"unit\" and calls the initialize method on that unit." + "Next, we need to tell the tool how to initialize a particular unit. We will be writing a python function which takes in a \"unit\" and calls the initialize method on that unit. For the initialization, we will import a Block Triangularization Initializer which decomposes the model into a set of subproblems. These subproblems are solved using a block triangularization transformation before applying a simple Newton or user-selected solver. Methods such as block triangularization often solve faster and yield more reliable behavior than heuristic methods, but sometime struggle to decompose models with strongly coupled equations (e.g. column models, systems with counter-current flow, vapor-liquid equilibrium)." ] }, { @@ -1104,7 +1177,15 @@ "outputs": [], "source": [ "def function(unit):\n", - " unit.initialize(outlvl=idaeslog.INFO)" + " # Try initializing using default initializer, \n", + " # if it fails (probably due to scaling) try for the second time\n", + " try:\n", + " initializer = unit.default_initializer()\n", + " initializer.initialize(unit, output_level=idaeslog.INFO)\n", + " except InitializationError:\n", + " solver=get_solver()\n", + " solver.solve(unit)\n", + " " ] }, { @@ -1120,7 +1201,132 @@ "metadata": { "scrolled": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:14 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 12\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 11\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 11\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "WARNING: Wegstein failed to converge in 3 iterations\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:33 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 5 optimal - .\n" + ] + } + ], "source": [ "seq.run(m, function)" ] @@ -1139,7 +1345,91 @@ "cell_type": "code", "execution_count": 48, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 6\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 1097\n", + "Number of nonzeros in inequality constraint Jacobian.: 0\n", + "Number of nonzeros in Lagrangian Hessian.............: 877\n", + "\n", + "Total number of variables............................: 363\n", + " variables with only lower bounds: 8\n", + " variables with lower and upper bounds: 155\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 363\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.82e+04 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 0.0000000e+00 8.69e+03 1.44e+03 -1.0 2.00e+04 - 9.71e-01 4.67e-01H 1\n", + " 2 0.0000000e+00 1.29e+03 1.56e+03 -1.0 1.60e+04 - 9.79e-01 4.90e-01h 1\n", + " 3 0.0000000e+00 1.18e+03 1.55e+05 -1.0 1.40e+04 - 9.90e-01 4.99e-01h 1\n", + " 4 0.0000000e+00 5.46e+02 2.32e+09 -1.0 8.42e+03 - 1.00e+00 9.82e-01h 1\n", + " 5 0.0000000e+00 5.46e+03 3.66e+10 -1.0 5.97e+02 - 1.00e+00 9.90e-01h 1\n", + " 6 0.0000000e+00 1.21e+03 8.01e+09 -1.0 5.75e+00 - 1.00e+00 1.00e+00h 1\n", + " 7 0.0000000e+00 6.41e+00 3.87e+07 -1.0 1.53e-03 - 1.00e+00 1.00e+00f 1\n", + " 8 0.0000000e+00 1.96e-04 9.36e+02 -1.0 7.28e-06 - 1.00e+00 1.00e+00h 1\n", + " 9 0.0000000e+00 2.24e-08 4.99e-01 -3.8 5.92e-08 - 1.00e+00 1.00e+00h 1\n", + "Cannot recompute multipliers for feasibility problem. Error in eq_mult_calculator\n", + "\n", + "Number of Iterations....: 9\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Dual infeasibility......: 1.5042487592972509e+04 1.5042487592972509e+04\n", + "Constraint violation....: 2.9103830456733704e-11 2.2351741790771484e-08\n", + "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Overall NLP error.......: 2.9103830456733704e-11 1.5042487592972509e+04\n", + "\n", + "\n", + "Number of objective function evaluations = 11\n", + "Number of objective gradient evaluations = 10\n", + "Number of equality constraint evaluations = 11\n", + "Number of inequality constraint evaluations = 0\n", + "Number of equality constraint Jacobian evaluations = 10\n", + "Number of inequality constraint Jacobian evaluations = 0\n", + "Number of Lagrangian Hessian evaluations = 9\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.011\n", + "Total CPU secs in NLP function evaluations = 0.001\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + } + ], "source": [ "# Create the solver object\n", "solver = get_solver()\n", @@ -1171,7 +1461,617 @@ "cell_type": "code", "execution_count": 50, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_flow_reflux[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_mole_frac_reflux[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_mole_frac_reflux[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_flow_vapor_reboil[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_mole_frac_vapor_reboil[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_mole_frac_vapor_reboil[0.0,toluene]\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101: Begin initialization.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray: Begin initialization.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: State Released.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: State Released.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: State Released.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: State Released.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume: Initialization Complete\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser: Initialization Complete, optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: State Released.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: State Released.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler: Initialization Complete, optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: State Released.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1]: Begin initialization.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: State Released.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: State Released.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[2]: Begin initialization.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: State Released.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: State Released.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: State Released.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3]: Begin initialization.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: State Released.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: State Released.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: State Released.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4]: Begin initialization.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: State Released.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: State Released.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6]: Begin initialization.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: State Released.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: State Released.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[7]: Begin initialization.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: State Released.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: State Released.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: State Released.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8]: Begin initialization.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: State Released.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: State Released.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: State Released.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9]: Begin initialization.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: State Released.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: State Released.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: State Released.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10]: Begin initialization.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: State Released.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Rectification section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Stripping section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Column section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: State Released.\n", + "2024-08-28 18:39:02 [INFO] idaes.init.fs.D101: Column section + Condenser initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:02 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: State Released.\n", + "2024-08-28 18:39:03 [INFO] idaes.init.fs.D101: Column section + Condenser + Reboiler initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:03 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: State Released.\n" + ] + } + ], "source": [ "# Add distillation column to the flowsheet\n", "m.fs.D101 = TrayColumn(\n", @@ -1256,7 +2156,101 @@ "cell_type": "code", "execution_count": 53, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 7\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 4042\n", + "Number of nonzeros in inequality constraint Jacobian.: 0\n", + "Number of nonzeros in Lagrangian Hessian.............: 2376\n", + "\n", + "Total number of variables............................: 1169\n", + " variables with only lower bounds: 112\n", + " variables with lower and upper bounds: 365\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 1169\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.83e+04 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 0.0000000e+00 8.70e+03 1.50e+03 -1.0 3.69e+04 - 9.71e-01 4.62e-01H 1\n", + " 2 0.0000000e+00 1.53e+03 1.56e+03 -1.0 6.75e+03 - 9.77e-01 4.89e-01h 1\n", + " 3 0.0000000e+00 1.37e+03 1.55e+05 -1.0 9.37e+03 - 9.90e-01 4.99e-01h 1\n", + " 4 0.0000000e+00 6.14e+02 2.31e+09 -1.0 6.09e+03 - 1.00e+00 9.81e-01h 1\n", + " 5 0.0000000e+00 5.32e+03 3.62e+10 -1.0 5.56e+02 - 1.00e+00 9.90e-01h 1\n", + " 6 0.0000000e+00 1.16e+03 7.80e+09 -1.0 5.36e+00 - 1.00e+00 1.00e+00h 1\n", + " 7 0.0000000e+00 5.96e+00 3.64e+07 -1.0 1.47e-03 - 1.00e+00 1.00e+00f 1\n", + " 8 0.0000000e+00 1.69e-04 8.15e+02 -1.0 6.77e-06 - 1.00e+00 1.00e+00h 1\n", + " 9 0.0000000e+00 7.45e-09 6.64e-03 -3.8 2.00e-07 - 1.00e+00 1.00e+00h 1\n", + "Cannot recompute multipliers for feasibility problem. Error in eq_mult_calculator\n", + "\n", + "Number of Iterations....: 9\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Dual infeasibility......: 1.5042483516409773e+04 1.5042483516409773e+04\n", + "Constraint violation....: 2.9103830456733704e-11 7.4505805969238281e-09\n", + "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Overall NLP error.......: 2.9103830456733704e-11 1.5042483516409773e+04\n", + "\n", + "\n", + "Number of objective function evaluations = 11\n", + "Number of objective gradient evaluations = 10\n", + "Number of equality constraint evaluations = 11\n", + "Number of inequality constraint evaluations = 0\n", + "Number of equality constraint Jacobian evaluations = 10\n", + "Number of inequality constraint Jacobian evaluations = 0\n", + "Number of Lagrangian Hessian evaluations = 9\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.083\n", + "Total CPU secs in NLP function evaluations = 0.013\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'Problem': [{'Lower bound': -inf, 'Upper bound': inf, 'Number of objectives': 1, 'Number of constraints': 1169, 'Number of variables': 1169, 'Sense': 'unknown'}], 'Solver': [{'Status': 'ok', 'Message': 'Ipopt 3.13.2\\\\x3a Optimal Solution Found', 'Termination condition': 'optimal', 'Id': 0, 'Error rc': 0, 'Time': 0.2022566795349121}], 'Solution': [OrderedDict([('number of solutions', 0), ('number of solutions displayed', 0)])]}" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "solver.solve(m, tee=True)" ] @@ -1274,7 +2268,26 @@ "cell_type": "code", "execution_count": 55, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total cost = $ 442301.47075252194\n", + "operating cost = $ 427596.73056805483\n", + "capital cost = $ 14704.740184467111\n", + "\n", + "Distillate flowrate = 0.16196898920633368 mol/s\n", + "Benzene purity = 89.4916166580088 %\n", + "Residue flowrate = 0.10515007120697904 mol/s\n", + "Toluene purity = 43.32260291055251 %\n", + "\n", + "Conversion = 75.0 %\n", + "\n", + "Overhead benzene loss in F101 = 42.161938483603194 %\n" + ] + } + ], "source": [ "print(\"total cost = $\", value(m.fs.capital_cost) + value(m.fs.operating_cost))\n", "print(\"operating cost = $\", value(m.fs.operating_cost))\n", @@ -1319,7 +2332,40 @@ "cell_type": "code", "execution_count": 57, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "====================================================================================\n", + "Unit : fs.R101 Time: 0.0\n", + "------------------------------------------------------------------------------------\n", + " Unit Performance\n", + "\n", + " Variables: \n", + "\n", + " Key : Value : Units : Fixed : Bounds\n", + " Heat Duty : 0.0000 : watt : True : (None, None)\n", + " Volume : 0.14705 : meter ** 3 : False : (None, None)\n", + "\n", + "------------------------------------------------------------------------------------\n", + " Stream Table\n", + " Units Inlet Outlet \n", + " flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.2993e-07\n", + " flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 8.4147e-07\n", + " flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-12\n", + " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-12\n", + " flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.11936 0.35374\n", + " flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.31252 0.078129\n", + " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.0377 1.2721\n", + " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.56260 0.32821\n", + " temperature kelvin 600.00 771.85\n", + " pressure pascal 3.5000e+05 3.5000e+05\n", + "====================================================================================\n" + ] + } + ], "source": [ "m.fs.R101.report()" ] @@ -1335,7 +2381,40 @@ "cell_type": "code", "execution_count": 58, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "====================================================================================\n", + "Unit : fs.F101 Time: 0.0\n", + "------------------------------------------------------------------------------------\n", + " Unit Performance\n", + "\n", + " Variables: \n", + "\n", + " Key : Value : Units : Fixed : Bounds\n", + " Heat Duty : -70343. : watt : False : (None, None)\n", + " Pressure Change : 0.0000 : pascal : True : (None, None)\n", + "\n", + "------------------------------------------------------------------------------------\n", + " Stream Table\n", + " Units Inlet Vapor Outlet Liquid Outlet\n", + " flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.0000e-08 0.20460 \n", + " flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 1.0000e-08 0.062520 \n", + " flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 2.6712e-07 \n", + " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 2.6712e-07 \n", + " flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.35374 0.14915 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.078129 0.015610 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2721 1.2721 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.32821 0.32821 1.0000e-08 \n", + " temperature kelvin 771.85 325.00 325.00 \n", + " pressure pascal 3.5000e+05 3.5000e+05 3.5000e+05 \n", + "====================================================================================\n" + ] + } + ], "source": [ "m.fs.F101.report()" ] @@ -1356,7 +2435,25 @@ "cell_type": "code", "execution_count": 59, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Units Reactor Light Gases\n", + "flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 \n", + "flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.35374 0.14915 \n", + "flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.078129 0.015610 \n", + "flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2721 1.2721 \n", + "flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.32821 0.32821 \n", + "temperature kelvin 771.85 325.00 \n", + "pressure pascal 3.5000e+05 3.5000e+05 \n" + ] + } + ], "source": [ "from idaes.core.util.tables import (\n", " create_stream_table_dataframe,\n", @@ -1663,7 +2760,117 @@ "cell_type": "code", "execution_count": 71, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 3\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 4073\n", + "Number of nonzeros in inequality constraint Jacobian.: 6\n", + "Number of nonzeros in Lagrangian Hessian.............: 2391\n", + "\n", + "Total number of variables............................: 1176\n", + " variables with only lower bounds: 113\n", + " variables with lower and upper bounds: 372\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 1169\n", + "Total number of inequality constraints...............: 3\n", + " inequality constraints with only lower bounds: 2\n", + " inequality constraints with lower and upper bounds: 0\n", + " inequality constraints with only upper bounds: 1\n", + "\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 0 4.4230147e+05 2.99e+05 9.90e+01 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 4.3753585e+05 2.91e+05 1.28e+02 -1.0 3.09e+06 - 3.58e-01 2.40e-02f 1\n", + " 2 4.3545100e+05 2.78e+05 1.55e+02 -1.0 1.78e+06 - 3.31e-01 4.74e-02h 1\n", + " 3 4.2822311e+05 2.20e+05 4.50e+02 -1.0 2.99e+06 - 2.95e-02 1.35e-01h 1\n", + " 4 4.2249096e+05 1.45e+05 1.43e+03 -1.0 7.01e+06 - 5.14e-01 2.03e-01h 1\n", + " 5 4.2194364e+05 8.17e+04 1.70e+04 -1.0 6.06e+06 - 5.97e-01 4.28e-01h 1\n", + " 6 4.2602765e+05 4.55e+04 1.10e+06 -1.0 4.32e+06 - 9.26e-01 5.07e-01h 1\n", + " 7 4.3776643e+05 2.03e+04 6.44e+09 -1.0 2.42e+06 - 9.90e-01 9.47e-01h 1\n", + " 8 4.3846260e+05 1.92e+04 6.05e+09 -1.0 4.42e+05 - 5.40e-01 5.74e-02h 1\n", + " 9 4.4529853e+05 4.05e+04 4.66e+10 -1.0 2.47e+05 - 9.96e-01 9.90e-01h 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 10 4.4906283e+05 9.76e+03 1.10e+10 -1.0 1.12e+03 -4.0 1.26e-01 7.45e-01h 1\n", + " 11 4.5079086e+05 1.19e+03 1.54e+09 -1.0 5.63e+02 -4.5 3.77e-01 1.00e+00h 1\n", + " 12 4.5024224e+05 2.66e+00 3.67e+06 -1.0 6.61e+01 -5.0 1.00e+00 1.00e+00f 1\n", + " 13 4.4946170e+05 5.64e-01 9.29e+05 -1.0 1.81e+02 -5.4 1.00e+00 7.88e-01f 1\n", + " 14 4.4916780e+05 8.48e+00 1.62e+05 -1.0 2.83e+02 -5.9 1.00e+00 1.00e+00f 1\n", + " 15 4.4899127e+05 4.83e+00 9.07e+04 -1.0 1.01e+02 -6.4 1.00e+00 4.40e-01f 2\n", + " 16 4.4886718e+05 7.00e-01 4.61e+02 -1.0 2.35e+02 -6.9 1.00e+00 1.00e+00f 1\n", + " 17 4.4800159e+05 1.39e+02 4.52e+06 -3.8 1.17e+03 -7.3 9.79e-01 9.37e-01f 1\n", + " 18 4.4672196e+05 9.59e+02 1.22e+06 -3.8 4.55e+03 -7.8 1.00e+00 9.43e-01f 1\n", + " 19 4.4401667e+05 7.75e+03 1.55e+05 -3.8 1.08e+04 -8.3 1.00e+00 1.00e+00f 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 20 4.4185035e+05 1.91e+04 1.36e+04 -3.8 1.33e+04 -8.8 1.00e+00 1.00e+00h 1\n", + " 21 4.4241001e+05 3.52e+03 5.96e+03 -3.8 2.94e+03 -9.2 1.00e+00 1.00e+00h 1\n", + " 22 4.4185237e+05 7.82e+00 2.91e+02 -3.8 7.13e+03 -9.7 2.39e-01 1.00e+00h 1\n", + " 23 4.4124091e+05 1.53e+01 3.11e+02 -3.8 4.82e+04 -10.2 8.59e-01 1.36e-01f 1\n", + " 24 4.4137379e+05 1.80e+00 2.91e+02 -3.8 1.41e+04 - 1.95e-01 1.00e+00h 1\n", + " 25 4.3862833e+05 1.70e+03 9.48e+04 -3.8 1.57e+07 - 1.29e-03 9.10e-02f 1\n", + " 26 4.3883308e+05 1.49e+03 8.46e+04 -3.8 1.02e+06 - 1.00e+00 1.35e-01h 1\n", + " 27 4.3885472e+05 2.18e+01 3.40e+03 -3.8 1.38e+05 - 1.00e+00 1.00e+00h 1\n", + " 28 4.3884160e+05 5.90e-02 6.38e+01 -3.8 8.66e+03 - 1.00e+00 1.00e+00h 1\n", + " 29 4.3884157e+05 6.48e-07 4.63e-04 -3.8 2.89e+01 - 1.00e+00 1.00e+00h 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 30 4.3883990e+05 3.57e-01 2.38e+03 -5.7 8.19e+02 - 1.00e+00 1.00e+00f 1\n", + " 31 4.3883992e+05 3.50e-07 7.79e-06 -5.7 3.55e-01 - 1.00e+00 1.00e+00h 1\n", + " 32 4.3883990e+05 5.47e-05 3.63e-01 -8.0 1.01e+01 - 1.00e+00 1.00e+00h 1\n", + " 33 4.3883990e+05 2.24e-08 1.46e-07 -8.0 5.42e-05 - 1.00e+00 1.00e+00h 1\n", + "\n", + "Number of Iterations....: 33\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 4.3883989842628603e+02 4.3883989842628600e+05\n", + "Dual infeasibility......: 1.4600704448671754e-07 1.4600704448671753e-04\n", + "Constraint violation....: 2.9103830456733704e-11 2.2351741790771484e-08\n", + "Complementarity.........: 9.0909948039799681e-09 9.0909948039799686e-06\n", + "Overall NLP error.......: 9.0909948039799681e-09 1.4600704448671753e-04\n", + "\n", + "\n", + "Number of objective function evaluations = 35\n", + "Number of objective gradient evaluations = 34\n", + "Number of equality constraint evaluations = 35\n", + "Number of inequality constraint evaluations = 35\n", + "Number of equality constraint Jacobian evaluations = 34\n", + "Number of inequality constraint Jacobian evaluations = 34\n", + "Number of Lagrangian Hessian evaluations = 33\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.164\n", + "Total CPU secs in NLP function evaluations = 0.020\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + } + ], "source": [ "results = solver.solve(m, tee=True)" ] @@ -1681,7 +2888,26 @@ "cell_type": "code", "execution_count": 73, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total cost = $ 438839.898426286\n", + "operating cost = $ 408883.5314830889\n", + "capital cost = $ 29956.3669431971\n", + "\n", + "Distillate flowrate = 0.1799999900263989 mol/s\n", + "Benzene purity = 98.99999900049086 %\n", + "Residue flowrate = 0.1085161642426372 mol/s\n", + "Toluene purity = 15.676178086213548 %\n", + "\n", + "Conversion = 93.38705916369427 %\n", + "\n", + "Overhead benzene loss in F101 = 17.34061793115618 %\n" + ] + } + ], "source": [ "print(\"total cost = $\", value(m.fs.capital_cost) + value(m.fs.operating_cost))\n", "print(\"operating cost = $\", value(m.fs.operating_cost))\n", @@ -1726,7 +2952,23 @@ "cell_type": "code", "execution_count": 75, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimal Values\n", + "\n", + "H101 outlet temperature = 568.923204295196 K\n", + "\n", + "R101 outlet temperature = 790.3655425698853 K\n", + "\n", + "F101 outlet temperature = 298.0 K\n", + "\n", + "H102 outlet temperature = 368.7414339952852 K\n" + ] + } + ], "source": [ "print(\"Optimal Values\")\n", "print()\n", @@ -1756,13 +2998,6 @@ "\n", "Finally, observe that the operating temperature of the flash (F101) is almost at its lower bound. This helps in minimizing the amount of benzene in the vapor stream leaving the flash." ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -1782,9 +3017,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.16" + "version": "3.10.13" } }, "nbformat": 4, "nbformat_minor": 3 -} +} \ No newline at end of file diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_test.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_test.ipynb index 1468da16..b035cc2c 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_test.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_test.ipynb @@ -61,7 +61,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 → C6H6 + CH4**\n", + "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -221,6 +221,7 @@ "from idaes.core.util.initialization import propagate_state\n", "from idaes.core.solvers import get_solver\n", "import idaes.core.util.scaling as iscale\n", + "from idaes.core.util.exceptions import InitializationError\n", "\n", "# Import idaes logger to set output levels\n", "import idaes.logger as idaeslog" @@ -672,7 +673,15 @@ "cell_type": "code", "execution_count": 28, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "29\n" + ] + } + ], "source": [ "print(degrees_of_freedom(m))" ] @@ -871,7 +880,42 @@ "cell_type": "code", "execution_count": 38, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n" + ] + } + ], "source": [ "# Set scaling factors for heat duty, reaction extent and volume\n", "iscale.set_scaling_factor(m.fs.H101.control_volume.heat, 1e-2)\n", @@ -908,7 +952,15 @@ "solution" ] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + } + ], "source": [ "# Todo: Check the degrees of freedom\n", "print(degrees_of_freedom(m))" @@ -967,7 +1019,15 @@ "cell_type": "code", "execution_count": 43, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fs.s03\n" + ] + } + ], "source": [ "for o in heuristic_tear_set:\n", " print(o.name)" @@ -984,7 +1044,20 @@ "cell_type": "code", "execution_count": 44, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fs.H101\n", + "fs.R101\n", + "fs.F101\n", + "fs.S101\n", + "fs.C101\n", + "fs.M101\n" + ] + } + ], "source": [ "for o in order:\n", " print(o[0].name)" @@ -1016,7 +1089,7 @@ " (0, \"Liq\", \"hydrogen\"): 1e-5,\n", " (0, \"Liq\", \"methane\"): 1e-5,\n", " },\n", - " \"temperature\": {0: 303},\n", + " \"temperature\": {0: 303.2},\n", " \"pressure\": {0: 350000},\n", "}\n", "\n", @@ -1028,7 +1101,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we need to tell the tool how to initialize a particular unit. We will be writing a python function which takes in a \"unit\" and calls the initialize method on that unit." + "Next, we need to tell the tool how to initialize a particular unit. We will be writing a python function which takes in a \"unit\" and calls the initialize method on that unit. For the initialization, we will import a Block Triangularization Initializer which decomposes the model into a set of subproblems. These subproblems are solved using a block triangularization transformation before applying a simple Newton or user-selected solver. Methods such as block triangularization often solve faster and yield more reliable behavior than heuristic methods, but sometime struggle to decompose models with strongly coupled equations (e.g. column models, systems with counter-current flow, vapor-liquid equilibrium)." ] }, { @@ -1038,7 +1111,15 @@ "outputs": [], "source": [ "def function(unit):\n", - " unit.initialize(outlvl=idaeslog.INFO)" + " # Try initializing using default initializer, \n", + " # if it fails (probably due to scaling) try for the second time\n", + " try:\n", + " initializer = unit.default_initializer()\n", + " initializer.initialize(unit, output_level=idaeslog.INFO)\n", + " except InitializationError:\n", + " solver=get_solver()\n", + " solver.solve(unit)\n", + " " ] }, { @@ -1054,7 +1135,132 @@ "metadata": { "scrolled": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:14 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 12\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 11\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 11\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "WARNING: Wegstein failed to converge in 3 iterations\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:33 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 5 optimal - .\n" + ] + } + ], "source": [ "seq.run(m, function)" ] @@ -1073,7 +1279,91 @@ "cell_type": "code", "execution_count": 48, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 6\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 1097\n", + "Number of nonzeros in inequality constraint Jacobian.: 0\n", + "Number of nonzeros in Lagrangian Hessian.............: 877\n", + "\n", + "Total number of variables............................: 363\n", + " variables with only lower bounds: 8\n", + " variables with lower and upper bounds: 155\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 363\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.82e+04 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 0.0000000e+00 8.69e+03 1.44e+03 -1.0 2.00e+04 - 9.71e-01 4.67e-01H 1\n", + " 2 0.0000000e+00 1.29e+03 1.56e+03 -1.0 1.60e+04 - 9.79e-01 4.90e-01h 1\n", + " 3 0.0000000e+00 1.18e+03 1.55e+05 -1.0 1.40e+04 - 9.90e-01 4.99e-01h 1\n", + " 4 0.0000000e+00 5.46e+02 2.32e+09 -1.0 8.42e+03 - 1.00e+00 9.82e-01h 1\n", + " 5 0.0000000e+00 5.46e+03 3.66e+10 -1.0 5.97e+02 - 1.00e+00 9.90e-01h 1\n", + " 6 0.0000000e+00 1.21e+03 8.01e+09 -1.0 5.75e+00 - 1.00e+00 1.00e+00h 1\n", + " 7 0.0000000e+00 6.41e+00 3.87e+07 -1.0 1.53e-03 - 1.00e+00 1.00e+00f 1\n", + " 8 0.0000000e+00 1.96e-04 9.36e+02 -1.0 7.28e-06 - 1.00e+00 1.00e+00h 1\n", + " 9 0.0000000e+00 2.24e-08 4.99e-01 -3.8 5.92e-08 - 1.00e+00 1.00e+00h 1\n", + "Cannot recompute multipliers for feasibility problem. Error in eq_mult_calculator\n", + "\n", + "Number of Iterations....: 9\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Dual infeasibility......: 1.5042487592972509e+04 1.5042487592972509e+04\n", + "Constraint violation....: 2.9103830456733704e-11 2.2351741790771484e-08\n", + "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Overall NLP error.......: 2.9103830456733704e-11 1.5042487592972509e+04\n", + "\n", + "\n", + "Number of objective function evaluations = 11\n", + "Number of objective gradient evaluations = 10\n", + "Number of equality constraint evaluations = 11\n", + "Number of inequality constraint evaluations = 0\n", + "Number of equality constraint Jacobian evaluations = 10\n", + "Number of inequality constraint Jacobian evaluations = 0\n", + "Number of Lagrangian Hessian evaluations = 9\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.011\n", + "Total CPU secs in NLP function evaluations = 0.001\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + } + ], "source": [ "# Create the solver object\n", "solver = get_solver()\n", @@ -1121,7 +1411,617 @@ "cell_type": "code", "execution_count": 50, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_flow_reflux[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_mole_frac_reflux[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_mole_frac_reflux[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_flow_vapor_reboil[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_mole_frac_vapor_reboil[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_mole_frac_vapor_reboil[0.0,toluene]\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101: Begin initialization.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray: Begin initialization.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: State Released.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: State Released.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: State Released.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: State Released.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume: Initialization Complete\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser: Initialization Complete, optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: State Released.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: State Released.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler: Initialization Complete, optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: State Released.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1]: Begin initialization.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: State Released.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: State Released.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[2]: Begin initialization.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: State Released.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: State Released.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: State Released.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3]: Begin initialization.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: State Released.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: State Released.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: State Released.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4]: Begin initialization.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: State Released.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: State Released.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6]: Begin initialization.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: State Released.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: State Released.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[7]: Begin initialization.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: State Released.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: State Released.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: State Released.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8]: Begin initialization.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: State Released.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: State Released.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: State Released.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9]: Begin initialization.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: State Released.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: State Released.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: State Released.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10]: Begin initialization.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: State Released.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Rectification section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Stripping section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Column section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: State Released.\n", + "2024-08-28 18:39:02 [INFO] idaes.init.fs.D101: Column section + Condenser initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:02 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: State Released.\n", + "2024-08-28 18:39:03 [INFO] idaes.init.fs.D101: Column section + Condenser + Reboiler initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:03 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: State Released.\n" + ] + } + ], "source": [ "# Add distillation column to the flowsheet\n", "m.fs.D101 = TrayColumn(\n", @@ -1220,7 +2120,101 @@ "cell_type": "code", "execution_count": 53, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 7\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 4042\n", + "Number of nonzeros in inequality constraint Jacobian.: 0\n", + "Number of nonzeros in Lagrangian Hessian.............: 2376\n", + "\n", + "Total number of variables............................: 1169\n", + " variables with only lower bounds: 112\n", + " variables with lower and upper bounds: 365\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 1169\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.83e+04 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 0.0000000e+00 8.70e+03 1.50e+03 -1.0 3.69e+04 - 9.71e-01 4.62e-01H 1\n", + " 2 0.0000000e+00 1.53e+03 1.56e+03 -1.0 6.75e+03 - 9.77e-01 4.89e-01h 1\n", + " 3 0.0000000e+00 1.37e+03 1.55e+05 -1.0 9.37e+03 - 9.90e-01 4.99e-01h 1\n", + " 4 0.0000000e+00 6.14e+02 2.31e+09 -1.0 6.09e+03 - 1.00e+00 9.81e-01h 1\n", + " 5 0.0000000e+00 5.32e+03 3.62e+10 -1.0 5.56e+02 - 1.00e+00 9.90e-01h 1\n", + " 6 0.0000000e+00 1.16e+03 7.80e+09 -1.0 5.36e+00 - 1.00e+00 1.00e+00h 1\n", + " 7 0.0000000e+00 5.96e+00 3.64e+07 -1.0 1.47e-03 - 1.00e+00 1.00e+00f 1\n", + " 8 0.0000000e+00 1.69e-04 8.15e+02 -1.0 6.77e-06 - 1.00e+00 1.00e+00h 1\n", + " 9 0.0000000e+00 7.45e-09 6.64e-03 -3.8 2.00e-07 - 1.00e+00 1.00e+00h 1\n", + "Cannot recompute multipliers for feasibility problem. Error in eq_mult_calculator\n", + "\n", + "Number of Iterations....: 9\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Dual infeasibility......: 1.5042483516409773e+04 1.5042483516409773e+04\n", + "Constraint violation....: 2.9103830456733704e-11 7.4505805969238281e-09\n", + "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Overall NLP error.......: 2.9103830456733704e-11 1.5042483516409773e+04\n", + "\n", + "\n", + "Number of objective function evaluations = 11\n", + "Number of objective gradient evaluations = 10\n", + "Number of equality constraint evaluations = 11\n", + "Number of inequality constraint evaluations = 0\n", + "Number of equality constraint Jacobian evaluations = 10\n", + "Number of inequality constraint Jacobian evaluations = 0\n", + "Number of Lagrangian Hessian evaluations = 9\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.083\n", + "Total CPU secs in NLP function evaluations = 0.013\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'Problem': [{'Lower bound': -inf, 'Upper bound': inf, 'Number of objectives': 1, 'Number of constraints': 1169, 'Number of variables': 1169, 'Sense': 'unknown'}], 'Solver': [{'Status': 'ok', 'Message': 'Ipopt 3.13.2\\\\x3a Optimal Solution Found', 'Termination condition': 'optimal', 'Id': 0, 'Error rc': 0, 'Time': 0.2022566795349121}], 'Solution': [OrderedDict([('number of solutions', 0), ('number of solutions displayed', 0)])]}" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "solver.solve(m, tee=True)" ] @@ -1254,7 +2248,26 @@ "cell_type": "code", "execution_count": 55, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total cost = $ 442301.47075252194\n", + "operating cost = $ 427596.73056805483\n", + "capital cost = $ 14704.740184467111\n", + "\n", + "Distillate flowrate = 0.16196898920633368 mol/s\n", + "Benzene purity = 89.4916166580088 %\n", + "Residue flowrate = 0.10515007120697904 mol/s\n", + "Toluene purity = 43.32260291055251 %\n", + "\n", + "Conversion = 75.0 %\n", + "\n", + "Overhead benzene loss in F101 = 42.161938483603194 %\n" + ] + } + ], "source": [ "print(\"total cost = $\", value(m.fs.capital_cost) + value(m.fs.operating_cost))\n", "print(\"operating cost = $\", value(m.fs.operating_cost))\n", @@ -1296,7 +2309,16 @@ "testing" ] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "427596.73056805483\n", + "14704.740184467111\n" + ] + } + ], "source": [ "import pytest\n", "\n", @@ -1317,7 +2339,40 @@ "cell_type": "code", "execution_count": 57, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "====================================================================================\n", + "Unit : fs.R101 Time: 0.0\n", + "------------------------------------------------------------------------------------\n", + " Unit Performance\n", + "\n", + " Variables: \n", + "\n", + " Key : Value : Units : Fixed : Bounds\n", + " Heat Duty : 0.0000 : watt : True : (None, None)\n", + " Volume : 0.14705 : meter ** 3 : False : (None, None)\n", + "\n", + "------------------------------------------------------------------------------------\n", + " Stream Table\n", + " Units Inlet Outlet \n", + " flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.2993e-07\n", + " flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 8.4147e-07\n", + " flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-12\n", + " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-12\n", + " flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.11936 0.35374\n", + " flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.31252 0.078129\n", + " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.0377 1.2721\n", + " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.56260 0.32821\n", + " temperature kelvin 600.00 771.85\n", + " pressure pascal 3.5000e+05 3.5000e+05\n", + "====================================================================================\n" + ] + } + ], "source": [ "m.fs.R101.report()" ] @@ -1333,7 +2388,40 @@ "cell_type": "code", "execution_count": 58, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "====================================================================================\n", + "Unit : fs.F101 Time: 0.0\n", + "------------------------------------------------------------------------------------\n", + " Unit Performance\n", + "\n", + " Variables: \n", + "\n", + " Key : Value : Units : Fixed : Bounds\n", + " Heat Duty : -70343. : watt : False : (None, None)\n", + " Pressure Change : 0.0000 : pascal : True : (None, None)\n", + "\n", + "------------------------------------------------------------------------------------\n", + " Stream Table\n", + " Units Inlet Vapor Outlet Liquid Outlet\n", + " flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.0000e-08 0.20460 \n", + " flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 1.0000e-08 0.062520 \n", + " flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 2.6712e-07 \n", + " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 2.6712e-07 \n", + " flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.35374 0.14915 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.078129 0.015610 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2721 1.2721 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.32821 0.32821 1.0000e-08 \n", + " temperature kelvin 771.85 325.00 325.00 \n", + " pressure pascal 3.5000e+05 3.5000e+05 3.5000e+05 \n", + "====================================================================================\n" + ] + } + ], "source": [ "m.fs.F101.report()" ] @@ -1354,7 +2442,25 @@ "cell_type": "code", "execution_count": 59, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Units Reactor Light Gases\n", + "flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 \n", + "flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.35374 0.14915 \n", + "flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.078129 0.015610 \n", + "flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2721 1.2721 \n", + "flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.32821 0.32821 \n", + "temperature kelvin 771.85 325.00 \n", + "pressure pascal 3.5000e+05 3.5000e+05 \n" + ] + } + ], "source": [ "from idaes.core.util.tables import (\n", " create_stream_table_dataframe,\n", @@ -1619,7 +2725,117 @@ "cell_type": "code", "execution_count": 71, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 3\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 4073\n", + "Number of nonzeros in inequality constraint Jacobian.: 6\n", + "Number of nonzeros in Lagrangian Hessian.............: 2391\n", + "\n", + "Total number of variables............................: 1176\n", + " variables with only lower bounds: 113\n", + " variables with lower and upper bounds: 372\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 1169\n", + "Total number of inequality constraints...............: 3\n", + " inequality constraints with only lower bounds: 2\n", + " inequality constraints with lower and upper bounds: 0\n", + " inequality constraints with only upper bounds: 1\n", + "\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 0 4.4230147e+05 2.99e+05 9.90e+01 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 4.3753585e+05 2.91e+05 1.28e+02 -1.0 3.09e+06 - 3.58e-01 2.40e-02f 1\n", + " 2 4.3545100e+05 2.78e+05 1.55e+02 -1.0 1.78e+06 - 3.31e-01 4.74e-02h 1\n", + " 3 4.2822311e+05 2.20e+05 4.50e+02 -1.0 2.99e+06 - 2.95e-02 1.35e-01h 1\n", + " 4 4.2249096e+05 1.45e+05 1.43e+03 -1.0 7.01e+06 - 5.14e-01 2.03e-01h 1\n", + " 5 4.2194364e+05 8.17e+04 1.70e+04 -1.0 6.06e+06 - 5.97e-01 4.28e-01h 1\n", + " 6 4.2602765e+05 4.55e+04 1.10e+06 -1.0 4.32e+06 - 9.26e-01 5.07e-01h 1\n", + " 7 4.3776643e+05 2.03e+04 6.44e+09 -1.0 2.42e+06 - 9.90e-01 9.47e-01h 1\n", + " 8 4.3846260e+05 1.92e+04 6.05e+09 -1.0 4.42e+05 - 5.40e-01 5.74e-02h 1\n", + " 9 4.4529853e+05 4.05e+04 4.66e+10 -1.0 2.47e+05 - 9.96e-01 9.90e-01h 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 10 4.4906283e+05 9.76e+03 1.10e+10 -1.0 1.12e+03 -4.0 1.26e-01 7.45e-01h 1\n", + " 11 4.5079086e+05 1.19e+03 1.54e+09 -1.0 5.63e+02 -4.5 3.77e-01 1.00e+00h 1\n", + " 12 4.5024224e+05 2.66e+00 3.67e+06 -1.0 6.61e+01 -5.0 1.00e+00 1.00e+00f 1\n", + " 13 4.4946170e+05 5.64e-01 9.29e+05 -1.0 1.81e+02 -5.4 1.00e+00 7.88e-01f 1\n", + " 14 4.4916780e+05 8.48e+00 1.62e+05 -1.0 2.83e+02 -5.9 1.00e+00 1.00e+00f 1\n", + " 15 4.4899127e+05 4.83e+00 9.07e+04 -1.0 1.01e+02 -6.4 1.00e+00 4.40e-01f 2\n", + " 16 4.4886718e+05 7.00e-01 4.61e+02 -1.0 2.35e+02 -6.9 1.00e+00 1.00e+00f 1\n", + " 17 4.4800159e+05 1.39e+02 4.52e+06 -3.8 1.17e+03 -7.3 9.79e-01 9.37e-01f 1\n", + " 18 4.4672196e+05 9.59e+02 1.22e+06 -3.8 4.55e+03 -7.8 1.00e+00 9.43e-01f 1\n", + " 19 4.4401667e+05 7.75e+03 1.55e+05 -3.8 1.08e+04 -8.3 1.00e+00 1.00e+00f 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 20 4.4185035e+05 1.91e+04 1.36e+04 -3.8 1.33e+04 -8.8 1.00e+00 1.00e+00h 1\n", + " 21 4.4241001e+05 3.52e+03 5.96e+03 -3.8 2.94e+03 -9.2 1.00e+00 1.00e+00h 1\n", + " 22 4.4185237e+05 7.82e+00 2.91e+02 -3.8 7.13e+03 -9.7 2.39e-01 1.00e+00h 1\n", + " 23 4.4124091e+05 1.53e+01 3.11e+02 -3.8 4.82e+04 -10.2 8.59e-01 1.36e-01f 1\n", + " 24 4.4137379e+05 1.80e+00 2.91e+02 -3.8 1.41e+04 - 1.95e-01 1.00e+00h 1\n", + " 25 4.3862833e+05 1.70e+03 9.48e+04 -3.8 1.57e+07 - 1.29e-03 9.10e-02f 1\n", + " 26 4.3883308e+05 1.49e+03 8.46e+04 -3.8 1.02e+06 - 1.00e+00 1.35e-01h 1\n", + " 27 4.3885472e+05 2.18e+01 3.40e+03 -3.8 1.38e+05 - 1.00e+00 1.00e+00h 1\n", + " 28 4.3884160e+05 5.90e-02 6.38e+01 -3.8 8.66e+03 - 1.00e+00 1.00e+00h 1\n", + " 29 4.3884157e+05 6.48e-07 4.63e-04 -3.8 2.89e+01 - 1.00e+00 1.00e+00h 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 30 4.3883990e+05 3.57e-01 2.38e+03 -5.7 8.19e+02 - 1.00e+00 1.00e+00f 1\n", + " 31 4.3883992e+05 3.50e-07 7.79e-06 -5.7 3.55e-01 - 1.00e+00 1.00e+00h 1\n", + " 32 4.3883990e+05 5.47e-05 3.63e-01 -8.0 1.01e+01 - 1.00e+00 1.00e+00h 1\n", + " 33 4.3883990e+05 2.24e-08 1.46e-07 -8.0 5.42e-05 - 1.00e+00 1.00e+00h 1\n", + "\n", + "Number of Iterations....: 33\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 4.3883989842628603e+02 4.3883989842628600e+05\n", + "Dual infeasibility......: 1.4600704448671754e-07 1.4600704448671753e-04\n", + "Constraint violation....: 2.9103830456733704e-11 2.2351741790771484e-08\n", + "Complementarity.........: 9.0909948039799681e-09 9.0909948039799686e-06\n", + "Overall NLP error.......: 9.0909948039799681e-09 1.4600704448671753e-04\n", + "\n", + "\n", + "Number of objective function evaluations = 35\n", + "Number of objective gradient evaluations = 34\n", + "Number of equality constraint evaluations = 35\n", + "Number of inequality constraint evaluations = 35\n", + "Number of equality constraint Jacobian evaluations = 34\n", + "Number of inequality constraint Jacobian evaluations = 34\n", + "Number of Lagrangian Hessian evaluations = 33\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.164\n", + "Total CPU secs in NLP function evaluations = 0.020\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + } + ], "source": [ "results = solver.solve(m, tee=True)" ] @@ -1653,7 +2869,26 @@ "cell_type": "code", "execution_count": 73, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total cost = $ 438839.898426286\n", + "operating cost = $ 408883.5314830889\n", + "capital cost = $ 29956.3669431971\n", + "\n", + "Distillate flowrate = 0.1799999900263989 mol/s\n", + "Benzene purity = 98.99999900049086 %\n", + "Residue flowrate = 0.1085161642426372 mol/s\n", + "Toluene purity = 15.676178086213548 %\n", + "\n", + "Conversion = 93.38705916369427 %\n", + "\n", + "Overhead benzene loss in F101 = 17.34061793115618 %\n" + ] + } + ], "source": [ "print(\"total cost = $\", value(m.fs.capital_cost) + value(m.fs.operating_cost))\n", "print(\"operating cost = $\", value(m.fs.operating_cost))\n", @@ -1695,7 +2930,16 @@ "testing" ] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "408883.5314830889\n", + "29956.3669431971\n" + ] + } + ], "source": [ "import pytest\n", "\n", @@ -1717,7 +2961,23 @@ "cell_type": "code", "execution_count": 75, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimal Values\n", + "\n", + "H101 outlet temperature = 568.923204295196 K\n", + "\n", + "R101 outlet temperature = 790.3655425698853 K\n", + "\n", + "F101 outlet temperature = 298.0 K\n", + "\n", + "H102 outlet temperature = 368.7414339952852 K\n" + ] + } + ], "source": [ "print(\"Optimal Values\")\n", "print()\n", @@ -1747,13 +3007,6 @@ "\n", "Finally, observe that the operating temperature of the flash (F101) is almost at its lower bound. This helps in minimizing the amount of benzene in the vapor stream leaving the flash." ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -1773,9 +3026,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.16" + "version": "3.10.13" } }, "nbformat": 4, "nbformat_minor": 3 -} +} \ No newline at end of file diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_usr.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_usr.ipynb index 1412322e..a401e9b8 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_usr.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_usr.ipynb @@ -61,7 +61,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 → C6H6 + CH4**\n", + "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -234,6 +234,7 @@ "from idaes.core.util.initialization import propagate_state\n", "from idaes.core.solvers import get_solver\n", "import idaes.core.util.scaling as iscale\n", + "from idaes.core.util.exceptions import InitializationError\n", "\n", "# Import idaes logger to set output levels\n", "import idaes.logger as idaeslog" @@ -737,7 +738,15 @@ "cell_type": "code", "execution_count": 28, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "29\n" + ] + } + ], "source": [ "print(degrees_of_freedom(m))" ] @@ -938,7 +947,42 @@ "cell_type": "code", "execution_count": 38, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enth_mol_phase_comp[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].enth_mol_phase_comp[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:14 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.H102.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n" + ] + } + ], "source": [ "# Set scaling factors for heat duty, reaction extent and volume\n", "iscale.set_scaling_factor(m.fs.H101.control_volume.heat, 1e-2)\n", @@ -988,7 +1032,15 @@ "solution" ] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + } + ], "source": [ "# Todo: Check the degrees of freedom\n", "print(degrees_of_freedom(m))" @@ -1033,7 +1085,15 @@ "cell_type": "code", "execution_count": 43, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fs.s03\n" + ] + } + ], "source": [ "for o in heuristic_tear_set:\n", " print(o.name)" @@ -1050,7 +1110,20 @@ "cell_type": "code", "execution_count": 44, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fs.H101\n", + "fs.R101\n", + "fs.F101\n", + "fs.S101\n", + "fs.C101\n", + "fs.M101\n" + ] + } + ], "source": [ "for o in order:\n", " print(o[0].name)" @@ -1082,7 +1155,7 @@ " (0, \"Liq\", \"hydrogen\"): 1e-5,\n", " (0, \"Liq\", \"methane\"): 1e-5,\n", " },\n", - " \"temperature\": {0: 303},\n", + " \"temperature\": {0: 303.2},\n", " \"pressure\": {0: 350000},\n", "}\n", "\n", @@ -1094,7 +1167,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we need to tell the tool how to initialize a particular unit. We will be writing a python function which takes in a \"unit\" and calls the initialize method on that unit." + "Next, we need to tell the tool how to initialize a particular unit. We will be writing a python function which takes in a \"unit\" and calls the initialize method on that unit. For the initialization, we will import a Block Triangularization Initializer which decomposes the model into a set of subproblems. These subproblems are solved using a block triangularization transformation before applying a simple Newton or user-selected solver. Methods such as block triangularization often solve faster and yield more reliable behavior than heuristic methods, but sometime struggle to decompose models with strongly coupled equations (e.g. column models, systems with counter-current flow, vapor-liquid equilibrium)." ] }, { @@ -1104,7 +1177,15 @@ "outputs": [], "source": [ "def function(unit):\n", - " unit.initialize(outlvl=idaeslog.INFO)" + " # Try initializing using default initializer, \n", + " # if it fails (probably due to scaling) try for the second time\n", + " try:\n", + " initializer = unit.default_initializer()\n", + " initializer.initialize(unit, output_level=idaeslog.INFO)\n", + " except InitializationError:\n", + " solver=get_solver()\n", + " solver.solve(unit)\n", + " " ] }, { @@ -1120,7 +1201,132 @@ "metadata": { "scrolled": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:14 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:16 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 12\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:17 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:18 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:19 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:20 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:21 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 11\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:22 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:23 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 11\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 50 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:24 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:25 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:26 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:27 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:28 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.H101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.H101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.R101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:29 [INFO] idaes.init.fs.R101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.F101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.F101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - \n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.C101.control_volume.properties_in: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.C101.control_volume.properties_out: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.M101.toluene_feed_state: Initialization Complete\n", + "2024-08-28 18:38:30 [INFO] idaes.init.fs.M101.hydrogen_feed_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101.vapor_recycle_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - \n", + "WARNING: Wegstein failed to converge in 3 iterations\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:31 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_in: Initialization Step 5 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 1 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 2 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 3 optimal - .\n", + "2024-08-28 18:38:32 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 4 optimal - .\n", + "2024-08-28 18:38:33 [INFO] idaes.init.fs.H102.control_volume.properties_out: Initialization Step 5 optimal - .\n" + ] + } + ], "source": [ "seq.run(m, function)" ] @@ -1139,7 +1345,91 @@ "cell_type": "code", "execution_count": 48, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 6\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 1097\n", + "Number of nonzeros in inequality constraint Jacobian.: 0\n", + "Number of nonzeros in Lagrangian Hessian.............: 877\n", + "\n", + "Total number of variables............................: 363\n", + " variables with only lower bounds: 8\n", + " variables with lower and upper bounds: 155\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 363\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.82e+04 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 0.0000000e+00 8.69e+03 1.44e+03 -1.0 2.00e+04 - 9.71e-01 4.67e-01H 1\n", + " 2 0.0000000e+00 1.29e+03 1.56e+03 -1.0 1.60e+04 - 9.79e-01 4.90e-01h 1\n", + " 3 0.0000000e+00 1.18e+03 1.55e+05 -1.0 1.40e+04 - 9.90e-01 4.99e-01h 1\n", + " 4 0.0000000e+00 5.46e+02 2.32e+09 -1.0 8.42e+03 - 1.00e+00 9.82e-01h 1\n", + " 5 0.0000000e+00 5.46e+03 3.66e+10 -1.0 5.97e+02 - 1.00e+00 9.90e-01h 1\n", + " 6 0.0000000e+00 1.21e+03 8.01e+09 -1.0 5.75e+00 - 1.00e+00 1.00e+00h 1\n", + " 7 0.0000000e+00 6.41e+00 3.87e+07 -1.0 1.53e-03 - 1.00e+00 1.00e+00f 1\n", + " 8 0.0000000e+00 1.96e-04 9.36e+02 -1.0 7.28e-06 - 1.00e+00 1.00e+00h 1\n", + " 9 0.0000000e+00 2.24e-08 4.99e-01 -3.8 5.92e-08 - 1.00e+00 1.00e+00h 1\n", + "Cannot recompute multipliers for feasibility problem. Error in eq_mult_calculator\n", + "\n", + "Number of Iterations....: 9\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Dual infeasibility......: 1.5042487592972509e+04 1.5042487592972509e+04\n", + "Constraint violation....: 2.9103830456733704e-11 2.2351741790771484e-08\n", + "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Overall NLP error.......: 2.9103830456733704e-11 1.5042487592972509e+04\n", + "\n", + "\n", + "Number of objective function evaluations = 11\n", + "Number of objective gradient evaluations = 10\n", + "Number of equality constraint evaluations = 11\n", + "Number of inequality constraint evaluations = 0\n", + "Number of equality constraint Jacobian evaluations = 10\n", + "Number of inequality constraint Jacobian evaluations = 0\n", + "Number of Lagrangian Hessian evaluations = 9\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.011\n", + "Total CPU secs in NLP function evaluations = 0.001\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + } + ], "source": [ "# Create the solver object\n", "solver = get_solver()\n", @@ -1171,7 +1461,617 @@ "cell_type": "code", "execution_count": 50, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_feed[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_liq[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_in_vap[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].flow_mol_phase\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_comp[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_comp[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_phase_equilibrium[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_phase_equilibrium[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_P_vap[benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_out[0.0].eq_P_vap[toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Liq,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Vap,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Liq,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].material_flow_terms[Vap,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].enthalpy_flow_terms[Liq], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.properties_in[0.0].enthalpy_flow_terms[Vap], enthalpy_flow_terms\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[2].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[3].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[7].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[8].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:34 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[9].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[4].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[6].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.feed_tray.e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_flow_vap_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_vap_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.rectification_section[1].e_mole_frac_vap_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_flow_reflux[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_mole_frac_reflux[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.condenser.control_volume.e_mole_frac_reflux[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_flow_liq_out[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_liq_out[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.stripping_section[10].e_mole_frac_liq_out[0.0,toluene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_flow_vapor_reboil[0.0]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_mole_frac_vapor_reboil[0.0,benzene]\n", + "2024-08-28 18:38:35 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.D101.reboiler.control_volume.e_mole_frac_vapor_reboil[0.0,toluene]\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101: Begin initialization.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray: Begin initialization.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:35 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:36 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: State Released.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_in_liq: State Released.\n", + "2024-08-28 18:38:37 [INFO] idaes.init.fs.D101.feed_tray.properties_in_vap: State Released.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:38 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_out: State Released.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume: Initialization Complete\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser: Initialization Complete, optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.condenser.control_volume.properties_in: State Released.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:39 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: State Released.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler: Initialization Complete, optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.reboiler.control_volume.properties_in: State Released.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1]: Begin initialization.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:40 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:41 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: State Released.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_vap: State Released.\n", + "2024-08-28 18:38:42 [INFO] idaes.init.fs.D101.rectification_section[2]: Begin initialization.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:43 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: State Released.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:44 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_vap: State Released.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[2].properties_in_liq: State Released.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3]: Begin initialization.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:45 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: State Released.\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:46 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_vap: State Released.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[3].properties_in_liq: State Released.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4]: Begin initialization.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:47 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:48 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: State Released.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_liq: State Released.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6]: Begin initialization.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:49 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:50 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: State Released.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_vap: State Released.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[7]: Begin initialization.\n", + "2024-08-28 18:38:51 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:52 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: State Released.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:53 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_vap: State Released.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[7].properties_in_liq: State Released.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8]: Begin initialization.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:54 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: State Released.\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:55 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_vap: State Released.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[8].properties_in_liq: State Released.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9]: Begin initialization.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:56 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: State Released.\n", + "2024-08-28 18:38:57 [INFO] idaes.init.fs.D101.stripping_section[9].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_vap: State Released.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[9].properties_in_liq: State Released.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10]: Begin initialization.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:58 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 1 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 2 optimal - Optimal Solution Found.\n", + "2024-08-28 18:38:59 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 3 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 4 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Step 5 optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: State Released.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_out: Initialization Complete: optimal - Optimal Solution Found\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass and energy balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Mass, energy and pressure balance solve optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10]: Initialization complete, status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:00 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_liq: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Rectification section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Stripping section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.rectification_section[4].properties_in_vap: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.stripping_section[6].properties_in_liq: State Released.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101: Column section initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:01 [INFO] idaes.init.fs.D101.rectification_section[1].properties_in_liq: State Released.\n", + "2024-08-28 18:39:02 [INFO] idaes.init.fs.D101: Column section + Condenser initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:02 [INFO] idaes.init.fs.D101.stripping_section[10].properties_in_vap: State Released.\n", + "2024-08-28 18:39:03 [INFO] idaes.init.fs.D101: Column section + Condenser + Reboiler initialization status optimal - Optimal Solution Found.\n", + "2024-08-28 18:39:03 [INFO] idaes.init.fs.D101.feed_tray.properties_in_feed: State Released.\n" + ] + } + ], "source": [ "# Add distillation column to the flowsheet\n", "m.fs.D101 = TrayColumn(\n", @@ -1256,7 +2156,101 @@ "cell_type": "code", "execution_count": 53, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 7\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 4042\n", + "Number of nonzeros in inequality constraint Jacobian.: 0\n", + "Number of nonzeros in Lagrangian Hessian.............: 2376\n", + "\n", + "Total number of variables............................: 1169\n", + " variables with only lower bounds: 112\n", + " variables with lower and upper bounds: 365\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 1169\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.83e+04 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 0.0000000e+00 8.70e+03 1.50e+03 -1.0 3.69e+04 - 9.71e-01 4.62e-01H 1\n", + " 2 0.0000000e+00 1.53e+03 1.56e+03 -1.0 6.75e+03 - 9.77e-01 4.89e-01h 1\n", + " 3 0.0000000e+00 1.37e+03 1.55e+05 -1.0 9.37e+03 - 9.90e-01 4.99e-01h 1\n", + " 4 0.0000000e+00 6.14e+02 2.31e+09 -1.0 6.09e+03 - 1.00e+00 9.81e-01h 1\n", + " 5 0.0000000e+00 5.32e+03 3.62e+10 -1.0 5.56e+02 - 1.00e+00 9.90e-01h 1\n", + " 6 0.0000000e+00 1.16e+03 7.80e+09 -1.0 5.36e+00 - 1.00e+00 1.00e+00h 1\n", + " 7 0.0000000e+00 5.96e+00 3.64e+07 -1.0 1.47e-03 - 1.00e+00 1.00e+00f 1\n", + " 8 0.0000000e+00 1.69e-04 8.15e+02 -1.0 6.77e-06 - 1.00e+00 1.00e+00h 1\n", + " 9 0.0000000e+00 7.45e-09 6.64e-03 -3.8 2.00e-07 - 1.00e+00 1.00e+00h 1\n", + "Cannot recompute multipliers for feasibility problem. Error in eq_mult_calculator\n", + "\n", + "Number of Iterations....: 9\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Dual infeasibility......: 1.5042483516409773e+04 1.5042483516409773e+04\n", + "Constraint violation....: 2.9103830456733704e-11 7.4505805969238281e-09\n", + "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", + "Overall NLP error.......: 2.9103830456733704e-11 1.5042483516409773e+04\n", + "\n", + "\n", + "Number of objective function evaluations = 11\n", + "Number of objective gradient evaluations = 10\n", + "Number of equality constraint evaluations = 11\n", + "Number of inequality constraint evaluations = 0\n", + "Number of equality constraint Jacobian evaluations = 10\n", + "Number of inequality constraint Jacobian evaluations = 0\n", + "Number of Lagrangian Hessian evaluations = 9\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.083\n", + "Total CPU secs in NLP function evaluations = 0.013\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'Problem': [{'Lower bound': -inf, 'Upper bound': inf, 'Number of objectives': 1, 'Number of constraints': 1169, 'Number of variables': 1169, 'Sense': 'unknown'}], 'Solver': [{'Status': 'ok', 'Message': 'Ipopt 3.13.2\\\\x3a Optimal Solution Found', 'Termination condition': 'optimal', 'Id': 0, 'Error rc': 0, 'Time': 0.2022566795349121}], 'Solution': [OrderedDict([('number of solutions', 0), ('number of solutions displayed', 0)])]}" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "solver.solve(m, tee=True)" ] @@ -1274,7 +2268,26 @@ "cell_type": "code", "execution_count": 55, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total cost = $ 442301.47075252194\n", + "operating cost = $ 427596.73056805483\n", + "capital cost = $ 14704.740184467111\n", + "\n", + "Distillate flowrate = 0.16196898920633368 mol/s\n", + "Benzene purity = 89.4916166580088 %\n", + "Residue flowrate = 0.10515007120697904 mol/s\n", + "Toluene purity = 43.32260291055251 %\n", + "\n", + "Conversion = 75.0 %\n", + "\n", + "Overhead benzene loss in F101 = 42.161938483603194 %\n" + ] + } + ], "source": [ "print(\"total cost = $\", value(m.fs.capital_cost) + value(m.fs.operating_cost))\n", "print(\"operating cost = $\", value(m.fs.operating_cost))\n", @@ -1319,7 +2332,40 @@ "cell_type": "code", "execution_count": 57, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "====================================================================================\n", + "Unit : fs.R101 Time: 0.0\n", + "------------------------------------------------------------------------------------\n", + " Unit Performance\n", + "\n", + " Variables: \n", + "\n", + " Key : Value : Units : Fixed : Bounds\n", + " Heat Duty : 0.0000 : watt : True : (None, None)\n", + " Volume : 0.14705 : meter ** 3 : False : (None, None)\n", + "\n", + "------------------------------------------------------------------------------------\n", + " Stream Table\n", + " Units Inlet Outlet \n", + " flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.2993e-07\n", + " flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 8.4147e-07\n", + " flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-12\n", + " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-12\n", + " flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.11936 0.35374\n", + " flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.31252 0.078129\n", + " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.0377 1.2721\n", + " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.56260 0.32821\n", + " temperature kelvin 600.00 771.85\n", + " pressure pascal 3.5000e+05 3.5000e+05\n", + "====================================================================================\n" + ] + } + ], "source": [ "m.fs.R101.report()" ] @@ -1335,7 +2381,40 @@ "cell_type": "code", "execution_count": 58, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "====================================================================================\n", + "Unit : fs.F101 Time: 0.0\n", + "------------------------------------------------------------------------------------\n", + " Unit Performance\n", + "\n", + " Variables: \n", + "\n", + " Key : Value : Units : Fixed : Bounds\n", + " Heat Duty : -70343. : watt : False : (None, None)\n", + " Pressure Change : 0.0000 : pascal : True : (None, None)\n", + "\n", + "------------------------------------------------------------------------------------\n", + " Stream Table\n", + " Units Inlet Vapor Outlet Liquid Outlet\n", + " flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.0000e-08 0.20460 \n", + " flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 1.0000e-08 0.062520 \n", + " flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 2.6712e-07 \n", + " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 2.6712e-07 \n", + " flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.35374 0.14915 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.078129 0.015610 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2721 1.2721 1.0000e-08 \n", + " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.32821 0.32821 1.0000e-08 \n", + " temperature kelvin 771.85 325.00 325.00 \n", + " pressure pascal 3.5000e+05 3.5000e+05 3.5000e+05 \n", + "====================================================================================\n" + ] + } + ], "source": [ "m.fs.F101.report()" ] @@ -1356,7 +2435,25 @@ "cell_type": "code", "execution_count": 59, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Units Reactor Light Gases\n", + "flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 \n", + "flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 \n", + "flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.35374 0.14915 \n", + "flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.078129 0.015610 \n", + "flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2721 1.2721 \n", + "flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.32821 0.32821 \n", + "temperature kelvin 771.85 325.00 \n", + "pressure pascal 3.5000e+05 3.5000e+05 \n" + ] + } + ], "source": [ "from idaes.core.util.tables import (\n", " create_stream_table_dataframe,\n", @@ -1663,7 +2760,117 @@ "cell_type": "code", "execution_count": 71, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: model contains export suffix 'scaling_factor' that contains 3\n", + "component keys that are not exported as part of the NL file. Skipping.\n", + "WARNING: model contains export suffix 'scaling_factor' that contains 150 keys\n", + "that are not Var, Constraint, Objective, or the model. Skipping.\n", + "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", + "tol=1e-06\n", + "max_iter=200\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 ma27.\n", + "\n", + "Number of nonzeros in equality constraint Jacobian...: 4073\n", + "Number of nonzeros in inequality constraint Jacobian.: 6\n", + "Number of nonzeros in Lagrangian Hessian.............: 2391\n", + "\n", + "Total number of variables............................: 1176\n", + " variables with only lower bounds: 113\n", + " variables with lower and upper bounds: 372\n", + " variables with only upper bounds: 0\n", + "Total number of equality constraints.................: 1169\n", + "Total number of inequality constraints...............: 3\n", + " inequality constraints with only lower bounds: 2\n", + " inequality constraints with lower and upper bounds: 0\n", + " inequality constraints with only upper bounds: 1\n", + "\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 0 4.4230147e+05 2.99e+05 9.90e+01 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", + " 1 4.3753585e+05 2.91e+05 1.28e+02 -1.0 3.09e+06 - 3.58e-01 2.40e-02f 1\n", + " 2 4.3545100e+05 2.78e+05 1.55e+02 -1.0 1.78e+06 - 3.31e-01 4.74e-02h 1\n", + " 3 4.2822311e+05 2.20e+05 4.50e+02 -1.0 2.99e+06 - 2.95e-02 1.35e-01h 1\n", + " 4 4.2249096e+05 1.45e+05 1.43e+03 -1.0 7.01e+06 - 5.14e-01 2.03e-01h 1\n", + " 5 4.2194364e+05 8.17e+04 1.70e+04 -1.0 6.06e+06 - 5.97e-01 4.28e-01h 1\n", + " 6 4.2602765e+05 4.55e+04 1.10e+06 -1.0 4.32e+06 - 9.26e-01 5.07e-01h 1\n", + " 7 4.3776643e+05 2.03e+04 6.44e+09 -1.0 2.42e+06 - 9.90e-01 9.47e-01h 1\n", + " 8 4.3846260e+05 1.92e+04 6.05e+09 -1.0 4.42e+05 - 5.40e-01 5.74e-02h 1\n", + " 9 4.4529853e+05 4.05e+04 4.66e+10 -1.0 2.47e+05 - 9.96e-01 9.90e-01h 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 10 4.4906283e+05 9.76e+03 1.10e+10 -1.0 1.12e+03 -4.0 1.26e-01 7.45e-01h 1\n", + " 11 4.5079086e+05 1.19e+03 1.54e+09 -1.0 5.63e+02 -4.5 3.77e-01 1.00e+00h 1\n", + " 12 4.5024224e+05 2.66e+00 3.67e+06 -1.0 6.61e+01 -5.0 1.00e+00 1.00e+00f 1\n", + " 13 4.4946170e+05 5.64e-01 9.29e+05 -1.0 1.81e+02 -5.4 1.00e+00 7.88e-01f 1\n", + " 14 4.4916780e+05 8.48e+00 1.62e+05 -1.0 2.83e+02 -5.9 1.00e+00 1.00e+00f 1\n", + " 15 4.4899127e+05 4.83e+00 9.07e+04 -1.0 1.01e+02 -6.4 1.00e+00 4.40e-01f 2\n", + " 16 4.4886718e+05 7.00e-01 4.61e+02 -1.0 2.35e+02 -6.9 1.00e+00 1.00e+00f 1\n", + " 17 4.4800159e+05 1.39e+02 4.52e+06 -3.8 1.17e+03 -7.3 9.79e-01 9.37e-01f 1\n", + " 18 4.4672196e+05 9.59e+02 1.22e+06 -3.8 4.55e+03 -7.8 1.00e+00 9.43e-01f 1\n", + " 19 4.4401667e+05 7.75e+03 1.55e+05 -3.8 1.08e+04 -8.3 1.00e+00 1.00e+00f 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 20 4.4185035e+05 1.91e+04 1.36e+04 -3.8 1.33e+04 -8.8 1.00e+00 1.00e+00h 1\n", + " 21 4.4241001e+05 3.52e+03 5.96e+03 -3.8 2.94e+03 -9.2 1.00e+00 1.00e+00h 1\n", + " 22 4.4185237e+05 7.82e+00 2.91e+02 -3.8 7.13e+03 -9.7 2.39e-01 1.00e+00h 1\n", + " 23 4.4124091e+05 1.53e+01 3.11e+02 -3.8 4.82e+04 -10.2 8.59e-01 1.36e-01f 1\n", + " 24 4.4137379e+05 1.80e+00 2.91e+02 -3.8 1.41e+04 - 1.95e-01 1.00e+00h 1\n", + " 25 4.3862833e+05 1.70e+03 9.48e+04 -3.8 1.57e+07 - 1.29e-03 9.10e-02f 1\n", + " 26 4.3883308e+05 1.49e+03 8.46e+04 -3.8 1.02e+06 - 1.00e+00 1.35e-01h 1\n", + " 27 4.3885472e+05 2.18e+01 3.40e+03 -3.8 1.38e+05 - 1.00e+00 1.00e+00h 1\n", + " 28 4.3884160e+05 5.90e-02 6.38e+01 -3.8 8.66e+03 - 1.00e+00 1.00e+00h 1\n", + " 29 4.3884157e+05 6.48e-07 4.63e-04 -3.8 2.89e+01 - 1.00e+00 1.00e+00h 1\n", + "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", + " 30 4.3883990e+05 3.57e-01 2.38e+03 -5.7 8.19e+02 - 1.00e+00 1.00e+00f 1\n", + " 31 4.3883992e+05 3.50e-07 7.79e-06 -5.7 3.55e-01 - 1.00e+00 1.00e+00h 1\n", + " 32 4.3883990e+05 5.47e-05 3.63e-01 -8.0 1.01e+01 - 1.00e+00 1.00e+00h 1\n", + " 33 4.3883990e+05 2.24e-08 1.46e-07 -8.0 5.42e-05 - 1.00e+00 1.00e+00h 1\n", + "\n", + "Number of Iterations....: 33\n", + "\n", + " (scaled) (unscaled)\n", + "Objective...............: 4.3883989842628603e+02 4.3883989842628600e+05\n", + "Dual infeasibility......: 1.4600704448671754e-07 1.4600704448671753e-04\n", + "Constraint violation....: 2.9103830456733704e-11 2.2351741790771484e-08\n", + "Complementarity.........: 9.0909948039799681e-09 9.0909948039799686e-06\n", + "Overall NLP error.......: 9.0909948039799681e-09 1.4600704448671753e-04\n", + "\n", + "\n", + "Number of objective function evaluations = 35\n", + "Number of objective gradient evaluations = 34\n", + "Number of equality constraint evaluations = 35\n", + "Number of inequality constraint evaluations = 35\n", + "Number of equality constraint Jacobian evaluations = 34\n", + "Number of inequality constraint Jacobian evaluations = 34\n", + "Number of Lagrangian Hessian evaluations = 33\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.164\n", + "Total CPU secs in NLP function evaluations = 0.020\n", + "\n", + "EXIT: Optimal Solution Found.\n" + ] + } + ], "source": [ "results = solver.solve(m, tee=True)" ] @@ -1681,7 +2888,26 @@ "cell_type": "code", "execution_count": 73, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total cost = $ 438839.898426286\n", + "operating cost = $ 408883.5314830889\n", + "capital cost = $ 29956.3669431971\n", + "\n", + "Distillate flowrate = 0.1799999900263989 mol/s\n", + "Benzene purity = 98.99999900049086 %\n", + "Residue flowrate = 0.1085161642426372 mol/s\n", + "Toluene purity = 15.676178086213548 %\n", + "\n", + "Conversion = 93.38705916369427 %\n", + "\n", + "Overhead benzene loss in F101 = 17.34061793115618 %\n" + ] + } + ], "source": [ "print(\"total cost = $\", value(m.fs.capital_cost) + value(m.fs.operating_cost))\n", "print(\"operating cost = $\", value(m.fs.operating_cost))\n", @@ -1726,7 +2952,23 @@ "cell_type": "code", "execution_count": 75, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimal Values\n", + "\n", + "H101 outlet temperature = 568.923204295196 K\n", + "\n", + "R101 outlet temperature = 790.3655425698853 K\n", + "\n", + "F101 outlet temperature = 298.0 K\n", + "\n", + "H102 outlet temperature = 368.7414339952852 K\n" + ] + } + ], "source": [ "print(\"Optimal Values\")\n", "print()\n", @@ -1756,13 +2998,6 @@ "\n", "Finally, observe that the operating temperature of the flash (F101) is almost at its lower bound. This helps in minimizing the amount of benzene in the vapor stream leaving the flash." ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -1782,9 +3017,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.16" + "version": "3.10.13" } }, "nbformat": 4, "nbformat_minor": 3 -} +} \ No newline at end of file diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheets_for_costing_notebook.py b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheets_for_costing_notebook.py index 83c8d23e..94e29ac1 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheets_for_costing_notebook.py +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheets_for_costing_notebook.py @@ -52,6 +52,7 @@ import idaes.core.util.scaling as iscale from pyomo.util.check_units import assert_units_consistent from idaes.core.util.model_statistics import degrees_of_freedom +from idaes.core.util.exceptions import InitializationError # Import costing methods - classes, heaters, vessels, compressors, columns from idaes.models.costing.SSLW import ( @@ -216,7 +217,13 @@ def hda_with_flash(tee=True): seq.set_guesses_for(m.fs.H101.inlet, tear_guesses) def function(unit): - unit.initialize(outlvl=outlvl) + try: + initializer = unit.default_initializer() + initializer.initialize(unit, output_level=idaeslog.INFO) + except InitializationError: + solver=get_solver() + solver.solve(unit) + seq.run(m, function) @@ -433,7 +440,12 @@ def hda_with_distillation(tee=True): seq.set_guesses_for(m.fs.H101.inlet, tear_guesses) def function(unit): - unit.initialize(outlvl=outlvl) + try: + initializer = unit.default_initializer() + initializer.initialize(unit, output_level=idaeslog.INFO) + except InitializationError: + solver=get_solver() + solver.solve(unit) seq.run(m, function) diff --git a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet.ipynb b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet.ipynb index 3a4ad898..acadec3a 100644 --- a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet.ipynb @@ -208,7 +208,9 @@ "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", "# Import idaes logger to set output levels\n", - "import idaes.logger as idaeslog" + "import idaes.logger as idaeslog\n", + "from idaes.core.solvers import get_solver\n", + "from idaes.core.util.exceptions import InitializationError" ] }, { @@ -988,7 +990,13 @@ "outputs": [], "source": [ "def function(unit):\n", - " unit.initialize(outlvl=idaeslog.INFO)" + " try:\n", + " initializer = unit.default_initializer()\n", + " initializer.initialize(unit, output_level=idaeslog.INFO)\n", + " except InitializationError:\n", + " solver=get_solver()\n", + " solver.solve(unit)\n", + " " ] }, { diff --git a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_doc.ipynb b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_doc.ipynb index 44fe440f..9eebd4a0 100644 --- a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_doc.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_doc.ipynb @@ -1,2212 +1,1364 @@ { - "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": [ - "\n", - "# HDA Flowsheet Simulation and Optimization\n", - "\n", - "Author: Jaffer Ghouse \n", - "Maintainer: Brandon Paul \n", - "Updated: 2023-06-01 \n", - "\n", - "## Learning outcomes\n", - "\n", - "\n", - "- Construct a steady-state flowsheet using the IDAES unit model library\n", - "- Connecting unit models in a flowsheet using Arcs\n", - "- Using the SequentialDecomposition tool to initialize a flowsheet with recycle\n", - "- Fomulate and solve an optimization problem\n", - " - Defining an objective function\n", - " - Setting variable bounds\n", - " - Adding additional constraints \n", - "\n", - "\n", - "## Problem Statement\n", - "\n", - "Hydrodealkylation is a chemical reaction that often involves reacting\n", - "an aromatic hydrocarbon in the presence of hydrogen gas to form a\n", - "simpler aromatic hydrocarbon devoid of functional groups. In this\n", - "example, toluene will be reacted with hydrogen gas at high temperatures\n", - " to form benzene via the following reaction:\n", - "\n", - "**C6H5CH3 + H2 → C6H6 + CH4**\n", - "\n", - "\n", - "This reaction is often accompanied by an equilibrium side reaction\n", - "which forms diphenyl, which we will neglect for this example.\n", - "\n", - "This example is based on the 1967 AIChE Student Contest problem as\n", - "present by Douglas, J.M., Chemical Design of Chemical Processes, 1988,\n", - "McGraw-Hill.\n", - "\n", - "The flowsheet that we will be using for this module is shown below with the stream conditions. We will be processing toluene and hydrogen to produce at least 370 TPY of benzene. As shown in the flowsheet, there are two flash tanks, F101 to separate out the non-condensibles and F102 to further separate the benzene-toluene mixture to improve the benzene purity. Note that typically a distillation column is required to obtain high purity benzene but that is beyond the scope of this workshop. The non-condensibles separated out in F101 will be partially recycled back to M101 and the rest will be either purged or combusted for power generation.We will assume ideal gas for this flowsheet. The properties required for this module are available in the same directory:\n", - "\n", - "- hda_ideal_VLE.py\n", - "- hda_reaction.py\n", - "\n", - "The state variables chosen for the property package are **flows of component by phase, temperature and pressure**. The components considered are: **toluene, hydrogen, benzene and methane**. Therefore, every stream has 8 flow variables, 1 temperature and 1 pressure variable. \n", - "\n", - "![](HDA_flowsheet.png)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Importing required pyomo and idaes components\n", - "\n", - "\n", - "To construct a flowsheet, we will need several components from the pyomo and idaes package. Let us first import the following components from Pyomo:\n", - "- Constraint (to write constraints)\n", - "- Var (to declare variables)\n", - "- ConcreteModel (to create the concrete model object)\n", - "- Expression (to evaluate values as a function of variables defined in the model)\n", - "- Objective (to define an objective function for optimization)\n", - "- SolverFactory (to solve the problem)\n", - "- TransformationFactory (to apply certain transformations)\n", - "- Arc (to connect two unit models)\n", - "- SequentialDecomposition (to initialize the flowsheet in a sequential mode)\n", - "\n", - "For further details on these components, please refer to the pyomo documentation: https://pyomo.readthedocs.io/en/stable/\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from pyomo.environ import (\n", - " Constraint,\n", - " Var,\n", - " ConcreteModel,\n", - " Expression,\n", - " Objective,\n", - " SolverFactory,\n", - " TransformationFactory,\n", - " value,\n", - ")\n", - "from pyomo.network import Arc, SequentialDecomposition" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "From idaes, we will be needing the FlowsheetBlock and the following unit models:\n", - "- Mixer\n", - "- Heater\n", - "- StoichiometricReactor\n", - "- **Flash**\n", - "- Separator (splitter) \n", - "- PressureChanger" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from idaes.core import FlowsheetBlock" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "from idaes.models.unit_models import (\n", - " PressureChanger,\n", - " Mixer,\n", - " Separator as Splitter,\n", - " Heater,\n", - " StoichiometricReactor,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "Now, import the remaining unit models highlighted in blue above and run the cell using `Shift+Enter` after typing in the code. \n", - "
\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "# Todo: import flash model from idaes.models.unit_models\n", - "from idaes.models.unit_models import Flash" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will also be needing some utility tools to put together the flowsheet and calculate the degrees of freedom. " - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", - "from idaes.core.util.model_statistics import degrees_of_freedom\n", - "\n", - "# Import idaes logger to set output levels\n", - "import idaes.logger as idaeslog" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Importing required thermo and reaction package\n", - "\n", - "The final set of imports are to import the thermo and reaction package for the HDA process. We have created a custom thermo package that assumes Ideal Gas with support for VLE. \n", - "\n", - "The reaction package here is very simple as we will be using only a StochiometricReactor and the reaction package consists of the stochiometric coefficients for the reaction and the parameter for the heat of reaction. \n", - "\n", - "Let us import the following modules and they are in the same directory as this jupyter notebook:\n", - "
    \n", - "
  • hda_ideal_VLE as thermo_props
  • \n", - "
  • hda_reaction as reaction_props
  • \n", - "
\n", - "" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "from idaes_examples.mod.hda import hda_ideal_VLE as thermo_props\n", - "from idaes_examples.mod.hda import hda_reaction as reaction_props" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Constructing the Flowsheet\n", - "\n", - "We have now imported all the components, unit models, and property modules we need to construct a flowsheet. Let us create a ConcreteModel and add the flowsheet block as we did in module 1. " - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "m = ConcreteModel()\n", - "m.fs = FlowsheetBlock(dynamic=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now need to add the property packages to the flowsheet. Unlike Module 1, where we only had a thermo property package, for this flowsheet we will also need to add a reaction property package. " - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.thermo_params = thermo_props.HDAParameterBlock()\n", - "m.fs.reaction_params = reaction_props.HDAReactionParameterBlock(\n", - " property_package=m.fs.thermo_params\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Adding Unit Models\n", - "\n", - "Let us start adding the unit models we have imported to the flowsheet. Here, we are adding the Mixer (assigned a name M101) and a Heater (assigned a name H101). Note that, all unit models need to be given a property package argument. In addition to that, there are several arguments depending on the unit model, please refer to the documentation for more details (https://idaes-pse.readthedocs.io/en/stable/reference_guides/model_libraries/generic/unit_models/index.html). For example, the Mixer unit model here is given a `list` consisting of names to the three inlets. " - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.M101 = Mixer(\n", - " property_package=m.fs.thermo_params,\n", - " inlet_list=[\"toluene_feed\", \"hydrogen_feed\", \"vapor_recycle\"],\n", - ")\n", - "\n", - "m.fs.H101 = Heater(\n", - " property_package=m.fs.thermo_params,\n", - " has_pressure_change=False,\n", - " has_phase_equilibrium=True,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "Let us now add the StoichiometricReactor(assign the name R101) and pass the following arguments:\n", - "
    \n", - "
  • \"property_package\": m.fs.thermo_params
  • \n", - "
  • \"reaction_package\": m.fs.reaction_params
  • \n", - "
  • \"has_heat_of_reaction\": True
  • \n", - "
  • \"has_heat_transfer\": True
  • \n", - "
  • \"has_pressure_change\": False
  • \n", - "
\n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "# Todo: Add reactor with the specifications above\n", - "m.fs.R101 = StoichiometricReactor(\n", - " property_package=m.fs.thermo_params,\n", - " reaction_package=m.fs.reaction_params,\n", - " has_heat_of_reaction=True,\n", - " has_heat_transfer=True,\n", - " has_pressure_change=False,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us now add the Flash(assign the name F101) and pass the following arguments:\n", - "
    \n", - "
  • \"property_package\": m.fs.thermo_params
  • \n", - "
  • \"has_heat_transfer\": True
  • \n", - "
  • \"has_pressure_change\": False
  • \n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.F101 = Flash(\n", - " property_package=m.fs.thermo_params,\n", - " has_heat_transfer=True,\n", - " has_pressure_change=True,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us now add the Splitter(S101), PressureChanger(C101) and the second Flash(F102). " - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.S101 = Splitter(\n", - " property_package=m.fs.thermo_params,\n", - " ideal_separation=False,\n", - " outlet_list=[\"purge\", \"recycle\"],\n", - ")\n", - "\n", - "\n", - "m.fs.C101 = PressureChanger(\n", - " property_package=m.fs.thermo_params,\n", - " compressor=True,\n", - " thermodynamic_assumption=ThermodynamicAssumption.isothermal,\n", - ")\n", - "\n", - "m.fs.F102 = Flash(\n", - " property_package=m.fs.thermo_params,\n", - " has_heat_transfer=True,\n", - " has_pressure_change=True,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Connecting Unit Models using Arcs\n", - "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer(M101) to the inlet of the heater(H101). " - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.s03 = Arc(source=m.fs.M101.outlet, destination=m.fs.H101.inlet)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "![](HDA_flowsheet.png) \n", - "\n", - "
\n", - "Inline Exercise:\n", - "Now, connect the H101 outlet to the R101 inlet using the cell above as a guide. \n", - "
\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "# Todo: Connect the H101 outlet to R101 inlet\n", - "m.fs.s04 = Arc(source=m.fs.H101.outlet, destination=m.fs.R101.inlet)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will now be connecting the rest of the flowsheet as shown below. Notice how the outlet names are different for the flash tanks F101 and F102 as they have a vapor and a liquid outlet. " - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.s05 = Arc(source=m.fs.R101.outlet, destination=m.fs.F101.inlet)\n", - "m.fs.s06 = Arc(source=m.fs.F101.vap_outlet, destination=m.fs.S101.inlet)\n", - "m.fs.s08 = Arc(source=m.fs.S101.recycle, destination=m.fs.C101.inlet)\n", - "m.fs.s09 = Arc(source=m.fs.C101.outlet, destination=m.fs.M101.vapor_recycle)\n", - "m.fs.s10 = Arc(source=m.fs.F101.liq_outlet, destination=m.fs.F102.inlet)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have now connected the unit model block using the arcs. However, each of these arcs link to ports on the two unit models that are connected. In this case, the ports consist of the state variables that need to be linked between the unit models. Pyomo provides a convenient method to write these equality constraints for us between two ports and this is done as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "TransformationFactory(\"network.expand_arcs\").apply_to(m)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Adding expressions to compute purity and operating costs\n", - "\n", - "In this section, we will add a few Expressions that allows us to evaluate the performance. Expressions provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on Expressions, please refer to: https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html\n", - "\n", - "For this flowsheet, we are interested in computing the purity of the product Benzene stream (i.e. the mole fraction) and the operating cost which is a sum of the cooling and heating cost. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us first add an Expression to compute the mole fraction of benzene in the `vap_outlet` of F102 which is our product stream. Please note that the var flow_mol_phase_comp has the index - [time, phase, component]. As this is a steady-state flowsheet, the time index by default is 0. The valid phases are [\"Liq\", \"Vap\"]. Similarly the valid component list is [\"benzene\", \"toluene\", \"hydrogen\", \"methane\"]." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.purity = Expression(\n", - " expr=m.fs.F102.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]\n", - " / (\n", - " m.fs.F102.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]\n", - " + m.fs.F102.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"toluene\"]\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, let us add an expression to compute the cooling cost assuming a cost of 0.212E-4 $/kW. Note that cooling utility is required for the reactor (R101) and the first flash (F101). " - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.cooling_cost = Expression(\n", - " expr=0.212e-7 * (-m.fs.F101.heat_duty[0]) + 0.212e-7 * (-m.fs.R101.heat_duty[0])\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "Now, let us add an expression to compute the heating cost assuming the utility cost as follows:\n", - "
    \n", - "
  • 2.2E-4 dollars/kW for H101
  • \n", - "
  • 1.9E-4 dollars/kW for F102
  • \n", - "
\n", - "Note that the heat duty is in units of watt (J/s). " - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.heating_cost = Expression(\n", - " expr=2.2e-7 * m.fs.H101.heat_duty[0] + 1.9e-7 * m.fs.F102.heat_duty[0]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us now add an expression to compute the total operating cost per year which is basically the sum of the cooling and heating cost we defined above. " - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.operating_cost = Expression(\n", - " expr=(3600 * 24 * 365 * (m.fs.heating_cost + m.fs.cooling_cost))\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Fixing feed conditions\n", - "\n", - "Let us first check how many degrees of freedom exist for this flowsheet using the `degrees_of_freedom` tool we imported earlier. " - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "29\n" - ] - } - ], - "source": [ - "print(degrees_of_freedom(m))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will now be fixing the toluene feed stream to the conditions shown in the flowsheet above. Please note that though this is a pure toluene feed, the remaining components are still assigned a very small non-zero value to help with convergence and initializing. " - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"benzene\"].fix(1e-5)\n", - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"toluene\"].fix(1e-5)\n", - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"hydrogen\"].fix(1e-5)\n", - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"methane\"].fix(1e-5)\n", - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"benzene\"].fix(1e-5)\n", - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"toluene\"].fix(0.30)\n", - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"hydrogen\"].fix(1e-5)\n", - "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"methane\"].fix(1e-5)\n", - "m.fs.M101.toluene_feed.temperature.fix(303.2)\n", - "m.fs.M101.toluene_feed.pressure.fix(350000)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "Similarly, let us fix the hydrogen feed to the following conditions in the next cell:\n", - "
    \n", - "
  • FH2 = 0.30 mol/s
  • \n", - "
  • FCH4 = 0.02 mol/s
  • \n", - "
  • Remaining components = 1e-5 mol/s
  • \n", - "
  • T = 303.2 K
  • \n", - "
  • P = 350000 Pa
  • \n", - "
\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"benzene\"].fix(1e-5)\n", - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"toluene\"].fix(1e-5)\n", - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"hydrogen\"].fix(0.30)\n", - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"methane\"].fix(0.02)\n", - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"benzene\"].fix(1e-5)\n", - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"toluene\"].fix(1e-5)\n", - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"hydrogen\"].fix(1e-5)\n", - "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"methane\"].fix(1e-5)\n", - "m.fs.M101.hydrogen_feed.temperature.fix(303.2)\n", - "m.fs.M101.hydrogen_feed.pressure.fix(350000)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Fixing unit model specifications\n", - "\n", - "Now that we have fixed our inlet feed conditions, we will now be fixing the operating conditions for the unit models in the flowsheet. Let us set set the H101 outlet temperature to 600 K. " - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.H101.outlet.temperature.fix(600)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For the StoichiometricReactor, we have to define the conversion in terms of toluene. This requires us to create a new variable for specifying the conversion and adding a Constraint that defines the conversion with respect to toluene. The second degree of freedom for the reactor is to define the heat duty. In this case, let us assume the reactor to be adiabatic i.e. Q = 0. " - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.R101.conversion = Var(initialize=0.75, bounds=(0, 1))\n", - "\n", - "m.fs.R101.conv_constraint = Constraint(\n", - " expr=m.fs.R101.conversion * m.fs.R101.inlet.flow_mol_phase_comp[0, \"Vap\", \"toluene\"]\n", - " == (\n", - " m.fs.R101.inlet.flow_mol_phase_comp[0, \"Vap\", \"toluene\"]\n", - " - m.fs.R101.outlet.flow_mol_phase_comp[0, \"Vap\", \"toluene\"]\n", - " )\n", - ")\n", - "\n", - "m.fs.R101.conversion.fix(0.75)\n", - "m.fs.R101.heat_duty.fix(0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The Flash conditions for F101 can be set as follows. " - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.F101.vap_outlet.temperature.fix(325.0)\n", - "m.fs.F101.deltaP.fix(0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "Set the conditions for Flash F102 to the following conditions:\n", - "
    \n", - "
  • T = 375 K
  • \n", - "
  • deltaP = -200000
  • \n", - "
\n", - "\n", - "Use Shift+Enter to run the cell once you have typed in your code. \n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "m.fs.F102.vap_outlet.temperature.fix(375)\n", - "m.fs.F102.deltaP.fix(-200000)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us fix the purge split fraction to 20% and the outlet pressure of the compressor is set to 350000 Pa. " - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.S101.split_fraction[0, \"purge\"].fix(0.2)\n", - "m.fs.C101.outlet.pressure.fix(350000)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "We have now defined all the feed conditions and the inputs required for the unit models. The system should now have 0 degrees of freedom i.e. should be a square problem. Please check that the degrees of freedom is 0. \n", - "\n", - "Use Shift+Enter to run the cell once you have typed in your code. \n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n" - ] - } - ], - "source": [ - "print(degrees_of_freedom(m))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initialization\n", - "\n", - "\n", - "This section will demonstrate how to use the built-in sequential decomposition tool to initialize our flowsheet.\n", - "\n", - "![](HDA_flowsheet.png) \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us first create an object for the SequentialDecomposition and specify our options for this. " - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [], - "source": [ - "seq = SequentialDecomposition()\n", - "seq.options.select_tear_method = \"heuristic\"\n", - "seq.options.tear_method = \"Wegstein\"\n", - "seq.options.iterLim = 3\n", - "\n", - "# Using the SD tool\n", - "G = seq.create_graph(m)\n", - "heuristic_tear_set = seq.tear_set_arcs(G, method=\"heuristic\")\n", - "order = seq.calculation_order(G)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Which is the tear stream? Display tear set and order" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "fs.s03\n" - ] - } - ], - "source": [ - "for o in heuristic_tear_set:\n", - " print(o.name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "What sequence did the SD tool determine to solve this flowsheet with the least number of tears? " - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "fs.H101\n", - "fs.R101\n", - "fs.F101\n", - "fs.S101\n", - "fs.C101\n", - "fs.M101\n" - ] - } - ], - "source": [ - "for o in order:\n", - " print(o[0].name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " \n", - "\n", - "![](HDA_tear_stream.png) \n", - "\n", - "\n", - "The SequentialDecomposition tool has determined that the tear stream is the mixer outlet. We will need to provide a reasonable guess for this." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "tear_guesses = {\n", - " \"flow_mol_phase_comp\": {\n", - " (0, \"Vap\", \"benzene\"): 1e-5,\n", - " (0, \"Vap\", \"toluene\"): 1e-5,\n", - " (0, \"Vap\", \"hydrogen\"): 0.30,\n", - " (0, \"Vap\", \"methane\"): 0.02,\n", - " (0, \"Liq\", \"benzene\"): 1e-5,\n", - " (0, \"Liq\", \"toluene\"): 0.30,\n", - " (0, \"Liq\", \"hydrogen\"): 1e-5,\n", - " (0, \"Liq\", \"methane\"): 1e-5,\n", - " },\n", - " \"temperature\": {0: 303},\n", - " \"pressure\": {0: 350000},\n", - "}\n", - "\n", - "# Pass the tear_guess to the SD tool\n", - "seq.set_guesses_for(m.fs.H101.inlet, tear_guesses)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we need to tell the tool how to initialize a particular unit. We will be writing a python function which takes in a \"unit\" and calls the initialize method on that unit. " - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "def function(unit):\n", - " unit.initialize(outlvl=idaeslog.INFO)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We are now ready to initialize our flowsheet in a sequential mode. Note that we specifically set the iteration limit to be 5 as we are trying to use this tool only to get a good set of initial values such that IPOPT can then take over and solve this flowsheet for us. " - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:38 [INFO] idaes.init.fs.H101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:38 [INFO] idaes.init.fs.H101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:39 [INFO] idaes.init.fs.R101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:39 [INFO] idaes.init.fs.R101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:39 [INFO] idaes.init.fs.F101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:39 [INFO] idaes.init.fs.F101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:39 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:39 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:39 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:39 [INFO] idaes.init.fs.F102.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:39 [INFO] idaes.init.fs.F102: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:39 [INFO] idaes.init.fs.C101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:39 [INFO] idaes.init.fs.C101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:39 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:39 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:39 [INFO] idaes.init.fs.H101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:39 [INFO] idaes.init.fs.H101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:40 [INFO] idaes.init.fs.R101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:40 [INFO] idaes.init.fs.R101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:40 [INFO] idaes.init.fs.F101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:40 [INFO] idaes.init.fs.F101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:40 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:40 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:40 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:40 [INFO] idaes.init.fs.C101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:40 [INFO] idaes.init.fs.C101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:40 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:40 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:40 [INFO] idaes.init.fs.H101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:40 [INFO] idaes.init.fs.H101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:40 [INFO] idaes.init.fs.R101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:40 [INFO] idaes.init.fs.R101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.F101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.F101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.C101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.C101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.H101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.H101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.R101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.R101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.F101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.F101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:41 [INFO] idaes.init.fs.C101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.C101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.H101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.H101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.R101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.R101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.F101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.F101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.S101.purge_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.S101.recycle_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.S101: Initialization Step 2 Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.C101.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.C101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.M101.mixed_state: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:42 [INFO] idaes.init.fs.M101: Initialization Complete: optimal - Optimal Solution Found\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: Wegstein failed to converge in 3 iterations\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:43 [INFO] idaes.init.fs.F102.control_volume: Initialization Complete\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-11-02 10:27:43 [INFO] idaes.init.fs.F102: Initialization Complete: optimal - Optimal Solution Found\n" - ] - } - ], - "source": [ - "seq.run(m, function)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "We have now initialized the flowsheet. Let us run the flowsheet in a simulation mode to look at the results. To do this, complete the last line of code where we pass the model to the solver. You will need to type the following:\n", - " \n", - "results = solver.solve(m, tee=True)\n", - "\n", - "Use Shift+Enter to run the cell once you have typed in your code. \n", - "
\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", - "tol=1e-06\n", - "max_iter=200\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 ma27.\n", - "\n", - "Number of nonzeros in equality constraint Jacobian...: 1031\n", - "Number of nonzeros in inequality constraint Jacobian.: 0\n", - "Number of nonzeros in Lagrangian Hessian.............: 934\n", - "\n", - "Total number of variables............................: 340\n", - " variables with only lower bounds: 0\n", - " variables with lower and upper bounds: 146\n", - " variables with only upper bounds: 0\n", - "Total number of equality constraints.................: 340\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 6.60e+04 0.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", - " 1 0.0000000e+00 8.69e+03 1.42e+03 -1.0 2.00e+04 - 9.71e-01 4.67e-01H 1\n", - " 2 0.0000000e+00 3.05e+03 1.56e+03 -1.0 1.60e+04 - 9.79e-01 4.90e-01h 1\n", - " 3 0.0000000e+00 1.58e+03 1.55e+05 -1.0 1.41e+04 - 9.90e-01 4.99e-01h 1\n", - " 4 0.0000000e+00 5.49e+02 8.87e+08 -1.0 8.43e+03 - 1.00e+00 9.57e-01h 1\n", - " 5 0.0000000e+00 4.25e+03 2.87e+10 -1.0 8.02e+02 - 1.00e+00 9.90e-01h 1\n", - " 6 0.0000000e+00 2.25e+03 1.51e+10 -1.0 8.39e+00 - 1.00e+00 1.00e+00h 1\n", - " 7 0.0000000e+00 2.27e+01 1.40e+08 -1.0 2.45e-03 - 1.00e+00 1.00e+00f 1\n", - " 8 0.0000000e+00 2.45e-03 1.23e+04 -1.0 2.38e-05 - 1.00e+00 1.00e+00h 1\n", - " 9 0.0000000e+00 7.45e-09 3.06e-01 -2.5 9.06e-08 - 1.00e+00 1.00e+00h 1\n", - "Cannot recompute multipliers for feasibility problem. Error in eq_mult_calculator\n", - "\n", - "Number of Iterations....: 9\n", - "\n", - " (scaled) (unscaled)\n", - "Objective...............: 0.0000000000000000e+00 0.0000000000000000e+00\n", - "Dual infeasibility......: 2.8284422320850682e+05 2.8284422320850682e+05\n", - "Constraint violation....: 2.9103830456733704e-11 7.4505805969238281e-09\n", - "Complementarity.........: 0.0000000000000000e+00 0.0000000000000000e+00\n", - "Overall NLP error.......: 2.9103830456733704e-11 2.8284422320850682e+05\n", - "\n", - "\n", - "Number of objective function evaluations = 11\n", - "Number of objective gradient evaluations = 10\n", - "Number of equality constraint evaluations = 11\n", - "Number of inequality constraint evaluations = 0\n", - "Number of equality constraint Jacobian evaluations = 10\n", - "Number of inequality constraint Jacobian evaluations = 0\n", - "Number of Lagrangian Hessian evaluations = 9\n", - "Total CPU secs in IPOPT (w/o function evaluations) = 0.004\n", - "Total CPU secs in NLP function evaluations = 0.000\n", - "\n", - "EXIT: Optimal Solution Found.\n" - ] - } - ], - "source": [ - "# Create the solver object\n", - "from idaes.core.solvers import get_solver\n", - "\n", - "solver = get_solver()\n", - "\n", - "# Solve the model\n", - "results = solver.solve(m, tee=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Analyze the results of the square problem\n", - "\n", - "\n", - "What is the total operating cost? " - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "operating cost = $ 419122.3387677983\n" - ] - } - ], - "source": [ - "print(\"operating cost = $\", value(m.fs.operating_cost))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For this operating cost, what is the amount of benzene we are able to produce and what purity we are able to achieve? " - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "====================================================================================\n", - "Unit : fs.F102 Time: 0.0\n", - "------------------------------------------------------------------------------------\n", - " Unit Performance\n", - "\n", - " Variables: \n", - "\n", - " Key : Value : Units : Fixed : Bounds\n", - " Heat Duty : 7352.5 : watt : False : (None, None)\n", - " Pressure Change : -2.0000e+05 : pascal : True : (None, None)\n", - "\n", - "------------------------------------------------------------------------------------\n", - " Stream Table\n", - " Units Inlet Vapor Outlet Liquid Outlet\n", - " flow_mol_phase_comp ('Liq', 'benzene') mole / second 0.20460 1.0000e-08 0.062620 \n", - " flow_mol_phase_comp ('Liq', 'toluene') mole / second 0.062520 1.0000e-08 0.032257 \n", - " flow_mol_phase_comp ('Liq', 'methane') mole / second 2.6712e-07 1.0000e-08 9.4877e-08 \n", - " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 2.6712e-07 1.0000e-08 9.4877e-08 \n", - " flow_mol_phase_comp ('Vap', 'benzene') mole / second 1.0000e-08 0.14198 1.0000e-08 \n", - " flow_mol_phase_comp ('Vap', 'toluene') mole / second 1.0000e-08 0.030264 1.0000e-08 \n", - " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.0000e-08 1.8224e-07 1.0000e-08 \n", - " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 1.0000e-08 1.8224e-07 1.0000e-08 \n", - " temperature kelvin 325.00 375.00 375.00 \n", - " pressure pascal 3.5000e+05 1.5000e+05 1.5000e+05 \n", - "====================================================================================\n", - "\n", - "benzene purity = 0.8242962943918918\n" - ] + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "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": [ + "\n", + "# HDA Flowsheet Simulation and Optimization\n", + "\n", + "Author: Jaffer Ghouse \n", + "Maintainer: Brandon Paul \n", + "Updated: 2023-06-01 \n", + "\n", + "## Learning outcomes\n", + "\n", + "\n", + "- Construct a steady-state flowsheet using the IDAES unit model library\n", + "- Connecting unit models in a flowsheet using Arcs\n", + "- Using the SequentialDecomposition tool to initialize a flowsheet with recycle\n", + "- Fomulate and solve an optimization problem\n", + " - Defining an objective function\n", + " - Setting variable bounds\n", + " - Adding additional constraints \n", + "\n", + "\n", + "## Problem Statement\n", + "\n", + "Hydrodealkylation is a chemical reaction that often involves reacting\n", + "an aromatic hydrocarbon in the presence of hydrogen gas to form a\n", + "simpler aromatic hydrocarbon devoid of functional groups. In this\n", + "example, toluene will be reacted with hydrogen gas at high temperatures\n", + " to form benzene via the following reaction:\n", + "\n", + "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", + "\n", + "\n", + "This reaction is often accompanied by an equilibrium side reaction\n", + "which forms diphenyl, which we will neglect for this example.\n", + "\n", + "This example is based on the 1967 AIChE Student Contest problem as\n", + "present by Douglas, J.M., Chemical Design of Chemical Processes, 1988,\n", + "McGraw-Hill.\n", + "\n", + "The flowsheet that we will be using for this module is shown below with the stream conditions. We will be processing toluene and hydrogen to produce at least 370 TPY of benzene. As shown in the flowsheet, there are two flash tanks, F101 to separate out the non-condensibles and F102 to further separate the benzene-toluene mixture to improve the benzene purity. Note that typically a distillation column is required to obtain high purity benzene but that is beyond the scope of this workshop. The non-condensibles separated out in F101 will be partially recycled back to M101 and the rest will be either purged or combusted for power generation.We will assume ideal gas for this flowsheet. The properties required for this module are available in the same directory:\n", + "\n", + "- hda_ideal_VLE.py\n", + "- hda_reaction.py\n", + "\n", + "The state variables chosen for the property package are **flows of component by phase, temperature and pressure**. The components considered are: **toluene, hydrogen, benzene and methane**. Therefore, every stream has 8 flow variables, 1 temperature and 1 pressure variable. \n", + "\n", + "![](HDA_flowsheet.png)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Importing required pyomo and idaes components\n", + "\n", + "\n", + "To construct a flowsheet, we will need several components from the pyomo and idaes package. Let us first import the following components from Pyomo:\n", + "- Constraint (to write constraints)\n", + "- Var (to declare variables)\n", + "- ConcreteModel (to create the concrete model object)\n", + "- Expression (to evaluate values as a function of variables defined in the model)\n", + "- Objective (to define an objective function for optimization)\n", + "- SolverFactory (to solve the problem)\n", + "- TransformationFactory (to apply certain transformations)\n", + "- Arc (to connect two unit models)\n", + "- SequentialDecomposition (to initialize the flowsheet in a sequential mode)\n", + "\n", + "For further details on these components, please refer to the pyomo documentation: https://pyomo.readthedocs.io/en/stable/\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from pyomo.environ import (\n", + " Constraint,\n", + " Var,\n", + " ConcreteModel,\n", + " Expression,\n", + " Objective,\n", + " SolverFactory,\n", + " TransformationFactory,\n", + " value,\n", + ")\n", + "from pyomo.network import Arc, SequentialDecomposition" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From idaes, we will be needing the FlowsheetBlock and the following unit models:\n", + "- Mixer\n", + "- Heater\n", + "- StoichiometricReactor\n", + "- **Flash**\n", + "- Separator (splitter) \n", + "- PressureChanger" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from idaes.core import FlowsheetBlock" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from idaes.models.unit_models import (\n", + " PressureChanger,\n", + " Mixer,\n", + " Separator as Splitter,\n", + " Heater,\n", + " StoichiometricReactor,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "Now, import the remaining unit models highlighted in blue above and run the cell using `Shift+Enter` after typing in the code. \n", + "
\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Todo: import flash model from idaes.models.unit_models\n", + "from idaes.models.unit_models import Flash" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will also be needing some utility tools to put together the flowsheet and calculate the degrees of freedom. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", + "from idaes.core.util.model_statistics import degrees_of_freedom\n", + "\n", + "# Import idaes logger to set output levels\n", + "import idaes.logger as idaeslog\n", + "from idaes.core.solvers import get_solver\n", + "from idaes.core.util.exceptions import InitializationError" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Importing required thermo and reaction package\n", + "\n", + "The final set of imports are to import the thermo and reaction package for the HDA process. We have created a custom thermo package that assumes Ideal Gas with support for VLE. \n", + "\n", + "The reaction package here is very simple as we will be using only a StochiometricReactor and the reaction package consists of the stochiometric coefficients for the reaction and the parameter for the heat of reaction. \n", + "\n", + "Let us import the following modules and they are in the same directory as this jupyter notebook:\n", + "
    \n", + "
  • hda_ideal_VLE as thermo_props
  • \n", + "
  • hda_reaction as reaction_props
  • \n", + "
\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from idaes_examples.mod.hda import hda_ideal_VLE as thermo_props\n", + "from idaes_examples.mod.hda import hda_reaction as reaction_props" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Constructing the Flowsheet\n", + "\n", + "We have now imported all the components, unit models, and property modules we need to construct a flowsheet. Let us create a ConcreteModel and add the flowsheet block as we did in module 1. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m = ConcreteModel()\n", + "m.fs = FlowsheetBlock(dynamic=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now need to add the property packages to the flowsheet. Unlike Module 1, where we only had a thermo property package, for this flowsheet we will also need to add a reaction property package. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.thermo_params = thermo_props.HDAParameterBlock()\n", + "m.fs.reaction_params = reaction_props.HDAReactionParameterBlock(\n", + " property_package=m.fs.thermo_params\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adding Unit Models\n", + "\n", + "Let us start adding the unit models we have imported to the flowsheet. Here, we are adding the Mixer (assigned a name M101) and a Heater (assigned a name H101). Note that, all unit models need to be given a property package argument. In addition to that, there are several arguments depending on the unit model, please refer to the documentation for more details (https://idaes-pse.readthedocs.io/en/stable/reference_guides/model_libraries/generic/unit_models/index.html). For example, the Mixer unit model here is given a `list` consisting of names to the three inlets. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.M101 = Mixer(\n", + " property_package=m.fs.thermo_params,\n", + " inlet_list=[\"toluene_feed\", \"hydrogen_feed\", \"vapor_recycle\"],\n", + ")\n", + "\n", + "m.fs.H101 = Heater(\n", + " property_package=m.fs.thermo_params,\n", + " has_pressure_change=False,\n", + " has_phase_equilibrium=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "Let us now add the StoichiometricReactor(assign the name R101) and pass the following arguments:\n", + "
    \n", + "
  • \"property_package\": m.fs.thermo_params
  • \n", + "
  • \"reaction_package\": m.fs.reaction_params
  • \n", + "
  • \"has_heat_of_reaction\": True
  • \n", + "
  • \"has_heat_transfer\": True
  • \n", + "
  • \"has_pressure_change\": False
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Todo: Add reactor with the specifications above\n", + "m.fs.R101 = StoichiometricReactor(\n", + " property_package=m.fs.thermo_params,\n", + " reaction_package=m.fs.reaction_params,\n", + " has_heat_of_reaction=True,\n", + " has_heat_transfer=True,\n", + " has_pressure_change=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us now add the Flash(assign the name F101) and pass the following arguments:\n", + "
    \n", + "
  • \"property_package\": m.fs.thermo_params
  • \n", + "
  • \"has_heat_transfer\": True
  • \n", + "
  • \"has_pressure_change\": False
  • \n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.F101 = Flash(\n", + " property_package=m.fs.thermo_params,\n", + " has_heat_transfer=True,\n", + " has_pressure_change=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us now add the Splitter(S101), PressureChanger(C101) and the second Flash(F102). " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.S101 = Splitter(\n", + " property_package=m.fs.thermo_params,\n", + " ideal_separation=False,\n", + " outlet_list=[\"purge\", \"recycle\"],\n", + ")\n", + "\n", + "\n", + "m.fs.C101 = PressureChanger(\n", + " property_package=m.fs.thermo_params,\n", + " compressor=True,\n", + " thermodynamic_assumption=ThermodynamicAssumption.isothermal,\n", + ")\n", + "\n", + "m.fs.F102 = Flash(\n", + " property_package=m.fs.thermo_params,\n", + " has_heat_transfer=True,\n", + " has_pressure_change=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Connecting Unit Models using Arcs\n", + "\n", + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer(M101) to the inlet of the heater(H101). " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.s03 = Arc(source=m.fs.M101.outlet, destination=m.fs.H101.inlet)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "![](HDA_flowsheet.png) \n", + "\n", + "
\n", + "Inline Exercise:\n", + "Now, connect the H101 outlet to the R101 inlet using the cell above as a guide. \n", + "
\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Todo: Connect the H101 outlet to R101 inlet\n", + "m.fs.s04 = Arc(source=m.fs.H101.outlet, destination=m.fs.R101.inlet)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will now be connecting the rest of the flowsheet as shown below. Notice how the outlet names are different for the flash tanks F101 and F102 as they have a vapor and a liquid outlet. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.s05 = Arc(source=m.fs.R101.outlet, destination=m.fs.F101.inlet)\n", + "m.fs.s06 = Arc(source=m.fs.F101.vap_outlet, destination=m.fs.S101.inlet)\n", + "m.fs.s08 = Arc(source=m.fs.S101.recycle, destination=m.fs.C101.inlet)\n", + "m.fs.s09 = Arc(source=m.fs.C101.outlet, destination=m.fs.M101.vapor_recycle)\n", + "m.fs.s10 = Arc(source=m.fs.F101.liq_outlet, destination=m.fs.F102.inlet)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have now connected the unit model block using the arcs. However, each of these arcs link to ports on the two unit models that are connected. In this case, the ports consist of the state variables that need to be linked between the unit models. Pyomo provides a convenient method to write these equality constraints for us between two ports and this is done as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "TransformationFactory(\"network.expand_arcs\").apply_to(m)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adding expressions to compute purity and operating costs\n", + "\n", + "In this section, we will add a few Expressions that allows us to evaluate the performance. Expressions provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on Expressions, please refer to: https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html\n", + "\n", + "For this flowsheet, we are interested in computing the purity of the product Benzene stream (i.e. the mole fraction) and the operating cost which is a sum of the cooling and heating cost. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us first add an Expression to compute the mole fraction of benzene in the `vap_outlet` of F102 which is our product stream. Please note that the var flow_mol_phase_comp has the index - [time, phase, component]. As this is a steady-state flowsheet, the time index by default is 0. The valid phases are [\"Liq\", \"Vap\"]. Similarly the valid component list is [\"benzene\", \"toluene\", \"hydrogen\", \"methane\"]." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.purity = Expression(\n", + " expr=m.fs.F102.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]\n", + " / (\n", + " m.fs.F102.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]\n", + " + m.fs.F102.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"toluene\"]\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, let us add an expression to compute the cooling cost assuming a cost of 0.212E-4 $/kW. Note that cooling utility is required for the reactor (R101) and the first flash (F101). " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.cooling_cost = Expression(\n", + " expr=0.212e-7 * (-m.fs.F101.heat_duty[0]) + 0.212e-7 * (-m.fs.R101.heat_duty[0])\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Now, let us add an expression to compute the heating cost assuming the utility cost as follows:\n", + "
    \n", + "
  • 2.2E-4 dollars/kW for H101
  • \n", + "
  • 1.9E-4 dollars/kW for F102
  • \n", + "
\n", + "Note that the heat duty is in units of watt (J/s). " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.heating_cost = Expression(\n", + " expr=2.2e-7 * m.fs.H101.heat_duty[0] + 1.9e-7 * m.fs.F102.heat_duty[0]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us now add an expression to compute the total operating cost per year which is basically the sum of the cooling and heating cost we defined above. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.operating_cost = Expression(\n", + " expr=(3600 * 24 * 365 * (m.fs.heating_cost + m.fs.cooling_cost))\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fixing feed conditions\n", + "\n", + "Let us first check how many degrees of freedom exist for this flowsheet using the `degrees_of_freedom` tool we imported earlier. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(degrees_of_freedom(m))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will now be fixing the toluene feed stream to the conditions shown in the flowsheet above. Please note that though this is a pure toluene feed, the remaining components are still assigned a very small non-zero value to help with convergence and initializing. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"benzene\"].fix(1e-5)\n", + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"toluene\"].fix(1e-5)\n", + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"hydrogen\"].fix(1e-5)\n", + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Vap\", \"methane\"].fix(1e-5)\n", + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"benzene\"].fix(1e-5)\n", + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"toluene\"].fix(0.30)\n", + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"hydrogen\"].fix(1e-5)\n", + "m.fs.M101.toluene_feed.flow_mol_phase_comp[0, \"Liq\", \"methane\"].fix(1e-5)\n", + "m.fs.M101.toluene_feed.temperature.fix(303.2)\n", + "m.fs.M101.toluene_feed.pressure.fix(350000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Similarly, let us fix the hydrogen feed to the following conditions in the next cell:\n", + "
    \n", + "
  • FH2 = 0.30 mol/s
  • \n", + "
  • FCH4 = 0.02 mol/s
  • \n", + "
  • Remaining components = 1e-5 mol/s
  • \n", + "
  • T = 303.2 K
  • \n", + "
  • P = 350000 Pa
  • \n", + "
\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"benzene\"].fix(1e-5)\n", + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"toluene\"].fix(1e-5)\n", + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"hydrogen\"].fix(0.30)\n", + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Vap\", \"methane\"].fix(0.02)\n", + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"benzene\"].fix(1e-5)\n", + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"toluene\"].fix(1e-5)\n", + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"hydrogen\"].fix(1e-5)\n", + "m.fs.M101.hydrogen_feed.flow_mol_phase_comp[0, \"Liq\", \"methane\"].fix(1e-5)\n", + "m.fs.M101.hydrogen_feed.temperature.fix(303.2)\n", + "m.fs.M101.hydrogen_feed.pressure.fix(350000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fixing unit model specifications\n", + "\n", + "Now that we have fixed our inlet feed conditions, we will now be fixing the operating conditions for the unit models in the flowsheet. Let us set set the H101 outlet temperature to 600 K. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.H101.outlet.temperature.fix(600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the StoichiometricReactor, we have to define the conversion in terms of toluene. This requires us to create a new variable for specifying the conversion and adding a Constraint that defines the conversion with respect to toluene. The second degree of freedom for the reactor is to define the heat duty. In this case, let us assume the reactor to be adiabatic i.e. Q = 0. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.R101.conversion = Var(initialize=0.75, bounds=(0, 1))\n", + "\n", + "m.fs.R101.conv_constraint = Constraint(\n", + " expr=m.fs.R101.conversion * m.fs.R101.inlet.flow_mol_phase_comp[0, \"Vap\", \"toluene\"]\n", + " == (\n", + " m.fs.R101.inlet.flow_mol_phase_comp[0, \"Vap\", \"toluene\"]\n", + " - m.fs.R101.outlet.flow_mol_phase_comp[0, \"Vap\", \"toluene\"]\n", + " )\n", + ")\n", + "\n", + "m.fs.R101.conversion.fix(0.75)\n", + "m.fs.R101.heat_duty.fix(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Flash conditions for F101 can be set as follows. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.F101.vap_outlet.temperature.fix(325.0)\n", + "m.fs.F101.deltaP.fix(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "Set the conditions for Flash F102 to the following conditions:\n", + "
    \n", + "
  • T = 375 K
  • \n", + "
  • deltaP = -200000
  • \n", + "
\n", + "\n", + "Use Shift+Enter to run the cell once you have typed in your code. \n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "m.fs.F102.vap_outlet.temperature.fix(375)\n", + "m.fs.F102.deltaP.fix(-200000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us fix the purge split fraction to 20% and the outlet pressure of the compressor is set to 350000 Pa. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.S101.split_fraction[0, \"purge\"].fix(0.2)\n", + "m.fs.C101.outlet.pressure.fix(350000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "We have now defined all the feed conditions and the inputs required for the unit models. The system should now have 0 degrees of freedom i.e. should be a square problem. Please check that the degrees of freedom is 0. \n", + "\n", + "Use Shift+Enter to run the cell once you have typed in your code. \n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "print(degrees_of_freedom(m))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialization\n", + "\n", + "\n", + "This section will demonstrate how to use the built-in sequential decomposition tool to initialize our flowsheet.\n", + "\n", + "![](HDA_flowsheet.png) \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us first create an object for the SequentialDecomposition and specify our options for this. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "seq = SequentialDecomposition()\n", + "seq.options.select_tear_method = \"heuristic\"\n", + "seq.options.tear_method = \"Wegstein\"\n", + "seq.options.iterLim = 3\n", + "\n", + "# Using the SD tool\n", + "G = seq.create_graph(m)\n", + "heuristic_tear_set = seq.tear_set_arcs(G, method=\"heuristic\")\n", + "order = seq.calculation_order(G)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Which is the tear stream? Display tear set and order" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for o in heuristic_tear_set:\n", + " print(o.name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What sequence did the SD tool determine to solve this flowsheet with the least number of tears? " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "for o in order:\n", + " print(o[0].name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " \n", + "\n", + "![](HDA_tear_stream.png) \n", + "\n", + "\n", + "The SequentialDecomposition tool has determined that the tear stream is the mixer outlet. We will need to provide a reasonable guess for this." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tear_guesses = {\n", + " \"flow_mol_phase_comp\": {\n", + " (0, \"Vap\", \"benzene\"): 1e-5,\n", + " (0, \"Vap\", \"toluene\"): 1e-5,\n", + " (0, \"Vap\", \"hydrogen\"): 0.30,\n", + " (0, \"Vap\", \"methane\"): 0.02,\n", + " (0, \"Liq\", \"benzene\"): 1e-5,\n", + " (0, \"Liq\", \"toluene\"): 0.30,\n", + " (0, \"Liq\", \"hydrogen\"): 1e-5,\n", + " (0, \"Liq\", \"methane\"): 1e-5,\n", + " },\n", + " \"temperature\": {0: 303},\n", + " \"pressure\": {0: 350000},\n", + "}\n", + "\n", + "# Pass the tear_guess to the SD tool\n", + "seq.set_guesses_for(m.fs.H101.inlet, tear_guesses)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we need to tell the tool how to initialize a particular unit. We will be writing a python function which takes in a \"unit\" and calls the initialize method on that unit. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def function(unit):\n", + " try:\n", + " initializer = unit.default_initializer()\n", + " initializer.initialize(unit, output_level=idaeslog.INFO)\n", + " except InitializationError:\n", + " solver=get_solver()\n", + " solver.solve(unit)\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are now ready to initialize our flowsheet in a sequential mode. Note that we specifically set the iteration limit to be 5 as we are trying to use this tool only to get a good set of initial values such that IPOPT can then take over and solve this flowsheet for us. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "seq.run(m, function)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "We have now initialized the flowsheet. Let us run the flowsheet in a simulation mode to look at the results. To do this, complete the last line of code where we pass the model to the solver. You will need to type the following:\n", + " \n", + "results = solver.solve(m, tee=True)\n", + "\n", + "Use Shift+Enter to run the cell once you have typed in your code. \n", + "
\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Create the solver object\n", + "from idaes.core.solvers import get_solver\n", + "\n", + "solver = get_solver()\n", + "\n", + "# Solve the model\n", + "results = solver.solve(m, tee=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analyze the results of the square problem\n", + "\n", + "\n", + "What is the total operating cost? " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"operating cost = $\", value(m.fs.operating_cost))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this operating cost, what is the amount of benzene we are able to produce and what purity we are able to achieve? " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.F102.report()\n", + "\n", + "print()\n", + "print(\"benzene purity = \", value(m.fs.purity))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, let's look at how much benzene we are losing with the light gases out of F101. IDAES has tools for creating stream tables based on the `Arcs` and/or `Ports` in a flowsheet. Let us create and print a simple stream table showing the stream leaving the reactor and the vapor stream from F101.\n", + "\n", + "
\n", + "Inline Exercise:\n", + "How much benzene are we losing in the F101 vapor outlet stream?\n", + "
\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from idaes.core.util.tables import (\n", + " create_stream_table_dataframe,\n", + " stream_table_dataframe_to_string,\n", + ")\n", + "\n", + "st = create_stream_table_dataframe({\"Reactor\": m.fs.s05, \"Light Gases\": m.fs.s06})\n", + "print(stream_table_dataframe_to_string(st))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "You can query additional variables here if you like. \n", + "\n", + "Use Shift+Enter to run the cell once you have typed in your code. \n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optimization\n", + "\n", + "\n", + "We saw from the results above that the total operating cost for the base case was $419,122 per year. We are producing 0.142 mol/s of benzene at a purity of 82\\%. However, we are losing around 42\\% of benzene in F101 vapor outlet stream. \n", + "\n", + "Let us try to minimize this cost such that:\n", + "- we are producing at least 0.15 mol/s of benzene in F102 vapor outlet i.e. our product stream\n", + "- purity of benzene i.e. the mole fraction of benzene in F102 vapor outlet is at least 80%\n", + "- restricting the benzene loss in F101 vapor outlet to less than 20%\n", + "\n", + "For this problem, our decision variables are as follows:\n", + "- H101 outlet temperature\n", + "- R101 cooling duty provided\n", + "- F101 outlet temperature\n", + "- F102 outlet temperature\n", + "- F102 deltaP in the flash tank\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us declare our objective function for this problem. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.objective = Objective(expr=m.fs.operating_cost)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we need to unfix the decision variables as we had solved a square problem (degrees of freedom = 0) until now. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.H101.outlet.temperature.unfix()\n", + "m.fs.R101.heat_duty.unfix()\n", + "m.fs.F101.vap_outlet.temperature.unfix()\n", + "m.fs.F102.vap_outlet.temperature.unfix()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "Let us now unfix the remaining variable which is F102 pressure drop (F102.deltaP) \n", + "\n", + "Use Shift+Enter to run the cell once you have typed in your code. \n", + "
\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Todo: Unfix deltaP for F102\n", + "m.fs.F102.deltaP.unfix()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we need to set bounds on these decision variables to values shown below:\n", + "\n", + " - H101 outlet temperature [500, 600] K\n", + " - R101 outlet temperature [600, 800] K\n", + " - F101 outlet temperature [298, 450] K\n", + " - F102 outlet temperature [298, 450] K\n", + " - F102 outlet pressure [105000, 110000] Pa\n", + "\n", + "Let us first set the variable bound for the H101 outlet temperature as shown below:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.H101.outlet.temperature[0].setlb(500)\n", + "m.fs.H101.outlet.temperature[0].setub(600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "Now, set the variable bound for the R101 outlet temperature.\n", + "\n", + "Use Shift+Enter to run the cell once you have typed in your code. \n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Todo: Set the bounds for reactor outlet temperature\n", + "m.fs.R101.outlet.temperature[0].setlb(600)\n", + "m.fs.R101.outlet.temperature[0].setub(800)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us fix the bounds for the rest of the decision variables. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.F101.vap_outlet.temperature[0].setlb(298.0)\n", + "m.fs.F101.vap_outlet.temperature[0].setub(450.0)\n", + "m.fs.F102.vap_outlet.temperature[0].setlb(298.0)\n", + "m.fs.F102.vap_outlet.temperature[0].setub(450.0)\n", + "m.fs.F102.vap_outlet.pressure[0].setlb(105000)\n", + "m.fs.F102.vap_outlet.pressure[0].setub(110000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, the only things left to define are our constraints on overhead loss in F101, product flow rate and purity in F102. Let us first look at defining a constraint for the overhead loss in F101 where we are restricting the benzene leaving the vapor stream to less than 20 \\% of the benzene available in the reactor outlet. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.overhead_loss = Constraint(\n", + " expr=m.fs.F101.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]\n", + " <= 0.20 * m.fs.R101.outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Inline Exercise:\n", + "Now, add the constraint such that we are producing at least 0.15 mol/s of benzene in the product stream which is the vapor outlet of F102. Let us name this constraint as m.fs.product_flow. \n", + "\n", + "Use Shift+Enter to run the cell once you have typed in your code. \n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "solution" + ] + }, + "outputs": [], + "source": [ + "# Todo: Add minimum product flow constraint\n", + "m.fs.product_flow = Constraint(\n", + " expr=m.fs.F102.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"] >= 0.15\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us add the final constraint on product purity or the mole fraction of benzene in the product stream such that it is at least greater than 80%. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "m.fs.product_purity = Constraint(expr=m.fs.purity >= 0.80)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "We have now defined the optimization problem and we are now ready to solve this problem. \n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "results = solver.solve(m, tee=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optimization Results\n", + "\n", + "Display the results and product specifications" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"operating cost = $\", value(m.fs.operating_cost))\n", + "\n", + "print()\n", + "print(\"Product flow rate and purity in F102\")\n", + "\n", + "m.fs.F102.report()\n", + "\n", + "print()\n", + "print(\"benzene purity = \", value(m.fs.purity))\n", + "\n", + "print()\n", + "print(\"Overhead loss in F101\")\n", + "m.fs.F101.report()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Display optimal values for the decision variables" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"Optimal Values\")\n", + "print()\n", + "\n", + "print(\"H101 outlet temperature = \", value(m.fs.H101.outlet.temperature[0]), \"K\")\n", + "\n", + "print()\n", + "print(\"R101 outlet temperature = \", value(m.fs.R101.outlet.temperature[0]), \"K\")\n", + "\n", + "print()\n", + "print(\"F101 outlet temperature = \", value(m.fs.F101.vap_outlet.temperature[0]), \"K\")\n", + "\n", + "print()\n", + "print(\"F102 outlet temperature = \", value(m.fs.F102.vap_outlet.temperature[0]), \"K\")\n", + "print(\"F102 outlet pressure = \", value(m.fs.F102.vap_outlet.pressure[0]), \"Pa\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } - ], - "source": [ - "m.fs.F102.report()\n", - "\n", - "print()\n", - "print(\"benzene purity = \", value(m.fs.purity))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, let's look at how much benzene we are losing with the light gases out of F101. IDAES has tools for creating stream tables based on the `Arcs` and/or `Ports` in a flowsheet. Let us create and print a simple stream table showing the stream leaving the reactor and the vapor stream from F101.\n", - "\n", - "
\n", - "Inline Exercise:\n", - "How much benzene are we losing in the F101 vapor outlet stream?\n", - "
\n" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Units Reactor Light Gases\n", - "flow_mol_phase_comp ('Liq', 'benzene') mole / second 1.2993e-07 1.0000e-08 \n", - "flow_mol_phase_comp ('Liq', 'toluene') mole / second 8.4147e-07 1.0000e-08 \n", - "flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 \n", - "flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 \n", - "flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.35374 0.14915 \n", - "flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.078129 0.015610 \n", - "flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2721 1.2721 \n", - "flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.32821 0.32821 \n", - "temperature kelvin 771.85 325.00 \n", - "pressure pascal 3.5000e+05 3.5000e+05 \n" - ] - } - ], - "source": [ - "from idaes.core.util.tables import (\n", - " create_stream_table_dataframe,\n", - " stream_table_dataframe_to_string,\n", - ")\n", - "\n", - "st = create_stream_table_dataframe({\"Reactor\": m.fs.s05, \"Light Gases\": m.fs.s06})\n", - "print(stream_table_dataframe_to_string(st))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "You can query additional variables here if you like. \n", - "\n", - "Use Shift+Enter to run the cell once you have typed in your code. \n", - "
\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Optimization\n", - "\n", - "\n", - "We saw from the results above that the total operating cost for the base case was $419,122 per year. We are producing 0.142 mol/s of benzene at a purity of 82\\%. However, we are losing around 42\\% of benzene in F101 vapor outlet stream. \n", - "\n", - "Let us try to minimize this cost such that:\n", - "- we are producing at least 0.15 mol/s of benzene in F102 vapor outlet i.e. our product stream\n", - "- purity of benzene i.e. the mole fraction of benzene in F102 vapor outlet is at least 80%\n", - "- restricting the benzene loss in F101 vapor outlet to less than 20%\n", - "\n", - "For this problem, our decision variables are as follows:\n", - "- H101 outlet temperature\n", - "- R101 cooling duty provided\n", - "- F101 outlet temperature\n", - "- F102 outlet temperature\n", - "- F102 deltaP in the flash tank\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us declare our objective function for this problem. " - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.objective = Objective(expr=m.fs.operating_cost)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we need to unfix the decision variables as we had solved a square problem (degrees of freedom = 0) until now. " - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.H101.outlet.temperature.unfix()\n", - "m.fs.R101.heat_duty.unfix()\n", - "m.fs.F101.vap_outlet.temperature.unfix()\n", - "m.fs.F102.vap_outlet.temperature.unfix()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "Let us now unfix the remaining variable which is F102 pressure drop (F102.deltaP) \n", - "\n", - "Use Shift+Enter to run the cell once you have typed in your code. \n", - "
\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "# Todo: Unfix deltaP for F102\n", - "m.fs.F102.deltaP.unfix()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we need to set bounds on these decision variables to values shown below:\n", - "\n", - " - H101 outlet temperature [500, 600] K\n", - " - R101 outlet temperature [600, 800] K\n", - " - F101 outlet temperature [298, 450] K\n", - " - F102 outlet temperature [298, 450] K\n", - " - F102 outlet pressure [105000, 110000] Pa\n", - "\n", - "Let us first set the variable bound for the H101 outlet temperature as shown below:" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.H101.outlet.temperature[0].setlb(500)\n", - "m.fs.H101.outlet.temperature[0].setub(600)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "Now, set the variable bound for the R101 outlet temperature.\n", - "\n", - "Use Shift+Enter to run the cell once you have typed in your code. \n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "# Todo: Set the bounds for reactor outlet temperature\n", - "m.fs.R101.outlet.temperature[0].setlb(600)\n", - "m.fs.R101.outlet.temperature[0].setub(800)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us fix the bounds for the rest of the decision variables. " - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.F101.vap_outlet.temperature[0].setlb(298.0)\n", - "m.fs.F101.vap_outlet.temperature[0].setub(450.0)\n", - "m.fs.F102.vap_outlet.temperature[0].setlb(298.0)\n", - "m.fs.F102.vap_outlet.temperature[0].setub(450.0)\n", - "m.fs.F102.vap_outlet.pressure[0].setlb(105000)\n", - "m.fs.F102.vap_outlet.pressure[0].setub(110000)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, the only things left to define are our constraints on overhead loss in F101, product flow rate and purity in F102. Let us first look at defining a constraint for the overhead loss in F101 where we are restricting the benzene leaving the vapor stream to less than 20 \\% of the benzene available in the reactor outlet. " - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.overhead_loss = Constraint(\n", - " expr=m.fs.F101.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]\n", - " <= 0.20 * m.fs.R101.outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "Inline Exercise:\n", - "Now, add the constraint such that we are producing at least 0.15 mol/s of benzene in the product stream which is the vapor outlet of F102. Let us name this constraint as m.fs.product_flow. \n", - "\n", - "Use Shift+Enter to run the cell once you have typed in your code. \n", - "
" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": { - "tags": [ - "solution" - ] - }, - "outputs": [], - "source": [ - "# Todo: Add minimum product flow constraint\n", - "m.fs.product_flow = Constraint(\n", - " expr=m.fs.F102.vap_outlet.flow_mol_phase_comp[0, \"Vap\", \"benzene\"] >= 0.15\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us add the final constraint on product purity or the mole fraction of benzene in the product stream such that it is at least greater than 80%. " - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [], - "source": [ - "m.fs.product_purity = Constraint(expr=m.fs.purity >= 0.80)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "We have now defined the optimization problem and we are now ready to solve this problem. \n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ipopt 3.13.2: nlp_scaling_method=gradient-based\n", - "tol=1e-06\n", - "max_iter=200\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\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 ma27.\n", - "\n", - "Number of nonzeros in equality constraint Jacobian...: 1057\n", - "Number of nonzeros in inequality constraint Jacobian.: 5\n", - "Number of nonzeros in Lagrangian Hessian.............: 937\n", - "\n", - "Total number of variables............................: 345\n", - " variables with only lower bounds: 0\n", - " variables with lower and upper bounds: 149\n", - " variables with only upper bounds: 0\n", - "Total number of equality constraints.................: 340\n", - "Total number of inequality constraints...............: 3\n", - " inequality constraints with only lower bounds: 2\n", - " inequality constraints with lower and upper bounds: 0\n", - " inequality constraints with only upper bounds: 1\n", - "\n", - "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", - " 0 4.1912234e+05 2.99e+05 6.94e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", - " 1 4.1628385e+05 2.99e+05 6.94e+00 -1.0 4.82e+09 - 1.80e-05 5.83e-06f 1\n", - " 2 4.1616723e+05 2.99e+05 1.59e+02 -1.0 1.46e+09 - 5.83e-04 1.47e-05f 1\n", - " 3 4.0789953e+05 2.94e+05 4.83e+02 -1.0 1.36e+09 - 2.64e-04 9.30e-04f 1\n", - " 4 2.9668590e+05 2.83e+06 6.97e+02 -1.0 4.80e+08 - 7.26e-05 1.50e-03f 1\n", - " 5 2.9555461e+05 2.83e+06 4.95e+04 -1.0 1.90e+08 - 1.88e-01 1.04e-03f 1\n", - " 6 2.9451022e+05 2.73e+06 4.60e+05 -1.0 4.43e+07 - 1.87e-01 3.43e-02f 1\n", - " 7 2.9628497e+05 2.13e+06 4.43e+05 -1.0 1.48e+07 - 7.40e-02 2.18e-01h 1\n", - " 8 2.9632658e+05 2.13e+06 4.41e+05 -1.0 5.91e+06 - 6.37e-01 3.36e-03h 1\n", - " 9 2.9642679e+05 2.11e+06 4.39e+05 -1.0 6.54e+06 - 7.26e-01 7.12e-03h 1\n", - "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", - " 10 2.9954735e+05 1.64e+06 4.13e+05 -1.0 6.57e+06 - 3.57e-02 2.24e-01h 1\n", - " 11 3.0435085e+05 9.50e+05 6.95e+05 -1.0 5.56e+06 - 9.46e-01 4.20e-01h 1\n", - " 12 3.0895827e+05 3.69e+05 1.22e+07 -1.0 4.03e+06 - 9.90e-01 6.11e-01h 1\n", - " 13 3.1246277e+05 1.42e+06 1.80e+10 -1.0 2.25e+06 - 9.95e-01 9.65e-01h 1\n", - " 14 3.1266092e+05 5.66e+05 7.10e+10 -1.0 2.77e+05 - 4.14e-01 6.11e-01h 1\n", - " 15 3.1266072e+05 5.65e+05 7.08e+10 -1.0 1.18e+06 - 1.09e-02 2.60e-04h 1\n", - " 16 3.1266230e+05 5.58e+05 7.01e+10 -1.0 1.08e+05 - 1.00e+00 1.26e-02h 1\n", - " 17 3.1271669e+05 3.14e+05 7.23e+10 -1.0 1.07e+05 - 4.05e-01 4.39e-01h 1\n", - " 18 3.1278583e+05 3.89e+03 1.58e+10 -1.0 6.01e+04 - 7.76e-03 9.91e-01h 1\n", - " 19 3.1278664e+05 1.57e+03 6.81e+10 -1.0 5.59e+02 - 9.87e-01 1.00e+00h 1\n", - "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", - " 20 3.1278678e+05 2.39e+01 1.24e+09 -1.0 1.96e+02 - 1.00e+00 1.00e+00f 1\n", - " 21 3.1278674e+05 1.19e+01 6.32e+08 -1.0 1.30e+02 - 1.00e+00 5.00e-01f 2\n", - " 22 3.1278674e+05 1.21e-02 9.81e+04 -1.0 2.70e+00 - 1.00e+00 1.00e+00f 1\n", - " 23 3.1278642e+05 2.23e-05 2.00e+05 -1.7 1.62e+02 - 1.00e+00 1.00e+00f 1\n", - " 24 3.1278642e+05 1.49e-08 2.16e-03 -1.7 6.37e-01 - 1.00e+00 1.00e+00h 1\n", - " 25 3.1278634e+05 1.38e-06 1.26e+04 -7.0 4.04e+01 - 1.00e+00 1.00e+00f 1\n", - " 26 3.1278634e+05 1.49e-08 7.76e-05 -7.0 6.55e-03 - 1.00e+00 1.00e+00h 1\n", - "\n", - "Number of Iterations....: 26\n", - "\n", - " (scaled) (unscaled)\n", - "Objective...............: 3.1278633834102686e+05 3.1278633834102686e+05\n", - "Dual infeasibility......: 7.7559902882953563e-05 7.7559902882953563e-05\n", - "Constraint violation....: 5.8207660913467407e-11 1.4901161193847656e-08\n", - "Complementarity.........: 9.0926527280252943e-08 9.0926527280252943e-08\n", - "Overall NLP error.......: 6.6903080882730816e-09 7.7559902882953563e-05\n", - "\n", - "\n", - "Number of objective function evaluations = 28\n", - "Number of objective gradient evaluations = 27\n", - "Number of equality constraint evaluations = 28\n", - "Number of inequality constraint evaluations = 28\n", - "Number of equality constraint Jacobian evaluations = 27\n", - "Number of inequality constraint Jacobian evaluations = 27\n", - "Number of Lagrangian Hessian evaluations = 26\n", - "Total CPU secs in IPOPT (w/o function evaluations) = 0.016\n", - "Total CPU secs in NLP function evaluations = 0.000\n", - "\n", - "EXIT: Optimal Solution Found.\n" - ] - } - ], - "source": [ - "results = solver.solve(m, tee=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Optimization Results\n", - "\n", - "Display the results and product specifications" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "operating cost = $ 312786.3383410268\n", - "\n", - "Product flow rate and purity in F102\n", - "\n", - "====================================================================================\n", - "Unit : fs.F102 Time: 0.0\n", - "------------------------------------------------------------------------------------\n", - " Unit Performance\n", - "\n", - " Variables: \n", - "\n", - " Key : Value : Units : Fixed : Bounds\n", - " Heat Duty : 8377.0 : watt : False : (None, None)\n", - " Pressure Change : -2.4500e+05 : pascal : False : (None, None)\n", - "\n", - "------------------------------------------------------------------------------------\n", - " Stream Table\n", - " Units Inlet Vapor Outlet Liquid Outlet\n", - " flow_mol_phase_comp ('Liq', 'benzene') mole / second 0.21743 1.0000e-08 0.067425 \n", - " flow_mol_phase_comp ('Liq', 'toluene') mole / second 0.070695 1.0000e-08 0.037507 \n", - " flow_mol_phase_comp ('Liq', 'methane') mole / second 2.8812e-07 1.0000e-08 1.0493e-07 \n", - " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 2.8812e-07 1.0000e-08 1.0493e-07 \n", - " flow_mol_phase_comp ('Vap', 'benzene') mole / second 1.0000e-08 0.15000 1.0000e-08 \n", - " flow_mol_phase_comp ('Vap', 'toluene') mole / second 1.0000e-08 0.033189 1.0000e-08 \n", - " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.0000e-08 1.9319e-07 1.0000e-08 \n", - " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 1.0000e-08 1.9319e-07 1.0000e-08 \n", - " temperature kelvin 301.88 362.93 362.93 \n", - " pressure pascal 3.5000e+05 1.0500e+05 1.0500e+05 \n", - "====================================================================================\n", - "\n", - "benzene purity = 0.8188276578112285\n", - "\n", - "Overhead loss in F101\n", - "\n", - "====================================================================================\n", - "Unit : fs.F101 Time: 0.0\n", - "------------------------------------------------------------------------------------\n", - " Unit Performance\n", - "\n", - " Variables: \n", - "\n", - " Key : Value : Units : Fixed : Bounds\n", - " Heat Duty : -56353. : watt : False : (None, None)\n", - " Pressure Change : 0.0000 : pascal : True : (None, None)\n", - "\n", - "------------------------------------------------------------------------------------\n", - " Stream Table\n", - " Units Inlet Vapor Outlet Liquid Outlet\n", - " flow_mol_phase_comp ('Liq', 'benzene') mole / second 4.3534e-08 1.0000e-08 0.21743 \n", - " flow_mol_phase_comp ('Liq', 'toluene') mole / second 7.5866e-07 1.0000e-08 0.070695 \n", - " flow_mol_phase_comp ('Liq', 'methane') mole / second 1.0000e-12 1.0000e-08 2.8812e-07 \n", - " flow_mol_phase_comp ('Liq', 'hydrogen') mole / second 1.0000e-12 1.0000e-08 2.8812e-07 \n", - " flow_mol_phase_comp ('Vap', 'benzene') mole / second 0.27178 0.054356 1.0000e-08 \n", - " flow_mol_phase_comp ('Vap', 'toluene') mole / second 0.076085 0.0053908 1.0000e-08 \n", - " flow_mol_phase_comp ('Vap', 'methane') mole / second 1.2414 1.2414 1.0000e-08 \n", - " flow_mol_phase_comp ('Vap', 'hydrogen') mole / second 0.35887 0.35887 1.0000e-08 \n", - " temperature kelvin 696.11 301.88 301.88 \n", - " pressure pascal 3.5000e+05 3.5000e+05 3.5000e+05 \n", - "====================================================================================\n" - ] + ], + "metadata": { + "celltoolbar": "Tags", + "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.8.12" } - ], - "source": [ - "print(\"operating cost = $\", value(m.fs.operating_cost))\n", - "\n", - "print()\n", - "print(\"Product flow rate and purity in F102\")\n", - "\n", - "m.fs.F102.report()\n", - "\n", - "print()\n", - "print(\"benzene purity = \", value(m.fs.purity))\n", - "\n", - "print()\n", - "print(\"Overhead loss in F101\")\n", - "m.fs.F101.report()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Display optimal values for the decision variables" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Optimal Values\n", - "\n", - "H101 outlet temperature = 500.0 K\n", - "\n", - "R101 outlet temperature = 696.1117584980856 K\n", - "\n", - "F101 outlet temperature = 301.8784760569282 K\n", - "\n", - "F102 outlet temperature = 362.93476830548985 K\n", - "F102 outlet pressure = 105000.0 Pa\n" - ] - } - ], - "source": [ - "print(\"Optimal Values\")\n", - "print()\n", - "\n", - "print(\"H101 outlet temperature = \", value(m.fs.H101.outlet.temperature[0]), \"K\")\n", - "\n", - "print()\n", - "print(\"R101 outlet temperature = \", value(m.fs.R101.outlet.temperature[0]), \"K\")\n", - "\n", - "print()\n", - "print(\"F101 outlet temperature = \", value(m.fs.F101.vap_outlet.temperature[0]), \"K\")\n", - "\n", - "print()\n", - "print(\"F102 outlet temperature = \", value(m.fs.F102.vap_outlet.temperature[0]), \"K\")\n", - "print(\"F102 outlet pressure = \", value(m.fs.F102.vap_outlet.pressure[0]), \"Pa\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "celltoolbar": "Tags", - "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.11.5" - } - }, - "nbformat": 4, - "nbformat_minor": 3 -} + "nbformat": 4, + "nbformat_minor": 3 +} \ No newline at end of file diff --git a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_exercise.ipynb b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_exercise.ipynb index cd42cc58..e563cfdb 100644 --- a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_exercise.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_exercise.ipynb @@ -56,7 +56,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 → C6H6 + CH4**\n", + "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -194,7 +194,9 @@ "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", "# Import idaes logger to set output levels\n", - "import idaes.logger as idaeslog" + "import idaes.logger as idaeslog\n", + "from idaes.core.solvers import get_solver\n", + "from idaes.core.util.exceptions import InitializationError" ] }, { @@ -885,7 +887,13 @@ "outputs": [], "source": [ "def function(unit):\n", - " unit.initialize(outlvl=idaeslog.INFO)" + " try:\n", + " initializer = unit.default_initializer()\n", + " initializer.initialize(unit, output_level=idaeslog.INFO)\n", + " except InitializationError:\n", + " solver=get_solver()\n", + " solver.solve(unit)\n", + " " ] }, { @@ -1334,4 +1342,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} +} \ No newline at end of file diff --git a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_solution.ipynb b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_solution.ipynb index 923daf60..52573e32 100644 --- a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_solution.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_solution.ipynb @@ -56,7 +56,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 → C6H6 + CH4**\n", + "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -208,7 +208,9 @@ "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", "# Import idaes logger to set output levels\n", - "import idaes.logger as idaeslog" + "import idaes.logger as idaeslog\n", + "from idaes.core.solvers import get_solver\n", + "from idaes.core.util.exceptions import InitializationError" ] }, { @@ -960,7 +962,13 @@ "outputs": [], "source": [ "def function(unit):\n", - " unit.initialize(outlvl=idaeslog.INFO)" + " try:\n", + " initializer = unit.default_initializer()\n", + " initializer.initialize(unit, output_level=idaeslog.INFO)\n", + " except InitializationError:\n", + " solver=get_solver()\n", + " solver.solve(unit)\n", + " " ] }, { @@ -1473,4 +1481,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} +} \ No newline at end of file diff --git a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_test.ipynb b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_test.ipynb index 7098c670..6110381d 100644 --- a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_test.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_test.ipynb @@ -56,7 +56,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 → C6H6 + CH4**\n", + "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -195,7 +195,9 @@ "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", "# Import idaes logger to set output levels\n", - "import idaes.logger as idaeslog" + "import idaes.logger as idaeslog\n", + "from idaes.core.solvers import get_solver\n", + "from idaes.core.util.exceptions import InitializationError" ] }, { @@ -923,7 +925,13 @@ "outputs": [], "source": [ "def function(unit):\n", - " unit.initialize(outlvl=idaeslog.INFO)" + " try:\n", + " initializer = unit.default_initializer()\n", + " initializer.initialize(unit, output_level=idaeslog.INFO)\n", + " except InitializationError:\n", + " solver=get_solver()\n", + " solver.solve(unit)\n", + " " ] }, { @@ -1488,4 +1496,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} +} \ No newline at end of file diff --git a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_usr.ipynb b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_usr.ipynb index 923daf60..52573e32 100644 --- a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_usr.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_usr.ipynb @@ -56,7 +56,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 → C6H6 + CH4**\n", + "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -208,7 +208,9 @@ "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", "# Import idaes logger to set output levels\n", - "import idaes.logger as idaeslog" + "import idaes.logger as idaeslog\n", + "from idaes.core.solvers import get_solver\n", + "from idaes.core.util.exceptions import InitializationError" ] }, { @@ -960,7 +962,13 @@ "outputs": [], "source": [ "def function(unit):\n", - " unit.initialize(outlvl=idaeslog.INFO)" + " try:\n", + " initializer = unit.default_initializer()\n", + " initializer.initialize(unit, output_level=idaeslog.INFO)\n", + " except InitializationError:\n", + " solver=get_solver()\n", + " solver.solve(unit)\n", + " " ] }, { @@ -1473,4 +1481,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} +} \ No newline at end of file