def test_pump(): m = pyo.ConcreteModel() m.fs = idaes.core.FlowsheetBlock(default={"dynamic": False}) m.fs.properties = iapws95.Iapws95ParameterBlock() m.fs.unit1 = cmodels.Pump(default={"property_package": m.fs.properties}) m.fs.unit2 = hmodels.HelmPump( default={"property_package": m.fs.properties}) # set inputs Fin = 1e4 # mol/s hin = 4000 # J/mol Pin = 101325 # Pa Pout = 2 * Pin # Pa eff = 0.7 m.fs.unit1.inlet.flow_mol[0].fix(Fin) m.fs.unit2.inlet.flow_mol[0].fix(Fin) m.fs.unit1.inlet.enth_mol[0].fix(hin) m.fs.unit2.inlet.enth_mol[0].fix(hin) m.fs.unit1.inlet.pressure[0].fix(Pin) m.fs.unit2.inlet.pressure[0].fix(Pin) m.fs.unit1.outlet.pressure[0].fix(Pout) m.fs.unit2.outlet.pressure[0].fix(Pout) m.fs.unit1.efficiency_pump.fix(eff) m.fs.unit2.efficiency_pump.fix(eff) m.fs.unit1.initialize() m.fs.unit2.initialize() assert pyo.value(m.fs.unit1.control_volume.work[0]) == pytest.approx( pyo.value(m.fs.unit2.control_volume.work[0]), rel=1e-7) assert pyo.value(m.fs.unit1.control_volume.properties_out[0].temperature) == \ pytest.approx( pyo.value(m.fs.unit2.control_volume.properties_out[0].temperature), rel=1e-7 )
def test_compressor_pump_compare(): m = pyo.ConcreteModel() m.fs = idaes.core.FlowsheetBlock(default={"dynamic": False}) m.fs.properties = iapws95.Iapws95ParameterBlock() m.fs.unit1 = hmodels.HelmPump( default={"property_package": m.fs.properties}) m.fs.unit2 = hmodels.HelmIsentropicCompressor( default={"property_package": m.fs.properties}) Fin = 1e4 # mol/s hin = 4000 # J/mol Pin = 101325 # Pa Pout = 2 * Pin # Pa eff = 0.7 m.fs.unit1.inlet.flow_mol[0].fix(Fin) m.fs.unit1.inlet.enth_mol[0].fix(hin) m.fs.unit1.inlet.pressure[0].fix(Pin) m.fs.unit1.outlet.pressure[0].fix(Pout) m.fs.unit1.efficiency_pump.fix(eff) m.fs.unit2.inlet.flow_mol[0].fix(Fin) m.fs.unit2.inlet.enth_mol[0].fix(hin) m.fs.unit2.inlet.pressure[0].fix(Pin) m.fs.unit2.outlet.pressure[0].fix(Pout) m.fs.unit2.efficiency_isentropic.fix(eff) m.fs.unit1.initialize() m.fs.unit2.initialize() # The pump calculations are a bit more approximate assuming incompressible # fluid entropy is independent of pressure, so the results here should be # close, but not exactly the same. assert pyo.value(m.fs.unit1.control_volume.properties_out[0].temperature) == \ pytest.approx( pyo.value(m.fs.unit2.control_volume.properties_out[0].temperature), rel=1e-3 ) assert pyo.value(m.fs.unit1.control_volume.work[0]) == pytest.approx( pyo.value(m.fs.unit2.control_volume.work[0]), rel=1e-3)