Skip to content

Commit

Permalink
fix MVC single stage
Browse files Browse the repository at this point in the history
  • Loading branch information
bknueven committed Apr 8, 2024
1 parent 519a85f commit b99eee9
Showing 1 changed file with 18 additions and 15 deletions.
33 changes: 18 additions & 15 deletions watertap/examples/flowsheets/mvc/mvc_single_stage.py
Original file line number Diff line number Diff line change
Expand Up @@ -457,7 +457,7 @@ def initialize_system(m, solver=None):

# initialize feed pump
propagate_state(m.fs.s01)
m.fs.pump_feed.initialize(optarg=optarg)
m.fs.pump_feed.initialize(optarg=optarg, solver="ipopt-watertap")

# initialize separator
propagate_state(m.fs.s02)
Expand All @@ -466,11 +466,11 @@ def initialize_system(m, solver=None):
m.fs.separator_feed.split_fraction[0, "hx_distillate_cold"].fix(
m.fs.recovery[0].value
)
m.fs.separator_feed.mixed_state.initialize(optarg=optarg)
m.fs.separator_feed.mixed_state.initialize(optarg=optarg, solver="ipopt-watertap")
# Touch properties for initialization
m.fs.separator_feed.hx_brine_cold_state[0].mass_frac_phase_comp["Liq", "TDS"]
m.fs.separator_feed.hx_distillate_cold_state[0].mass_frac_phase_comp["Liq", "TDS"]
m.fs.separator_feed.initialize(optarg=optarg)
m.fs.separator_feed.initialize(optarg=optarg, solver="ipopt-watertap")
m.fs.separator_feed.split_fraction[0, "hx_distillate_cold"].unfix()

# initialize distillate heat exchanger
Expand All @@ -489,7 +489,7 @@ def initialize_system(m, solver=None):
m.fs.evaporator.outlet_brine.temperature[0].value
)
m.fs.hx_distillate.hot_inlet.pressure[0] = 101325
m.fs.hx_distillate.initialize()
m.fs.hx_distillate.initialize(solver="ipopt-watertap")

# initialize brine heat exchanger
propagate_state(m.fs.s04)
Expand All @@ -507,34 +507,36 @@ def initialize_system(m, solver=None):
0
].value
m.fs.hx_brine.hot_inlet.pressure[0] = 101325
m.fs.hx_brine.initialize()
m.fs.hx_brine.initialize(solver="ipopt-watertap")

# initialize mixer
propagate_state(m.fs.s05)
propagate_state(m.fs.s06)
m.fs.mixer_feed.initialize()
m.fs.mixer_feed.initialize(solver="ipopt-watertap")
m.fs.mixer_feed.pressure_equality_constraints[0, 2].deactivate()

# initialize evaporator
propagate_state(m.fs.s07)
m.fs.Q_ext[0].fix()
m.fs.evaporator.properties_vapor[0].flow_mass_phase_comp["Vap", "H2O"].fix()
# fixes and unfixes those values
m.fs.evaporator.initialize(delta_temperature_in=60)
m.fs.evaporator.initialize(delta_temperature_in=60, solver="ipopt-watertap")
m.fs.Q_ext[0].unfix()
m.fs.evaporator.properties_vapor[0].flow_mass_phase_comp["Vap", "H2O"].unfix()

# initialize compressor
propagate_state(m.fs.s08)
m.fs.compressor.initialize()
m.fs.compressor.initialize(solver="ipopt-watertap")

# initialize condenser
propagate_state(m.fs.s09)
m.fs.condenser.initialize(heat=-m.fs.evaporator.heat_transfer.value)
m.fs.condenser.initialize(
heat=-m.fs.evaporator.heat_transfer.value, solver="ipopt-watertap"
)

# initialize brine pump
propagate_state(m.fs.s10)
m.fs.pump_brine.initialize(optarg=optarg)
m.fs.pump_brine.initialize(optarg=optarg, solver="ipopt-watertap")

# initialize distillate pump
propagate_state(m.fs.s13) # to translator block
Expand All @@ -545,7 +547,7 @@ def initialize_system(m, solver=None):
m.fs.pump_distillate.control_volume.properties_in[0].pressure = (
m.fs.condenser.control_volume.properties_out[0].pressure.value
)
m.fs.pump_distillate.initialize(optarg=optarg)
m.fs.pump_distillate.initialize(optarg=optarg, solver="ipopt-watertap")

# propagate brine state
propagate_state(m.fs.s12)
Expand All @@ -562,24 +564,25 @@ def func_initialize(unit):
unit.initialize(
heat=-unit.flowsheet().evaporator.heat_transfer.value,
optarg=solver.options,
solver="ipopt-watertap",
)
elif unit.local_name == "evaporator":
unit.flowsheet().Q_ext[0].fix()
unit.properties_vapor[0].flow_mass_phase_comp["Vap", "H2O"].fix()
unit.initialize(delta_temperature_in=60)
unit.initialize(delta_temperature_in=60, solver="ipopt-watertap")
unit.flowsheet().Q_ext[0].unfix()
unit.properties_vapor[0].flow_mass_phase_comp["Vap", "H2O"].unfix()
elif unit.local_name == "separator_feed":
unit.split_fraction[0, "hx_distillate_cold"].fix(
unit.flowsheet().recovery[0].value
)
unit.initialize()
unit.initialize(solver="ipopt-watertap")
unit.split_fraction[0, "hx_distillate_cold"].unfix()
elif unit.local_name == "mixer_feed":
unit.initialize()
unit.initialize(solver="ipopt-watertap")
unit.pressure_equality_constraints[0, 2].deactivate()
else:
unit.initialize()
unit.initialize(solver="ipopt-watertap")

seq.run(m, func_initialize)

Expand Down

0 comments on commit b99eee9

Please sign in to comment.