예제 #1
0
def test_flowsheet_serializer_get_unit_model_type():
    from idaes.core import MaterialBalanceType
    from idaes.generic_models.unit_models.pressure_changer import (
        ThermodynamicAssumption, )
    from idaes.generic_models.unit_models.heat_exchanger import (
        delta_temperature_underwood_callback, )
    from idaes.generic_models.properties import iapws95
    from pyomo.environ import Set

    # flowsheet
    m = ConcreteModel(name="My Model")
    m.fs = FlowsheetBlock(default={"dynamic": False})
    m.fs.prop_water = iapws95.Iapws95ParameterBlock(
        default={"phase_presentation": iapws95.PhaseType.LG})

    # add & test scalar unit model
    m.fs.cond_pump = PressureChanger(
        default={
            "property_package": m.fs.prop_water,
            "material_balance_type": MaterialBalanceType.componentTotal,
            "thermodynamic_assumption": ThermodynamicAssumption.pump,
        })
    unit_type = FlowsheetSerializer.get_unit_model_type(m.fs.cond_pump)
    assert unit_type == "pressure_changer"

    # add & test indexed unit model
    m.set_fwh = Set(initialize=[1, 2, 3, 4, 6, 7, 8])
    m.fs.fwh = HeatExchanger(m.set_fwh,
                             default={
                                 "delta_temperature_callback":
                                 delta_temperature_underwood_callback,
                                 "shell": {
                                     "property_package": m.fs.prop_water,
                                     "material_balance_type":
                                     MaterialBalanceType.componentTotal,
                                     "has_pressure_change": True,
                                 },
                                 "tube": {
                                     "property_package": m.fs.prop_water,
                                     "material_balance_type":
                                     MaterialBalanceType.componentTotal,
                                     "has_pressure_change": True,
                                 },
                             })
    unit_type = FlowsheetSerializer.get_unit_model_type(m.fs.fwh)
    assert unit_type == "heat_exchanger"
예제 #2
0
def test_flowsheet_serializer_demo(demo_flowsheet, demo_flowsheet_json):
    """Simple regression test vs. stored data."""
    test_dict = FlowsheetSerializer(demo_flowsheet, "demo").as_dict()
    stored_dict = json.loads(demo_flowsheet_json)
    _canonicalize(test_dict)
    _canonicalize(stored_dict)
    assert json.dumps(test_dict, sort_keys=True) == json.dumps(stored_dict,
                                                               sort_keys=True)
예제 #3
0
def test_boiler_demo(serialized_boiler_flowsheet_json):
    import idaes.power_generation.flowsheets.supercritical_power_plant.boiler_subflowsheet_build as blr
    m, solver = blr.main()
    test_dict = FlowsheetSerializer(m.fs, "boiler").as_dict()
    stored_dict = json.loads(serialized_boiler_flowsheet_json)
    _canonicalize(test_dict)
    _canonicalize(stored_dict)
    assert json.dumps(test_dict, sort_keys=True) == json.dumps(stored_dict,
                                                               sort_keys=True)
예제 #4
0
def test_flowsheet_serializer_flash(flash_flowsheet, flash_flowsheet_json):
    """Simple regression test vs. stored data."""
    test_dict = FlowsheetSerializer(flash_flowsheet, "demo").as_dict()
    stored_dict = json.loads(flash_flowsheet_json)
    _canonicalize(test_dict)
    _canonicalize(stored_dict)
    test_json = json.dumps(test_dict, sort_keys=True)
    stored_json = json.dumps(stored_dict, sort_keys=True)
    if test_json != stored_json:
        report_failure(test_dict, stored_dict)
        pytest.fail("Serialized flowsheet does not match expected")
예제 #5
0
def test_boiler_demo(serialized_boiler_flowsheet_json):
    import idaes.power_generation.flowsheets.supercritical_power_plant.boiler_subflowsheet_build as blr

    m, solver = blr.main()
    test_dict = FlowsheetSerializer(m.fs, "boiler").as_dict()
    stored_dict = json.loads(serialized_boiler_flowsheet_json)
    _canonicalize(test_dict)
    _canonicalize(stored_dict)
    test_json = json.dumps(test_dict, sort_keys=True)
    stored_json = json.dumps(stored_dict, sort_keys=True)
    if test_json != stored_json:
        report_failure(test_dict, stored_dict)
        pytest.fail("Serialized flowsheet does not match expected")