Exemplo n.º 1
0
def test_cv():
    model = ConcreteModel()
    model.prop_param = iapws95.Iapws95ParameterBlock()
    model.prop_in = iapws95.Iapws95StateBlock(
        default={"parameters": model.prop_param})
    cond = read_data("prop.txt", col=7)
    phase = read_data("prop.txt", col=13)
    for i, c in enumerate(cond):
        if c[2] == "undefined":
            continue
        if (c[0] > 640 and c[0] < 680) and (c[1] > 2.1e7 and c[1] < 3.1e7):
            #near critical and non-analytic terms were omitted
            continue
        if phase[i][2] in ["liquid", "supercritical"]:
            p = "Liq"
        else:
            p = "Vap"
        model.prop_in.temperature.set_value(c[0])
        model.prop_in.pressure = c[1]
        cv = value(model.prop_in.cv_mol_phase[p] / model.prop_in.mw / 1000)
        rho = value(model.prop_in.dens_mass_phase[p])
        if rho > 250 and rho < 420 and c[0] < 700 and c[0] > 640:
            tol = 0.03  # steep part in sc region
        else:
            tol = 0.003
        assert (abs(cv - c[2]) / c[2] < tol)
Exemplo n.º 2
0
def test_tau_sat():
    model = ConcreteModel()
    model.prop_param = iapws95.Iapws95ParameterBlock()
    model.prop_in = iapws95.Iapws95StateBlock(default={"parameters":model.prop_param})
    cond = read_data("sat_prop.txt", col=2)
    for c in cond:
        tau = value(model.prop_in.func_tau_sat(c[1]/1000.0))
        T = 647.096/tau
        print("{}, {}, {}".format(c[1], c[0], T))
        assert(abs(T-c[0]) < 0.1)
Exemplo n.º 3
0
def test_liquid_enthalpy_sat():
    model = ConcreteModel()
    model.prop_param = iapws95.Iapws95ParameterBlock()
    model.prop_in = iapws95.Iapws95StateBlock(default={"parameters":model.prop_param})
    cond = read_data("sat_prop.txt", col=5)
    for c in cond:
        if c[0] > 645: # getting very close to ciritical point
            tol = 0.01
        else:
            tol = 0.001
        model.prop_in.pressure = c[1]
        enth = value(model.prop_in.enth_mol_sat_phase["Liq"]/model.prop_in.mw/1000.0)
        assert(abs((enth-c[2])/c[2]) < tol)
Exemplo n.º 4
0
def test_vapor_density_sat():
    model = ConcreteModel()
    model.prop_param = iapws95.Iapws95ParameterBlock()
    model.prop_in = iapws95.Iapws95StateBlock(default={"parameters":model.prop_param})
    cond = read_data("sat_prop.txt", col=14)
    for c in cond:
        if c[0] > 645: # getting very close to ciritical point
            tol = 0.01
        else:
            tol = 0.001
        model.prop_in.temperature.set_value(c[0])
        model.prop_in.pressure = c[1]
        rho = value(model.prop_in.dens_mass_phase["Vap"])
        assert(abs(rho-c[2])/c[2] < tol)
Exemplo n.º 5
0
def test_enthalpy_vapor_as_function_of_p_and_tau():
    model = ConcreteModel()
    model.prop_param = iapws95.Iapws95ParameterBlock()
    model.prop_in = iapws95.Iapws95StateBlock(default={"parameters":model.prop_param})
    cond = read_data("prop.txt", col=5)
    phase = read_data("prop.txt", col=13)
    for i, c in enumerate(cond):
        if phase[i][2] in ["liquid", "supercritical"]:
            continue
        model.prop_in.temperature.set_value(c[0])
        h = value(model.prop_in.func_hvpt(c[1]/1000, 647.096/c[0]))
        rho = value(model.prop_in.dens_mass_phase["Vap"])
        if rho > 250 and rho < 420 and c[0] < 700 and c[0] > 640:
            tol = 0.03 # steep part in sc region
        else:
            tol = 0.003
        assert(abs(h-c[2])/c[2] < tol)
Exemplo n.º 6
0
def test_internal_energy():
    model = ConcreteModel()
    model.prop_param = iapws95.Iapws95ParameterBlock()
    model.prop_in = iapws95.Iapws95StateBlock(default={"parameters":model.prop_param})
    cond = read_data("prop.txt", col=4)
    phase = read_data("prop.txt", col=13)
    for i, c in enumerate(cond):
        if phase[i][2] in ["liquid", "supercritical"]:
            p = "Liq"
        else:
            p = "Vap"
        model.prop_in.temperature.set_value(c[0])
        model.prop_in.pressure = c[1]
        u = value(model.prop_in.energy_internal_mol_phase[p]/model.prop_in.mw/1000)
        rho = value(model.prop_in.dens_mass_phase[p])
        if rho > 250 and rho < 420 and c[0] < 700 and c[0] > 640:
            tol = 0.02 # steep part in sc region
        else:
            tol = 0.002
        assert(abs(u-c[2])/c[2] < tol)
Exemplo n.º 7
0
def test_density():
    model = ConcreteModel()
    model.prop_param = iapws95.Iapws95ParameterBlock()
    model.prop_in = iapws95.Iapws95StateBlock(default={"parameters":model.prop_param})
    cond = read_data("prop.txt", col=2)
    phase = read_data("prop.txt", col=13)
    for i, c in enumerate(cond):
        if phase[i][2] in ["liquid", "supercritical"]:
            p = "Liq"
        else:
            p = "Vap"
        model.prop_in.temperature.set_value(c[0])
        model.prop_in.pressure = c[1]
        rho = value(model.prop_in.dens_mass_phase[p])
        if rho > 250 and rho < 420 and c[0] < 700 and c[0] > 645:
            tol = 0.03 # steep part in sc region
        elif c[1] < 20:
            tol = 0.005 #very low pressure < 20 Pa
        else:
            tol = 0.001
        assert(abs(rho-c[2])/c[2] < tol)
Exemplo n.º 8
0
def test_enthalpy_of_vaporization():
    model = ConcreteModel()
    model.prop_param = iapws95.Iapws95ParameterBlock()
    model.prop_in = iapws95.Iapws95StateBlock(default={"parameters":model.prop_param})
    cond_liq = read_data("sat_prop.txt", col=5)
    cond_vap = read_data("sat_prop.txt", col=17)
    for i, c in enumerate(cond_liq):
        if c[0] > 645: # getting very close to ciritical point
            tol = 0.05
        else:
            tol = 0.001
        model.prop_in.pressure.value = c[1]
        enth = value(model.prop_in.dh_vap_mol/model.prop_in.mw/1000.0)
        enth_dat = cond_vap[i][2] - c[2]
        if abs(enth_dat) > 1e-8:
            assert(abs((enth-enth_dat)/enth_dat) < tol)
        else:
            assert(abs(enth-enth_dat) < tol)
    #Over Critical Pressure
    model.prop_in.pressure = model.prop_in.config.parameters.pressure_crit*1.1
    enth = value(model.prop_in.dh_vap_mol/model.prop_in.mw/1000.0)
    assert(abs(enth) < 0.001)
Exemplo n.º 9
0
 def make_model(self):
     model = ConcreteModel()
     model.prop_param = iapws95.Iapws95ParameterBlock()
     model.prop_in = iapws95.Iapws95StateBlock(default={"parameters":model.prop_param})
     return model