1 #include "FrantzMarshall.h"
2 #include "ThermoParameters.h"
3
4 namespace ThermoFun {
5
thermoPropertiesFrantzMarshall(Reaktoro_::Temperature TK,Reaktoro_::Pressure Pbar,Reaction reaction,PropertiesSolvent wp)6 auto thermoPropertiesFrantzMarshall(Reaktoro_::Temperature TK, Reaktoro_::Pressure Pbar, Reaction reaction, PropertiesSolvent wp) -> ThermoPropertiesReaction
7 {
8 ThermoPropertiesReaction tpr;
9
10 // auto ref_tpr = reaction.thermoReferenceProperties();
11 auto RHO = wp.density/1000; // in g/cm3
12 auto ALP = wp.Alpha;
13 auto BET = wp.Beta*1e05;
14 auto dALPdT = wp.dAldT;
15 auto MFcoef = reaction.thermoParameters().reaction_FM_coeff;
16
17 auto dRHOdT = -ALP*RHO;
18 auto dRHOdP = BET*RHO;
19 auto d2RHOdT2 = RHO*(pow(ALP,2)-dALPdT);
20
21 auto a = MFcoef[0];
22 auto b = MFcoef[1];
23 auto c = MFcoef[2];
24 auto d = MFcoef[3];
25 auto e = MFcoef[4];
26 auto f = MFcoef[5];
27 auto g = MFcoef[6];
28
29 auto logK = a + b/TK + c/pow(TK,2.) + d/pow(TK,3.) + ( e + f/TK + g/pow(TK,2.) )*log10(RHO);
30
31 auto J = a + b/TK + c/pow(TK,2.) + d/pow(TK,3.) + ( e + f/TK + g/pow(TK,2.) )*log10(RHO);
32 auto dJ = - b/pow(TK,2.) - 2.*c/pow(TK,3.) - 3.*d/pow(TK,4.)
33 + ( -f/pow(TK,2.) - 2.*g/pow(TK,3.) )*log10(RHO)
34 + ( e + f/TK + g/pow(TK,2.) ) * 1./(RHO*log(10.)) * dRHOdT;
35 auto d2J = 2.*b/pow(TK,3.) + 6.*c/pow(TK,4.) + 12.*d/pow(TK,5.)
36 + ( 2.*f/pow(TK,3.) + 6.*g/pow(TK,4.) )*log10(RHO)
37 + 2.*( -f/pow(TK,2.) -2.*g/pow(TK,3.) ) * 1./(RHO*log(10.)) * dRHOdT
38 - ( e + f/TK + g/pow(TK,2.) ) * 1./(pow(RHO,2.)*log(10.)) * pow (dRHOdT,2.)
39 + ( e + f/TK + g/pow(TK,2.) ) * 1./(RHO*log(10.)) * d2RHOdT2;
40
41 auto dGr = - R_CONSTANT*TK*log(10.)*logK;
42 auto dSr = R_CONSTANT*log(10.)*( J + dJ*TK );
43 auto dCPr = R_CONSTANT*log(10.)*TK*( 2.*dJ + d2J*TK );
44 auto dVr = - R_CONSTANT*log(10.)*TK*( ( e + f/TK + g/pow(TK,2.) ) * 1./(RHO*log(10.)) * dRHOdP );
45 auto dHr = dGr + dSr*TK;
46 auto dUr = dHr - Pbar*dVr;
47 auto dAr = dUr - TK*dSr;
48
49 tpr.ln_equilibrium_constant = logK*lg_to_ln;
50 tpr.reaction_enthalpy = dHr;
51 tpr.reaction_entropy = dSr;
52 tpr.reaction_gibbs_energy = dGr;
53 tpr.reaction_heat_capacity_cp = dCPr;
54 tpr.reaction_volume = dVr;
55 tpr.reaction_helmholtz_energy = dAr;
56 tpr.reaction_internal_energy = dUr;
57
58 return tpr;
59 }
60
61
62 }
63