Пример #1
0
def test_HeatCapacityLiquidMixture():
    ws = [.9, .1]
    MWs = [92.13842, 142.28168]
    zs = ws_to_zs(ws=ws, MWs=MWs)
    #    m = Mixture(['toluene', 'decane'], ws=ws, T=300)

    HeatCapacityLiquids = [
        HeatCapacityLiquid(CASRN="108-88-3",
                           MW=92.13842,
                           similarity_variable=0.16279853724428964,
                           Tc=591.75,
                           omega=0.257,
                           extrapolation="linear",
                           method="Best fit",
                           poly_fit=(162.0, 570.0, [
                               7.171090290089724e-18, -1.8175720506858e-14,
                               1.9741936612209287e-11, -1.1980168324612502e-08,
                               4.438245228007343e-06, -0.0010295403891115538,
                               0.1475922271028815, -12.06203901868023,
                               565.3058820511594
                           ])),
        HeatCapacityLiquid(CASRN="124-18-5",
                           MW=142.28168,
                           similarity_variable=0.22490597524572384,
                           Tc=611.7,
                           omega=0.49,
                           extrapolation="linear",
                           method="Best fit",
                           poly_fit=(247.0, 462.4, [
                               -1.0868671859366803e-16, 3.1665821629357415e-13,
                               -4.003344986303024e-10, 2.8664283740244695e-07,
                               -0.00012702231712595518, 0.03563345983140416,
                               -6.170059527783799, 601.9757437895033,
                               -25015.243163919513
                           ]))
    ]

    obj = HeatCapacityLiquidMixture(CASs=['108-88-3', '124-18-5'],
                                    HeatCapacityLiquids=HeatCapacityLiquids,
                                    MWs=MWs)
    assert_close(obj(300.0, P=101325.0, zs=zs, ws=ws),
                 168.29157865567112,
                 rtol=1E-4)

    # Unhappy paths
    with pytest.raises(Exception):
        obj.calculate(300.0, P=101325.0, zs=zs, ws=ws, method='BADMETHOD')

    with pytest.raises(Exception):
        obj.test_method_validity(300.0,
                                 P=101325.0,
                                 zs=zs,
                                 ws=ws,
                                 method='BADMETHOD')
Пример #2
0
def test_ThermalConductivityLiquidMixture_electrolytes():
    # Test electrolytes
    # m = Mixture(['water', 'sulfuric acid'], ws=[.5, .5], T=298.15)
    T, P = 298.15, 101325.0
    ws = [0.5, 0.5]
    MWs = [18.01528, 98.07848]
    zs = ws_to_zs(ws, MWs)
    CASs = ['7732-18-5', '7664-93-9']
    ThermalConductivityLiquids = [
        ThermalConductivityLiquid(CASRN="7732-18-5",
                                  MW=18.01528,
                                  Tm=273.15,
                                  Tb=373.124,
                                  Tc=647.14,
                                  Pc=22048320.0,
                                  omega=0.344,
                                  Hfus=6010.0,
                                  extrapolation="linear",
                                  method=DIPPR_PERRY_8E,
                                  method_P=DIPPR_9G),
        ThermalConductivityLiquid(CASRN="7664-93-9",
                                  MW=98.07848,
                                  Tm=277.305,
                                  Tb=610.15,
                                  Tc=924.0,
                                  Pc=6400000.0,
                                  omega=0.494,
                                  Hfus=10710.0,
                                  extrapolation="linear",
                                  method=GHARAGHEIZI_L,
                                  method_P=DIPPR_9G)
    ]
    kl_mix = ThermalConductivityLiquidMixture(
        CASs=CASs,
        ThermalConductivityLiquids=ThermalConductivityLiquids,
        MWs=MWs)
    kl_mix.method == MAGOMEDOV
    k = kl_mix.mixture_property(T, P, zs, ws)
    assert_close(k, 0.45824995874859015, rtol=1e-13)

    # json export
    hash0 = hash(kl_mix)
    kl_mix2 = ThermalConductivityLiquidMixture.from_json(
        json.loads(json.dumps(kl_mix.as_json())))
    assert kl_mix == kl_mix2
    assert hash(kl_mix) == hash0
    assert hash(kl_mix2) == hash0

    kl_mix2 = eval(str(kl_mix))
    assert kl_mix == kl_mix2
    assert hash(kl_mix) == hash0
    assert hash(kl_mix2) == hash0
Пример #3
0
def test_HeatCapacityLiquidMixture_aqueous():
    from thermo.heat_capacity import HeatCapacityLiquidMixture, LINEAR

    HeatCapacityLiquids = [HeatCapacityLiquid(method='COOLPROP', CASRN="7732-18-5", MW=18.01528, similarity_variable=0.16652530518537598, Tc=647.14, omega=0.344, extrapolation="linear"),
                           HeatCapacityLiquid(CASRN="7647-14-5", MW=58.44277, similarity_variable=0.034221512772238546, Tc=3400.0, omega=0.1894, extrapolation="linear", method="POLY_FIT", poly_fit=(1077.15, 3400.0, [-1.7104845836996866e-36, 3.0186209409101436e-32, -2.2964525212600158e-28, 9.82884046707168e-25, -2.585879179539946e-21, 4.276734025134063e-18, -0.00016783912672163547, 0.1862851719065294, -12.936804011905963]))]

    obj = HeatCapacityLiquidMixture(MWs=[18.01528, 58.44277], CASs=['7732-18-5', '7647-14-5'], HeatCapacityLiquids=HeatCapacityLiquids)

    Cp = obj(T=301.5, P=101325.0, ws=[.9, .1])
    assert_close(Cp, 72.29666542719279, rtol=1e-5)
    ws = [.9, .1]
    zs = ws_to_zs(ws=ws, MWs=[18.01528, 58.44277])

    Cp = obj.calculate(T=301.5, P=101325.0, zs=zs, ws=[.9, .1], method=LINEAR)
    assert_close(Cp, 77.08377446120679, rtol=1e-7)
Пример #4
0
def test_HeatCapacitySolidMixture():
    MWs = [107.8682, 195.078]
    ws = [0.95, 0.05]
    zs = ws_to_zs(ws=ws, MWs=MWs)
    T = 298.15
    P = 101325.0
    #    m = Mixture(['silver', 'platinum'], ws)
    HeatCapacitySolids = [
        HeatCapacitySolid(CASRN="7440-22-4",
                          similarity_variable=0.009270572791610502,
                          MW=107.8682,
                          extrapolation="linear",
                          method="Best fit",
                          poly_fit=(273.0, 1234.0, [
                              -1.3937807081430088e-31, 7.536244381034841e-28,
                              -1.690680423482461e-24, 2.0318654521005364e-21,
                              -1.406580331667692e-18, 5.582457975071205e-16,
                              0.0062759999998829325, 23.430400000009975
                          ])),
        HeatCapacitySolid(CASRN="7440-06-4",
                          similarity_variable=0.005126154666338593,
                          MW=195.078,
                          extrapolation="linear",
                          method="Best fit",
                          poly_fit=(273.0, 1873.0, [
                              3.388131789017202e-37, -6.974130474513008e-33,
                              4.1785562369164175e-29, -1.19324731353925e-25,
                              1.8802914323231756e-22, -1.7047279440501588e-19,
                              8.714473096125867e-17, 0.004853439999977098,
                              24.76928000000236
                          ]))
    ]

    obj = HeatCapacitySolidMixture(CASs=['7440-22-4', '7440-06-4'],
                                   HeatCapacitySolids=HeatCapacitySolids,
                                   MWs=MWs)

    Cp = obj(T, P, zs, ws)
    assert_close(Cp, 25.327457963474732)

    # Unhappy paths
    with pytest.raises(Exception):
        obj.calculate(T, P, zs, ws, 'BADMETHOD')

    with pytest.raises(Exception):
        obj.test_method_validity(T, P, zs, ws, 'BADMETHOD')
Пример #5
0
def test_ThermalConductivityLiquidMixture():
    T, P = 298.15, 101325.0
    ws = [0.258, 0.742]
    MWs = [46.06844, 88.14818]
    CASs = ['64-17-5', '71-41-0']
    # ['ethanol', 'pentanol']
    zs = ws_to_zs(ws=ws, MWs=MWs)
    ThermalConductivityLiquids = [
        ThermalConductivityLiquid(CASRN="64-17-5",
                                  MW=46.06844,
                                  Tm=159.05,
                                  Tb=351.39,
                                  Tc=514.0,
                                  Pc=6137000.0,
                                  omega=0.635,
                                  Hfus=4931.0,
                                  extrapolation="linear",
                                  method="DIPPR_PERRY_8E",
                                  method_P="DIPPR_9G"),
        ThermalConductivityLiquid(CASRN="71-41-0",
                                  MW=88.14818,
                                  Tm=194.7,
                                  Tb=410.75,
                                  Tc=588.1,
                                  Pc=3897000.0,
                                  omega=0.58,
                                  Hfus=10500.0,
                                  extrapolation="linear",
                                  method="DIPPR_PERRY_8E",
                                  method_P="DIPPR_9G")
    ]
    kl_mix = ThermalConductivityLiquidMixture(
        CASs=CASs,
        ThermalConductivityLiquids=ThermalConductivityLiquids,
        MWs=MWs)
    kl_mix.method = DIPPR_9H
    k = kl_mix.mixture_property(T, P, zs, ws)
    assert_close(k, 0.15326768195303517, rtol=1e-13)

    k = kl_mix.calculate(T, P, zs, ws, FILIPPOV)
    assert_close(k, 0.15572417368293207)

    k = kl_mix.calculate(T, P, zs, ws, LINEAR)
    assert_close(k, 0.1557792273701113)

    # Unhappy paths
    with pytest.raises(Exception):
        kl_mix.calculate(T, P, zs, ws, 'BADMETHOD')

    with pytest.raises(Exception):
        kl_mix.test_method_validity(T, P, zs, ws, 'BADMETHOD')

    # json export
    hash0 = hash(kl_mix)
    kl_mix2 = ThermalConductivityLiquidMixture.from_json(
        json.loads(json.dumps(kl_mix.as_json())))
    assert kl_mix == kl_mix2
    assert hash(kl_mix) == hash0
    assert hash(kl_mix2) == hash0

    kl_mix2 = eval(str(kl_mix))
    assert kl_mix == kl_mix2
    assert hash(kl_mix) == hash0
    assert hash(kl_mix2) == hash0
Пример #6
0
def test_ThermalConductivityGasMixture():
    T, P = 298.15, 101325.0
    MWs = [28.0134, 39.948, 31.9988]
    Tbs = [77.355, 87.302, 90.188]
    CASs = ['7727-37-9', '7440-37-1', '7782-44-7']
    ws = [0.7557, 0.0127, 0.2316]
    zs = ws_to_zs(ws, MWs=MWs)
    # ['nitrogen', 'argon', 'oxygen']

    ViscosityGases = [
        ViscosityGas(CASRN="7727-37-9",
                     MW=28.0134,
                     Tc=126.2,
                     Pc=3394387.5,
                     Zc=0.2895282296391198,
                     dipole=0.0,
                     extrapolation="linear",
                     method=DIPPR_PERRY_8E,
                     method_P=None),
        ViscosityGas(CASRN="7440-37-1",
                     MW=39.948,
                     Tc=150.8,
                     Pc=4873732.5,
                     Zc=0.29114409080360165,
                     dipole=0.0,
                     extrapolation="linear",
                     method=DIPPR_PERRY_8E,
                     method_P=None),
        ViscosityGas(CASRN="7782-44-7",
                     MW=31.9988,
                     Tc=154.58,
                     Pc=5042945.25,
                     Zc=0.2880002236716698,
                     dipole=0.0,
                     extrapolation="linear",
                     method=DIPPR_PERRY_8E,
                     method_P=None),
    ]
    ThermalConductivityGases = [
        ThermalConductivityGas(CASRN="7727-37-9",
                               MW=28.0134,
                               Tb=77.355,
                               Tc=126.2,
                               Pc=3394387.5,
                               Vc=8.95e-05,
                               Zc=0.2895282296391198,
                               omega=0.04,
                               dipole=0.0,
                               extrapolation="linear",
                               method=VDI_PPDS,
                               method_P=ELI_HANLEY_DENSE),
        ThermalConductivityGas(CASRN="7440-37-1",
                               MW=39.948,
                               Tb=87.302,
                               Tc=150.8,
                               Pc=4873732.5,
                               Vc=7.49e-05,
                               Zc=0.29114409080360165,
                               omega=-0.004,
                               dipole=0.0,
                               extrapolation="linear",
                               method=VDI_PPDS,
                               method_P=ELI_HANLEY_DENSE),
        ThermalConductivityGas(CASRN="7782-44-7",
                               MW=31.9988,
                               Tb=90.188,
                               Tc=154.58,
                               Pc=5042945.25,
                               Vc=7.34e-05,
                               Zc=0.2880002236716698,
                               omega=0.021,
                               dipole=0.0,
                               extrapolation="linear",
                               method=VDI_PPDS,
                               method_P=ELI_HANLEY_DENSE),
    ]

    kg_mix = ThermalConductivityGasMixture(
        MWs=MWs,
        Tbs=Tbs,
        CASs=CASs,
        correct_pressure_pure=False,
        ThermalConductivityGases=ThermalConductivityGases,
        ViscosityGases=ViscosityGases)

    kg_mix.method = LINEAR
    kg_expect = 0.025593922564292677
    kg = kg_mix.mixture_property(T, P, zs, ws)
    assert_close(kg, kg_expect, rtol=1e-13)
    kg = kg_mix.mixture_property(T, P, zs, ws)
    assert_close(kg, kg_expect, rtol=1e-13)

    kg_mix.method = LINDSAY_BROMLEY
    kg_expect = 0.025588076672276125
    kg = kg_mix.mixture_property(T, P, zs, ws)
    assert_close(kg, kg_expect, rtol=1e-13)

    dT1 = kg_mix.calculate_derivative_T(T, P, zs, ws, LINDSAY_BROMLEY)
    dT2 = kg_mix.property_derivative_T(T, P, zs, ws)
    assert_close1d([dT1, dT2], [7.456379610970565e-05] * 2)

    dP1 = kg_mix.calculate_derivative_P(T, P, zs, ws, LINDSAY_BROMLEY)
    dP2 = kg_mix.property_derivative_P(T, P, zs, ws)
    assert_close1d([dP1, dP2], [0] * 2, rtol=1E-4)

    # Unhappy paths
    with pytest.raises(Exception):
        kg_mix.calculate(m2.T, m2.P, m2.zs, m2.ws, 'BADMETHOD')

    with pytest.raises(Exception):
        kg_mix.test_method_validity(m2.T, m2.P, m2.zs, m2.ws, 'BADMETHOD')

    # json
    hash0 = hash(kg_mix)
    kg_mix2 = ThermalConductivityGasMixture.from_json(
        json.loads(json.dumps(kg_mix.as_json())))
    assert kg_mix == kg_mix2
    assert hash(kg_mix) == hash0
    assert hash(kg_mix2) == hash0

    kg_mix2 = eval(str(kg_mix))
    assert kg_mix == kg_mix2
    assert hash(kg_mix) == hash0
    assert hash(kg_mix2) == hash0