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"
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)
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)
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")
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")