def solve_RO(base="TDS", level="simple"): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) property_models.build_prop(m, base="TDS") build_RO(m, base=base, level=level) # specify feed property_models.specify_feed(m.fs.RO.feed_side.properties[0, 0], base="TDS") m.fs.RO.feed_side.properties[0, 0].pressure.fix(50e5) # scaling calculate_scaling_factors(m) # initialize m.fs.RO.initialize(optarg={"nlp_scaling_method": "user-scaling"}) m.fs.RO.display() check_dof(m) solve_block(m) m.fs.RO.report() return m
def build_feed(m, base='TDS'): """ Build a feed block for a specified property base. The state vars are fixed to the standard condition. Property bases include: 'TDS', 'ion', 'salt' """ # feed block prop = property_models.get_prop(m, base=base) # build m.fs.feed = Feed(default={'property_package': prop}) # specify property_models.specify_feed(m.fs.feed.properties[0], base=base) m.fs.feed.properties[0].mass_frac_phase_comp # touch so the block can be initialized
def solve_SepRO(base="TDS"): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) property_models.build_prop(m, base=base) build_SepRO(m, base=base) property_models.specify_feed(m.fs.RO.mixed_state[0], base=base) check_dof(m) calculate_scaling_factors(m) solve_block(m) m.fs.RO.inlet.display() m.fs.RO.permeate.display() m.fs.RO.retentate.display() return m
def solve_SepNF(base="ion"): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) property_models.build_prop(m, base=base) build_SepNF(m, base=base) property_models.specify_feed(m.fs.NF.mixed_state[0], base=base) m.fs.NF.mixed_state[0].mass_frac_phase_comp # touching for tests check_dof(m) calculate_scaling_factors(m) solve_block(m) m.fs.NF.inlet.display() m.fs.NF.permeate.display() m.fs.NF.retentate.display() return m
def solve_ZONF(base="ion"): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) property_models.build_prop(m, base=base) build_ZONF(m, base=base) property_models.specify_feed(m.fs.NF.feed_side.properties_in[0], base="ion") check_dof(m) calculate_scaling_factors(m) solve_block(m) m.fs.NF.inlet.display() m.fs.NF.permeate.display() m.fs.NF.retentate.display() return m
def solve_RO(base='TDS', level='simple'): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) property_models.build_prop(m, base='TDS') build_RO(m, base=base, level=level) # specify feed property_models.specify_feed(m.fs.RO.feed_side.properties_in[0], base='TDS') m.fs.RO.feed_side.properties_in[0].pressure.fix(50e5) # scaling calculate_scaling_factors(m) # initialize m.fs.RO.initialize(optarg={'nlp_scaling_method': 'user-scaling'}) check_dof(m) solve_block(m) m.fs.RO.report() return m