Plugins
Loading...
Searching...
No Matches
smile_chem_eq.hpp
Go to the documentation of this file.
1/*
2 * smile_chem_util.hpp
3 *
4 * Header for the functions implementing the main chemical relations for the equilibrium.
5 *
6 */
7#include <algorithm>
8#include <cmath>
9
10#ifndef _SMILE_CHEM_UTIL_HPP_
11#define _SMILE_CHEM_UTIL_HPP_
12
13//TODO: Note that exp10 is a GNU extension. It does not work even under macOS with clang.
14//#ifdef UG_WIN32
15#define exp10(x) exp(2.30258509299404568402*(x))
16//#endif
17
18/* Throughout in this file: Units of the concentrations in the arguments are [mol/l], not [mol/m^3]! */
19
20namespace ug {
21namespace smile {
22
23/* Thermodynamic constants for calcite */
24const double logKspCc = - 8.481;
25const double logKspgG = 10.35;
26
27// Thermodynamic complex formation constants for aqueous species
28const double logKHCO3 = 16.6808;
29const double logKCO3 = 10.3289;
30const double logKAlOH = -4.9573;
31const double logKAlOH2 = -10.5943;
32const double logKAlOH3 = -16.4328;
33const double logKAlOH4 = -22.8797;
34const double KHCO3 = exp10(logKHCO3);
35const double KCO3 = exp10(logKCO3);
36const double KAlOH = exp10(logKAlOH);
37const double KAlOH2 = exp10(logKAlOH2);
38const double KAlOH3 = exp10(logKAlOH3);
39const double KAlOH4 = exp10(logKAlOH4);
40
41const double logIW_0 = -13.9995; // Ion activity product of water at infinite dilution
42
43// Ion-Ion interaction parameters (SIT)
44const double epsHCl = 0.12;
45const double epsOHNa = 0.04;
46const double epsAlCl = 0.33;
47const double epsAlOHCl = 0.09;
48const double epsAlOH2Cl = -0.27;
49const double epsAlOH4Na = -0.07;
50const double epsHCO3Na = 0.0;
51const double epsCO3Na = -0.08;
52const double epsCaCl = 0.14;
53
54const double ADH = 0.5114; // Debye-Hueckel coefficient A at 25 degC
55const double NaCl_sat = 5428.78; // Concentration of saturated NaCl in mol/m^3 at 25 degC
56
57// Computes the chemical equilibrium
59(
60 // The following values are assumed to be in mol/l (scale by 1e-3 to convert from mol/m^3),
61 // in particular s which should be the concentration (to get from the mass fraction, scale additionally by 5428.78)
62 double &H_T, double &OH_T, double &s, double &Ca_T, double &DIC_T, double &SO4_T, double &Al_T, double &Cc_T
63);
64
65// Activity coefficients
66struct t_gamma
67{
68 double H;
69 double OH;
70 double Al3;
71 double AlOH;
72 double AlOH2;
73 double AlOH4;
74 double CO3;
75 double HCO3;
76 double Ca;
77};
78
80
81void Compute_I_D
82(
83 double s, double Ca, double Al, double DIC, double SO4, // [i]
84 double *I, double *D, t_gamma *gamma // [o]
85);
86
87void Compute_I_pH
88(
89 number s, number H, number Ca, number Al, number DIC, number SO4, // [i]
90 number& I, number& pH // [o]
91);
92
93} // end namespace smile
94} // end namespace ug
95
96#endif // _SMILE_CHEM_UTIL_HPP_
97
98/* End of File */
parameterString s
Definition Biogas.lua:2
double number
const double logKCO3
Definition smile_chem_eq.hpp:29
const double ADH
Definition smile_chem_eq.hpp:54
const double logKAlOH4
Definition smile_chem_eq.hpp:33
const double epsHCO3Na
Definition smile_chem_eq.hpp:50
void Compute_I_D(double s, double Ca, double Al, double DIC, double SO4, double *I, double *D, t_gamma *gamma)
Definition smile_chem_eq.cpp:36
const double epsAlOH2Cl
Definition smile_chem_eq.hpp:48
void Compute_I_pH(number s, number H, number Ca, number Al, number DIC, number SO4, number &I, number &pH)
Definition smile_chem_eq.cpp:24
const double logKAlOH2
Definition smile_chem_eq.hpp:31
const double logKHCO3
Definition smile_chem_eq.hpp:28
const double epsAlCl
Definition smile_chem_eq.hpp:46
const double KHCO3
Definition smile_chem_eq.hpp:34
const double epsCO3Na
Definition smile_chem_eq.hpp:51
const double logKAlOH3
Definition smile_chem_eq.hpp:32
const double logKAlOH
Definition smile_chem_eq.hpp:30
const double KAlOH2
Definition smile_chem_eq.hpp:37
const double KAlOH3
Definition smile_chem_eq.hpp:38
number pH_of_sHD(number s, number H, number D)
Definition smile_chem_eq.cpp:17
int SmartEquilibrate(double &H_T, double &OH_T, double &s, double &Ca_T, double &DIC_T, double &SO4_T, double &Al_T, double &Cc_T)
Definition smile_chem_eq.cpp:139
const double NaCl_sat
Definition smile_chem_eq.hpp:55
const double KAlOH4
Definition smile_chem_eq.hpp:39
const double logIW_0
Definition smile_chem_eq.hpp:41
const double KAlOH
Definition smile_chem_eq.hpp:36
const double epsOHNa
Definition smile_chem_eq.hpp:45
const double epsAlOH4Na
Definition smile_chem_eq.hpp:49
const double epsHCl
Definition smile_chem_eq.hpp:44
const double KCO3
Definition smile_chem_eq.hpp:35
const double logKspCc
Definition smile_chem_eq.hpp:24
const double epsCaCl
Definition smile_chem_eq.hpp:52
const double epsAlOHCl
Definition smile_chem_eq.hpp:47
const double logKspgG
Definition smile_chem_eq.hpp:25
#define exp10(x)
Definition smile_chem_eq.hpp:15
Definition smile_chem_eq.hpp:67
double AlOH4
Definition smile_chem_eq.hpp:73
double CO3
Definition smile_chem_eq.hpp:74
double AlOH
Definition smile_chem_eq.hpp:71
double H
Definition smile_chem_eq.hpp:68
double Ca
Definition smile_chem_eq.hpp:76
double AlOH2
Definition smile_chem_eq.hpp:72
double OH
Definition smile_chem_eq.hpp:69
double Al3
Definition smile_chem_eq.hpp:70
double HCO3
Definition smile_chem_eq.hpp:75