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