def btx_ftpz(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={ "valid_phase": ('Liq', 'Vap'), "activity_coeff_model": "Ideal" }) m.fs.unit = Condenser( default={ "property_package": m.fs.properties, "condenser_type": CondenserType.partialCondenser, "temperature_spec": TemperatureSpec.customTemperature }) # Fix the partial condenser variables (FTPz) m.fs.unit.reflux_ratio.fix(1) m.fs.unit.condenser_pressure.fix(101325) m.fs.unit.distillate.temperature.fix(369) # Fix the inputs (typically this will be the vapor from the top tray) m.fs.unit.inlet.flow_mol.fix(1) m.fs.unit.inlet.temperature.fix(375) m.fs.unit.inlet.pressure.fix(101325) m.fs.unit.inlet.mole_frac_comp[0, "benzene"].fix(0.5) m.fs.unit.inlet.mole_frac_comp[0, "toluene"].fix(0.5) return m
def NRTL_model(data): """This function generates an instance of the NRTL Pyomo model using 'data' as the input argument Parameters ---------- data: pandas DataFrame, list of dictionaries, or list of json file names Data that is used to build an instance of the Pyomo model Returns ------- m: an instance of the Pyomo model for estimating parameters and covariance """ m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={ "valid_phase": ('Liq', 'Vap'), "activity_coeff_model": 'NRTL' }) m.fs.flash = Flash(default={"property_package": m.fs.properties}) # Initialize at a certain inlet condition m.fs.flash.inlet.flow_mol.fix(1) m.fs.flash.inlet.temperature.fix(368) m.fs.flash.inlet.pressure.fix(101325) m.fs.flash.inlet.mole_frac_comp[0, "benzene"].fix(0.5) m.fs.flash.inlet.mole_frac_comp[0, "toluene"].fix(0.5) # Set Flash unit specifications m.fs.flash.heat_duty.fix(0) m.fs.flash.deltaP.fix(0) # Fix NRTL specific variables # alpha values (set at 0.3) m.fs.properties.alpha["benzene", "benzene"].fix(0) m.fs.properties.alpha["benzene", "toluene"].fix(0.3) m.fs.properties.alpha["toluene", "toluene"].fix(0) m.fs.properties.alpha["toluene", "benzene"].fix(0.3) # initial tau values m.fs.properties.tau["benzene", "benzene"].fix(0) m.fs.properties.tau["benzene", "toluene"].fix(0.1690) m.fs.properties.tau["toluene", "toluene"].fix(0) m.fs.properties.tau["toluene", "benzene"].fix(-0.1559) # Initialize the flash unit m.fs.flash.initialize(outlvl=idaeslog.INFO_LOW) # Fix at actual temperature m.fs.flash.inlet.temperature.fix(float(data["temperature"])) # Set bounds on variables to be estimated m.fs.properties.tau["benzene", "toluene"].setlb(-5) m.fs.properties.tau["benzene", "toluene"].setub(5) m.fs.properties.tau["toluene", "benzene"].setlb(-5) m.fs.properties.tau["toluene", "benzene"].setub(5) # Return initialized flash model return m
def btx(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": 'Liq'}) m.fs.unit = HeatExchanger(default={ "hot_side_name":"hot", "cold_side_name":"cold", "hot": {"property_package": m.fs.properties}, "cold": {"property_package": m.fs.properties}, "flow_pattern": HeatExchangerFlowPattern.cocurrent}) m.fs.unit.hot_inlet.flow_mol[0].fix(5) # mol/s m.fs.unit.hot_inlet.temperature[0].fix(365) # K m.fs.unit.hot_inlet.pressure[0].fix(101325) # Pa m.fs.unit.hot_inlet.mole_frac_comp[0, "benzene"].fix(0.5) m.fs.unit.hot_inlet.mole_frac_comp[0, "toluene"].fix(0.5) m.fs.unit.cold_inlet.flow_mol[0].fix(1) # mol/s m.fs.unit.cold_inlet.temperature[0].fix(300) # K m.fs.unit.cold_inlet.pressure[0].fix(101325) # Pa m.fs.unit.cold_inlet.mole_frac_comp[0, "benzene"].fix(0.5) m.fs.unit.cold_inlet.mole_frac_comp[0, "toluene"].fix(0.5) m.fs.unit.area.fix(1) m.fs.unit.overall_heat_transfer_coefficient.fix(100) return m
def btx_fctp(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": ('Liq', 'Vap'), "activity_coeff_model": "Ideal", "state_vars": "FcTP"}) m.fs.unit = Condenser( default={"property_package": m.fs.properties, "condenser_type": CondenserType.totalCondenser, "temperature_spec": TemperatureSpec.atBubblePoint}) # Fix the total condenser variables (FcTP) m.fs.unit.reflux_ratio.fix(1) m.fs.unit.condenser_pressure.fix(101325) # Fix the inputs (typically the outlet vapor from the top tray) m.fs.unit.inlet.flow_mol_comp[0, "benzene"].fix(0.5) m.fs.unit.inlet.flow_mol_comp[0, "toluene"].fix(0.5) m.fs.unit.inlet.temperature.fix(375) m.fs.unit.inlet.pressure.fix(101325) return m
def model2(): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) # vapor-liquid (ideal) - FTPz m.fs.properties_ideal_vl_FTPz = BTXParameterBlock( default={ "valid_phase": ('Liq', 'Vap'), "activity_coeff_model": "Ideal", "state_vars": "FTPz" }) m.fs.state_block =\ m.fs.properties_ideal_vl_FTPz.build_state_block( default={"defined_state": True}) m.fs.state_block.flow_mol.fix(1) m.fs.state_block.temperature.fix(360) m.fs.state_block.pressure.fix(101325) m.fs.state_block.mole_frac_comp["benzene"].fix(0.5) m.fs.state_block.mole_frac_comp["toluene"].fix(0.5) assert degrees_of_freedom(m.fs.state_block) == 0 m.fs.state_block.initialize() return m
def NRTL_model_opt(): """This function generates an instance of the NRTL Pyomo model Returns ------- m: an instance of the Pyomo model for uncertainty propagation """ m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": ('Liq', 'Vap'), "activity_coeff_model": 'NRTL'}) m.fs.flash = Flash(default={"property_package": m.fs.properties}) # Initialize at a certain inlet condition m.fs.flash.inlet.flow_mol.fix(1) m.fs.flash.inlet.temperature.fix(368) m.fs.flash.inlet.pressure.fix(101325) m.fs.flash.inlet.mole_frac_comp[0, "benzene"].fix(0.5) m.fs.flash.inlet.mole_frac_comp[0, "toluene"].fix(0.5) # Set Flash unit specifications m.fs.flash.heat_duty.fix(0) m.fs.flash.deltaP.fix(0) # Fix NRTL specific variables # alpha values (set at 0.3) m.fs.properties.alpha["benzene", "benzene"].fix(0) m.fs.properties.alpha["benzene", "toluene"].fix(0.3) m.fs.properties.alpha["toluene", "toluene"].fix(0) m.fs.properties.alpha["toluene", "benzene"].fix(0.3) # initial tau values m.fs.properties.tau["benzene", "benzene"].fix(0) m.fs.properties.tau["benzene", "toluene"].fix(0.1690) m.fs.properties.tau["toluene", "toluene"].fix(0) m.fs.properties.tau["toluene", "benzene"].fix(-0.1559) # Initialize the flash unit m.fs.flash.initialize(outlvl=idaeslog.INFO_LOW) # Fix at actual temperature m.fs.flash.inlet.temperature.fix(float(368)) # Set bounds on variables to be estimated m.fs.properties.tau["benzene", "toluene"].setlb(-5) m.fs.properties.tau["benzene", "toluene"].setub(5) m.fs.properties.tau["toluene", "benzene"].setlb(-5) m.fs.properties.tau["toluene", "benzene"].setub(5) # To use kaug # objective function required # need to unfix the variables m.obj = Objective(expr = 0*m.fs.properties.tau["benzene","toluene"] + exp(-m.fs.properties.alpha['toluene','benzene'].value * m.fs.properties.tau['toluene','benzene']), sense=minimize) m.fs.properties.tau["benzene", "toluene"].fixed = False # To use kaug m.fs.properties.tau["toluene", "benzene"].fixed = False return m
def btx_fctp(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": ('Liq', 'Vap'), "activity_coeff_model": "Ideal", "state_vars": "FcTP"}) m.fs.unit = Tray(default={"property_package": m.fs.properties, "has_heat_transfer": True, "has_pressure_change": True}) # Fix the tray inputs (FcTP) m.fs.unit.liq_in.flow_mol_comp[0, "benzene"].fix(0.5) m.fs.unit.liq_in.flow_mol_comp[0, "toluene"].fix(0.5) m.fs.unit.liq_in.temperature.fix(369) m.fs.unit.liq_in.pressure.fix(101325) m.fs.unit.vap_in.flow_mol_comp[0, "benzene"].fix(0.5) m.fs.unit.vap_in.flow_mol_comp[0, "toluene"].fix(0.5) m.fs.unit.vap_in.temperature.fix(372) m.fs.unit.vap_in.pressure.fix(101325) m.fs.unit.deltaP.fix(0) m.fs.unit.heat_duty.fix(0) return m
def btx_ftpz(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={ "valid_phase": ('Liq', 'Vap'), "activity_coeff_model": "Ideal" }) m.fs.unit = TrayColumn( default={ "number_of_trays": 10, "feed_tray_location": 5, "condenser_type": CondenserType.totalCondenser, "condenser_temperature_spec": TemperatureSpec.atBubblePoint, "property_package": m.fs.properties, "has_heat_transfer": False, "has_pressure_change": False }) # Inlet feed conditions m.fs.unit.feed.flow_mol.fix(100) m.fs.unit.feed.temperature.fix(368) m.fs.unit.feed.pressure.fix(101325) m.fs.unit.feed.mole_frac_comp[0, "benzene"].fix(0.5) m.fs.unit.feed.mole_frac_comp[0, "toluene"].fix(0.5) # unit level inputs m.fs.unit.condenser.reflux_ratio.fix(1.4) m.fs.unit.condenser.condenser_pressure.fix(101325) m.fs.unit.reboiler.boilup_ratio.fix(1.3) assert degrees_of_freedom(m) == 0 return m
def btx_ftpz(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": ('Liq', 'Vap'), "activity_coeff_model": "Ideal"}) m.fs.unit = Tray(default={"property_package": m.fs.properties, "has_liquid_side_draw": True, "has_heat_transfer": True, "has_pressure_change": True}) # Set inputs m.fs.unit.liq_in.flow_mol.fix(1) m.fs.unit.liq_in.temperature.fix(369) m.fs.unit.liq_in.pressure.fix(101325) m.fs.unit.liq_in.mole_frac_comp[0, "benzene"].fix(0.5) m.fs.unit.liq_in.mole_frac_comp[0, "toluene"].fix(0.5) m.fs.unit.vap_in.flow_mol.fix(1) m.fs.unit.vap_in.temperature.fix(372) m.fs.unit.vap_in.pressure.fix(101325) m.fs.unit.vap_in.mole_frac_comp[0, "benzene"].fix(0.5) m.fs.unit.vap_in.mole_frac_comp[0, "toluene"].fix(0.5) m.fs.unit.deltaP.fix(0) m.fs.unit.heat_duty.fix(0) m.fs.unit.liq_side_sf.fix(0.5) return m
def btx_fctp(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": ('Liq', 'Vap'), "activity_coeff_model": "Ideal", "state_vars": "FcTP"}) m.fs.unit = Reboiler( default={"property_package": m.fs.properties, "has_boilup_ratio": True}) # Fix the reboiler variables m.fs.unit.boilup_ratio.fix(1) # Fix the inputs (typically this will be the outlet liquid from the # bottom tray) m.fs.unit.inlet.flow_mol_comp[0, "benzene"].fix(0.5) m.fs.unit.inlet.flow_mol_comp[0, "toluene"].fix(0.5) m.fs.unit.inlet.temperature.fix(363) m.fs.unit.inlet.pressure.fix(101325) return m
def btx(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": 'Liq'}) m.fs.unit = Product(default={"property_package": m.fs.properties}) return m
def btx(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": 'Liq'}) m.fs.unit = Heater(default={"property_package": m.fs.properties, "has_pressure_change": True}) return m
def btx(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={ "valid_phase": ('Liq', 'Vap'), "activity_coeff_model": "Ideal" }) m.fs.unit = FeedFlash(default={"property_package": m.fs.properties}) return m
def trans(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties1 = SaponificationParameterBlock() m.fs.properties2 = BTXParameterBlock() m.fs.unit = Translator( default={"inlet_property_package": m.fs.properties1, "outlet_property_package": m.fs.properties2}) return m
def btx_ftpz(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": ('Liq', 'Vap'), "activity_coeff_model": "Ideal"}) m.fs.unit = Tray(default={"property_package": m.fs.properties, "has_heat_transfer": True, "has_pressure_change": True}) return m
def btx(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": 'Liq'}) m.fs.unit = PressureChanger( default={ "property_package": m.fs.properties, "thermodynamic_assumption": ThermodynamicAssumption.isothermal }) return m
def btx(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": 'Liq'}) m.fs.unit = Product(default={"property_package": m.fs.properties}) m.fs.unit.flow_mol[0].fix(5) # mol/s m.fs.unit.temperature[0].fix(365) # K m.fs.unit.pressure[0].fix(101325) # Pa m.fs.unit.mole_frac_comp[0, "benzene"].fix(0.5) m.fs.unit.mole_frac_comp[0, "toluene"].fix(0.5) return m
def distillation_model(): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": ('Liq', 'Vap'), "activity_coeff_model": "Ideal", "state_vars": "FTPz"}) m.fs.unit = TrayColumn(default={ "number_of_trays": 3, "feed_tray_location": 2, "condenser_type": CondenserType.totalCondenser, "condenser_temperature_spec": TemperatureSpec.atBubblePoint, "property_package": m.fs.properties}) return m
def btx_ftpz(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": ('Liq', 'Vap'), "activity_coeff_model": "Ideal"}) m.fs.unit = Condenser( default={"property_package": m.fs.properties, "condenser_type": CondenserType.totalCondenser, "temperature_spec": TemperatureSpec.atBubblePoint}) return m
def btx_ftpz(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={ "valid_phase": ('Liq', 'Vap'), "activity_coeff_model": "Ideal" }) m.fs.unit = Reboiler(default={ "property_package": m.fs.properties, "has_boilup_ratio": True }) return m
def demo_flowsheet(): """Semi-complicated demonstration flowsheet. """ m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.BT_props = BTXParameterBlock() m.fs.M01 = Mixer(default={"property_package": m.fs.BT_props}) m.fs.H02 = Heater(default={"property_package": m.fs.BT_props}) m.fs.F03 = Flash(default={"property_package": m.fs.BT_props}) m.fs.s01 = Arc(source=m.fs.M01.outlet, destination=m.fs.H02.inlet) m.fs.s02 = Arc(source=m.fs.H02.outlet, destination=m.fs.F03.inlet) TransformationFactory("network.expand_arcs").apply_to(m.fs) m.fs.properties = SWCO2ParameterBlock() m.fs.main_compressor = PressureChanger( default={'dynamic': False, 'property_package': m.fs.properties, 'compressor': True, 'thermodynamic_assumption': ThermodynamicAssumption.isentropic}) m.fs.bypass_compressor = PressureChanger( default={'dynamic': False, 'property_package': m.fs.properties, 'compressor': True, 'thermodynamic_assumption': ThermodynamicAssumption.isentropic}) m.fs.turbine = PressureChanger( default={'dynamic': False, 'property_package': m.fs.properties, 'compressor': False, 'thermodynamic_assumption': ThermodynamicAssumption.isentropic}) m.fs.boiler = Heater(default={'dynamic': False, 'property_package': m.fs.properties, 'has_pressure_change': True}) m.fs.FG_cooler = Heater(default={'dynamic': False, 'property_package': m.fs.properties, 'has_pressure_change': True}) m.fs.pre_boiler = Heater(default={'dynamic': False, 'property_package': m.fs.properties, 'has_pressure_change': False}) m.fs.HTR_pseudo_tube = Heater(default={'dynamic': False, 'property_package': m.fs.properties, 'has_pressure_change': True}) m.fs.LTR_pseudo_tube = Heater(default={'dynamic': False, 'property_package': m.fs.properties, 'has_pressure_change': True}) return m.fs
def flash_flowsheet(): # Model and flowsheet m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) # Flash properties m.fs.properties = BTXParameterBlock(default={"valid_phase": ('Liq', 'Vap'), "activity_coeff_model": "Ideal", "state_vars": "FTPz"}) # Flash unit m.fs.flash = Flash(default={"property_package": m.fs.properties}) m.fs.flash.inlet.flow_mol.fix(1) m.fs.flash.inlet.temperature.fix(368) m.fs.flash.inlet.pressure.fix(101325) m.fs.flash.inlet.mole_frac_comp[0, "benzene"].fix(0.5) m.fs.flash.inlet.mole_frac_comp[0, "toluene"].fix(0.5) m.fs.flash.heat_duty.fix(0) m.fs.flash.deltaP.fix(0) return m.fs
def btx(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={ "valid_phase": ('Liq', 'Vap'), "activity_coeff_model": "Ideal" }) m.fs.unit = FeedFlash(default={"property_package": m.fs.properties}) m.fs.unit.flow_mol.fix(1) m.fs.unit.temperature.fix(368) m.fs.unit.pressure.fix(101325) m.fs.unit.mole_frac_comp[0, "benzene"].fix(0.5) m.fs.unit.mole_frac_comp[0, "toluene"].fix(0.5) return m
def btx(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": 'Liq'}) m.fs.unit = HeatExchanger( default={ "shell": { "property_package": m.fs.properties }, "tube": { "property_package": m.fs.properties }, "flow_pattern": HeatExchangerFlowPattern.cocurrent }) return m
def btx_fctp(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock( default={ "valid_phase": ('Liq', 'Vap'), "activity_coeff_model": "Ideal", "state_vars": "FcTP" }) m.fs.unit = Condenser( default={ "property_package": m.fs.properties, "condenser_type": CondenserType.partialCondenser, "temperature_spec": TemperatureSpec.customTemperature }) return m
def btx(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": 'Liq'}) m.fs.unit = Heater(default={"property_package": m.fs.properties, "has_pressure_change": True}) m.fs.unit.inlet.flow_mol[0].fix(5) # mol/s m.fs.unit.inlet.temperature[0].fix(365) # K m.fs.unit.inlet.pressure[0].fix(101325) # Pa m.fs.unit.inlet.mole_frac_comp[0, "benzene"].fix(0.5) m.fs.unit.inlet.mole_frac_comp[0, "toluene"].fix(0.5) m.fs.unit.heat_duty.fix(-5000) m.fs.unit.deltaP.fix(0) return m
def build_flowsheet(): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.BT_props = BTXParameterBlock() m.fs.M01 = Mixer(default={"property_package": m.fs.BT_props}) m.fs.H02 = Heater(default={"property_package": m.fs.BT_props}) m.fs.F03 = Flash(default={"property_package": m.fs.BT_props}) m.fs.s01 = Arc(source=m.fs.M01.outlet, destination=m.fs.H02.inlet) m.fs.s02 = Arc(source=m.fs.H02.outlet, destination=m.fs.F03.inlet) TransformationFactory("network.expand_arcs").apply_to(m.fs) return m
def btx(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties = BTXParameterBlock(default={"valid_phase": 'Liq'}) m.fs.unit = PressureChanger(default={ "property_package": m.fs.properties, "thermodynamic_assumption": ThermodynamicAssumption.isothermal}) m.fs.unit.inlet.flow_mol[0].fix(5) # mol/s m.fs.unit.inlet.temperature[0].fix(365) # K m.fs.unit.inlet.pressure[0].fix(101325) # Pa m.fs.unit.inlet.mole_frac_comp[0, "benzene"].fix(0.5) m.fs.unit.inlet.mole_frac_comp[0, "toluene"].fix(0.5) m.fs.unit.deltaP.fix(50000) iscale.calculate_scaling_factors(m) return m
def flash_model(): """Flash unit model. Use '.fs' attribute to get the flowsheet.""" m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) # Flash properties m.fs.properties = BTXParameterBlock( default={ "valid_phase": ("Liq", "Vap"), "activity_coeff_model": "Ideal", "state_vars": "FTPz", }) # Flash unit m.fs.flash = Flash(default={"property_package": m.fs.properties}) m.fs.flash.inlet.flow_mol.fix(1) m.fs.flash.inlet.temperature.fix(368) m.fs.flash.inlet.pressure.fix(101325) m.fs.flash.inlet.mole_frac_comp[0, "benzene"].fix(0.5) m.fs.flash.inlet.mole_frac_comp[0, "toluene"].fix(0.5) m.fs.flash.heat_duty.fix(0) m.fs.flash.deltaP.fix(0) return m
def trans(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.properties1 = SaponificationParameterBlock() m.fs.properties2 = BTXParameterBlock() m.fs.unit = Translator( default={ "inlet_property_package": m.fs.properties1, "outlet_property_package": m.fs.properties2 }) m.fs.unit.inlet.flow_vol.fix(1.0e-03) m.fs.unit.inlet.conc_mol_comp[0, "H2O"].fix(55388.0) m.fs.unit.inlet.conc_mol_comp[0, "NaOH"].fix(100.0) m.fs.unit.inlet.conc_mol_comp[0, "EthylAcetate"].fix(100.0) m.fs.unit.inlet.conc_mol_comp[0, "SodiumAcetate"].fix(0.0) m.fs.unit.inlet.conc_mol_comp[0, "Ethanol"].fix(0.0) return m