Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 3
0
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