18 double getPotential(
const double p_Ads,
const double T_Ads,
const double M_Ads)
43 const double Tc = 647.3;
44 const double pc = 221.2e5;
46 const double Tr = T_Ads / Tc;
47 const double theta = 1. - Tr;
49 const double c[] = {-7.69123, -26.08023, -168.17065, 64.23285, -118.96462,
50 4.16717, 20.97506, 1.0e9, 6.0};
52 c[0] * theta +
c[1] * std::pow(theta, 2) +
c[2] * std::pow(theta, 3) +
53 c[3] * std::pow(theta, 4) +
c[4] * std::pow(theta, 5),
54 1. +
c[5] * theta +
c[6] * std::pow(theta, 2)};
56 const double exponent =
57 K[0] / (K[1] * Tr) - theta / (
c[7] * std::pow(theta, 2) +
c[8]);
58 return pc * std::exp(exponent);
67 const double c[] = {2.50052e3, -2.1068, -3.57500e-1,
68 1.905843e-1, -5.11041e-2, 7.52511e-3,
69 -6.14313e-4, 2.59674e-5, -4.421e-7};
71 for (
size_t i = 0; i <
sizeof(
c) /
sizeof(
c[0]); i++)
73 hv +=
c[i] * std::pow(T_Ads, i);
79 const double c[] = {2.50043e3, -2.35209, 1.91685e-4, -1.94824e-5,
80 2.89539e-7, -3.51199e-9, 2.06926e-11, -6.4067e-14,
81 8.518e-17, 1.558e-20, -1.122e-22};
83 for (
size_t i = 0; i <
sizeof(
c) /
sizeof(
c[0]); i++)
85 hv +=
c[i] * std::pow(T_Ads, i);
89 const double c[] = {2.99866e3, -3.1837e-3, -1.566964e1,
90 -2.514e-6, 2.045933e-2, 1.0389e-8};
91 return ((
c[0] +
c[2] * T_Ads +
c[4] * std::pow(T_Ads, 2)) /
92 (1. +
c[1] * T_Ads +
c[3] * std::pow(T_Ads, 2) +
93 c[5] * std::pow(T_Ads, 3)));
99 return M_other * xm / (M_other * xm + M_this * (1.0 - xm));
105 return M_other * M_this /
square(M_other * xm + M_this * (1.0 - xm));
111 const double loading)
const
117 return k_rate * (C_eq - loading);
122 const double rho_dry)
124 return rho_curr / rho_dry - 1.0;
130 const double epsilon = 1.0e-8;
135 const double dAdlnW = 2.0 * epsilon / (std::log(W_p / W_m));
138 if (W_p <= 0.0 || W_m <= 0.0)
140 ERR(
"characteristic curve in negative region (W-, W+): {:g}, {:g}", W_m,
150 const double M_Ads)
const
162 const double M_Ads)
const
void ERR(char const *fmt, Args const &... args)
static double getMolarFraction(double xm, double M_this, double M_other)
static double dMolarFraction(double xm, double M_this, double M_other)
virtual double getAlphaT(const double T_Ads) const =0
double getEntropy(const double T_Ads, const double A) const
static double getEquilibriumVapourPressure(const double T_Ads)
double getEnthalpy(const double p_Ads, const double T_Ads, const double M_Ads) const override
static double getEvaporationEnthalpy(const double T_Ads)
static double getLoading(const double rho_curr, const double rho_dry)
virtual double characteristicCurve(const double A) const =0
double getReactionRate(const double p_Ads, const double T_Ads, const double M_Ads, const double loading) const override
virtual double getAdsorbateDensity(const double T_Ads) const =0
double getEquilibriumLoading(const double p_Ads, const double T_Ads, const double M_Ads) const override
constexpr double IdealGasConstant
double getPotential(const double p_Ads, const double T_Ads, const double M_Ads)