def model(self): m = ConcreteModel() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.params = WaterParameterBlock( default={"solute_list": ["tss", "nonvolatile_toc"]}) m.fs.unit = GACZO(default={ "property_package": m.fs.params, "database": db}) return m
def model(self): m = ConcreteModel() m.db = Database() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.params = WaterParameterBlock( default={"solute_list": ["tss", "nonvolatile_toc"]}) m.fs.unit = GACZO(default={ "property_package": m.fs.params, "database": m.db}) m.fs.unit.inlet.flow_mass_comp[0, "H2O"].fix(10000) m.fs.unit.inlet.flow_mass_comp[0, "tss"].fix(1) m.fs.unit.inlet.flow_mass_comp[0, "nonvolatile_toc"].fix(1) return m
def test_costing(subtype): m = ConcreteModel() m.db = Database() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.params = WaterParameterBlock( default={"solute_list": ["sulfur", "toc", "tss"]}) m.fs.costing = ZeroOrderCosting() m.fs.unit1 = GACZO( default={ "property_package": m.fs.params, "database": m.db, "process_subtype": subtype, }) m.fs.unit1.inlet.flow_mass_comp[0, "H2O"].fix(10000) m.fs.unit1.inlet.flow_mass_comp[0, "sulfur"].fix(1) m.fs.unit1.inlet.flow_mass_comp[0, "toc"].fix(2) m.fs.unit1.inlet.flow_mass_comp[0, "tss"].fix(3) m.fs.unit1.load_parameters_from_database(use_default_removal=True) assert degrees_of_freedom(m.fs.unit1) == 0 m.fs.unit1.costing = UnitModelCostingBlock( default={"flowsheet_costing_block": m.fs.costing}) assert isinstance(m.fs.costing.gac, Block) assert isinstance(m.fs.costing.gac.capital_a_parameter, Var) assert isinstance(m.fs.costing.gac.capital_b_parameter, Var) assert isinstance(m.fs.costing.gac.capital_c_parameter, Var) assert isinstance(m.fs.unit1.costing.capital_cost, Var) assert isinstance(m.fs.unit1.costing.capital_cost_constraint, Constraint) assert_units_consistent(m.fs) assert degrees_of_freedom(m.fs.unit1) == 0 assert m.fs.unit1.electricity[0] in m.fs.costing._registered_flows[ "electricity"] assert (m.fs.unit1.activated_carbon_demand[0] in m.fs.costing._registered_flows["activated_carbon"])
def build(): # flowsheet set up m = ConcreteModel() m.db = Database() m.fs = FlowsheetBlock(default={"dynamic": False}) m.fs.prop = prop_ZO.WaterParameterBlock( default={"solute_list": ["tds", "tss", "toc"]}) # unit models m.fs.feed = FeedZO(default={"property_package": m.fs.prop}) m.fs.intake_pump = WaterPumpingStationZO( default={ "property_package": m.fs.prop, "database": m.db, "process_subtype": "raw", }) m.fs.coag_and_floc = CoagulationFlocculationZO(default={ "property_package": m.fs.prop, "database": m.db }) m.fs.sedimentation = SedimentationZO(default={ "property_package": m.fs.prop, "database": m.db }) m.fs.ozonation = OzoneZO(default={ "property_package": m.fs.prop, "database": m.db }) m.fs.gravity_basin = FixedBedZO( default={ "property_package": m.fs.prop, "database": m.db, "process_subtype": "gravity_basin", }) m.fs.gac = GACZO( default={ "property_package": m.fs.prop, "database": m.db, "process_subtype": "pressure_vessel", }) m.fs.backwash_pump = WaterPumpingStationZO( default={ "property_package": m.fs.prop, "database": m.db, "process_subtype": "treated", }) m.fs.uv = UVZO(default={"property_package": m.fs.prop, "database": m.db}) m.fs.anion_exchange = IonExchangeZO( default={ "property_package": m.fs.prop, "database": m.db, "process_subtype": "anion_exchange", }) m.fs.chlorination = ChlorinationZO(default={ "property_package": m.fs.prop, "database": m.db }) m.fs.storage = StorageTankZO(default={ "property_package": m.fs.prop, "database": m.db }) m.fs.recharge_pump = WaterPumpingStationZO( default={ "property_package": m.fs.prop, "database": m.db, "process_subtype": "treated", }) m.fs.product = Product(default={"property_package": m.fs.prop}) # connections m.fs.s01 = Arc(source=m.fs.feed.outlet, destination=m.fs.intake_pump.inlet) m.fs.s02 = Arc(source=m.fs.intake_pump.outlet, destination=m.fs.coag_and_floc.inlet) m.fs.s03 = Arc(source=m.fs.coag_and_floc.outlet, destination=m.fs.sedimentation.inlet) m.fs.s04 = Arc(source=m.fs.sedimentation.treated, destination=m.fs.ozonation.inlet) m.fs.s05 = Arc(source=m.fs.ozonation.treated, destination=m.fs.gravity_basin.inlet) m.fs.s06 = Arc(source=m.fs.gravity_basin.treated, destination=m.fs.gac.inlet) m.fs.s07 = Arc(source=m.fs.gac.treated, destination=m.fs.uv.inlet) m.fs.s08 = Arc(source=m.fs.gac.byproduct, destination=m.fs.backwash_pump.inlet) m.fs.s09 = Arc(source=m.fs.uv.treated, destination=m.fs.anion_exchange.inlet) m.fs.s10 = Arc(source=m.fs.anion_exchange.treated, destination=m.fs.chlorination.inlet) m.fs.s11 = Arc(source=m.fs.chlorination.treated, destination=m.fs.storage.inlet) m.fs.s12 = Arc(source=m.fs.storage.outlet, destination=m.fs.recharge_pump.inlet) m.fs.s13 = Arc(source=m.fs.recharge_pump.outlet, destination=m.fs.product.inlet) TransformationFactory("network.expand_arcs").apply_to(m) # scaling iscale.calculate_scaling_factors(m) return m