|
Flow123d
JS_before_hm-989-g79825ac
|
#include <isotherm.hh>

Classes | |
| struct | ConcPair |
| Pair of soluted and adsorbed concentration. More... | |
Public Types | |
| enum | SorptionType { none = 0, linear = 1, freundlich = 2, langmuir = 3 } |
| Type of adsorption isotherm. More... | |
Public Member Functions | |
| TYPEDEF_ERR_INFO (EI_BoostMessage, std::string) | |
| DECLARE_EXCEPTION (ExcBoostSolver,<< "The Boost solver of nonlinear equation did not converge in sorption model.\n"<< "Check input at the following address for possible user error: \t"<< Input::EI_Address::val<< "\n""Solver message: \n"<< EI_BoostMessage::val) | |
| TYPEDEF_ERR_INFO (EI_TotalMass, double) | |
| DECLARE_EXCEPTION (ExcNegativeTotalMass,<< "The total mass in sorption model became negative during the computation (value: "<< EI_TotalMass::val<< ").\n"<< "Check input at the following address for possible user error: \t"<< Input::EI_Address::val<< "\n") | |
| Isotherm () | |
| Default constructor. More... | |
| void | reinit (enum SorptionType sorption_type, bool limited_solubility_on, double aqua_density, double scale_aqua, double scale_sorbed, double c_aqua_limit, double mult_coef, double second_coef) |
| void | make_table (unsigned int n_points, double table_limit) |
| void | clear_table () |
| void | compute (double &c_aqua, double &c_sorbed) |
| void | interpolate (double &c_aqua, double &c_sorbed) |
| bool | is_precomputed (void) |
| double | table_limit (void) const |
| Getter for table limit (limit aqueous concentration). More... | |
| template<> | |
| Isotherm::ConcPair | solve_conc (Isotherm::ConcPair c_pair, const None &) |
| template<> | |
| void | make_table (const None &, int) |
Protected Member Functions | |
| template<class Func > | |
| void | make_table (const Func &isotherm, int n_points) |
| template<class Func > | |
| ConcPair | solve_conc (ConcPair c_pair, const Func &isotherm) |
| ConcPair | solve_conc (ConcPair conc) |
| ConcPair | compute_projection (ConcPair conc) |
| ConcPair | precipitate (ConcPair conc) |
| double | get_total_mass (ConcPair conc) |
Protected Attributes | |
| enum SorptionType | adsorption_type_ |
| Type of isotherm. More... | |
| double | mult_coef_ |
| Multiplication parameter of the isotherm. More... | |
| double | second_coef_ |
| Optional secod parameter of the isotherm. More... | |
| double | table_limit_ |
| Concentration in liquid phase for limit of the interpolation table. More... | |
| bool | limited_solubility_on_ |
| Solubility limit flag. More... | |
| double | solubility_limit_ |
| Concentration limit in liquid phase (solubility limit). More... | |
| double | rho_aqua_ |
| density of the solvent More... | |
| double | scale_aqua_ |
| coefficient that convert soluted concentration to mass; porosity = k_W, originally rho_aqua*porosity = k_W More... | |
| double | scale_sorbed_ |
| coefficient that convert adsorbed molar concentration to mass; molar_weight * rho_rock * (1 - porosity) = k_H More... | |
| double | inv_scale_aqua_ |
| reciprocal values More... | |
| double | inv_scale_sorbed_ |
| std::vector< double > | interpolation_table |
| double | total_mass_step_ |
Class describing one isotherm with possibly precalculated interpolation table.
Definition at line 158 of file isotherm.hh.
Type of adsorption isotherm.
| Enumerator | |
|---|---|
| none | |
| linear | |
| freundlich | |
| langmuir | |
Definition at line 174 of file isotherm.hh.
| Isotherm::Isotherm | ( | ) |
Default constructor.
Definition at line 32 of file isotherm.cc.
| void Isotherm::clear_table | ( | ) |
Clears the interpolation table and resets the table limit. (That means, no interpolation takes place in the computation.)
Definition at line 37 of file isotherm.cc.

| void Isotherm::compute | ( | double & | c_aqua, |
| double & | c_sorbed | ||
| ) |
Direct calculation of the equilibrium adsorption using a non-linear solver. reinit has to be called just before this method.
Definition at line 68 of file isotherm.cc.

|
protected |
Update concentrations using interopolation.
Definition at line 100 of file isotherm.cc.

| Isotherm::DECLARE_EXCEPTION | ( | ExcBoostSolver | , |
| << "The Boost solver of nonlinear equation did not converge in sorption model.\n"<< "Check input at the following address for possible user error: \t"<< Input::EI_Address::val<< "\n""Solver message: \n"<< EI_BoostMessage::val | |||
| ) |
| Isotherm::DECLARE_EXCEPTION | ( | ExcNegativeTotalMass | , |
| << "The total mass in sorption model became negative during the computation (value: "<< EI_TotalMass::val<< ").\n"<< "Check input at the following address for possible user error: \t"<< Input::EI_Address::val<< "\n" | |||
| ) |
|
protected |
| void Isotherm::interpolate | ( | double & | c_aqua, |
| double & | c_sorbed | ||
| ) |
Use interpolation to determine equilibrium state. Assumes previous call to make_table. If total mass is larger then table limit we either call precipitate (limit_solubility_on) or use direct computation.
Definition at line 84 of file isotherm.cc.

|
inline |
Returns true if interpolation table is created.
Definition at line 239 of file isotherm.hh.

| void Isotherm::make_table | ( | unsigned int | n_points, |
| double | table_limit | ||
| ) |
Create interpolation table for isotherm in rotated coordinate system with X axes given by total mass in both phases. Currently we support only linear interpolation. reinit has to be called just before this method.
| n_points | is the size of the table |
| table_limit | is the limit value of aqueous concentration |
Definition at line 259 of file isotherm.cc.
| void Isotherm::make_table | ( | const None & | , |
| int | |||
| ) |
Definition at line 247 of file isotherm.cc.
|
protected |
Implementation of interpolation construction for particular isotherm functor. Specialized for sorption 'none' - creates empty table.
Definition at line 217 of file isotherm.cc.
|
protected |
Modify concentrations after adsorption for limited solubility.
Definition at line 127 of file isotherm.cc.

| void Isotherm::reinit | ( | enum SorptionType | sorption_type, |
| bool | limited_solubility_on, | ||
| double | aqua_density, | ||
| double | scale_aqua, | ||
| double | scale_sorbed, | ||
| double | c_aqua_limit, | ||
| double | mult_coef, | ||
| double | second_coef | ||
| ) |
Setting adsorption parameters for general isotherm. These parameters are then used either for creation of the interpolation table via make_table method or just one adsorption is computed through compute method. Provided parameters are:
| sorption_type | - type of isotherm |
| limited_solubility_on | - true if c_aqua_limit is solubility limit |
| aqua_density | - density of the liquid phase |
| scale_aqua | - generalized porosity, fraction of the space with liquid phase |
| scale_sorbed | - fraction of the space with the solid to which we adsorp |
| c_aqua_limit | - solubility limit (limit aqueous concentration) |
| mult_coef | - multiplicative coefficient of the isotherm (all isotherms have one) |
| second_coef | - possibly second parameter of the isotherm |
Definition at line 44 of file isotherm.cc.

| Isotherm::ConcPair Isotherm::solve_conc | ( | Isotherm::ConcPair | c_pair, |
| const None & | |||
| ) |
Definition at line 177 of file isotherm.cc.
|
protected |
Find new values for concentrations in c_pair that has same total mass and lies on the isotherm (functor object). Specialized for sorption 'none' - returns unchanged c_pair.
Definition at line 137 of file isotherm.cc.

|
protected |
Dispatch isotherm type and use appropriate template.
Definition at line 183 of file isotherm.cc.
|
inline |
Getter for table limit (limit aqueous concentration).
Definition at line 244 of file isotherm.hh.

| Isotherm::TYPEDEF_ERR_INFO | ( | EI_BoostMessage | , |
| std::string | |||
| ) |
| Isotherm::TYPEDEF_ERR_INFO | ( | EI_TotalMass | , |
| double | |||
| ) |
|
protected |
Type of isotherm.
Definition at line 281 of file isotherm.hh.
|
protected |
Interpolation table of isotherm in the rotated coordinates. The X axes of rotated system is total mass, the Y axes is perpendicular.
Definition at line 309 of file isotherm.hh.
|
protected |
reciprocal values
Definition at line 304 of file isotherm.hh.
|
protected |
Definition at line 304 of file isotherm.hh.
|
protected |
Solubility limit flag.
Definition at line 293 of file isotherm.hh.
|
protected |
Multiplication parameter of the isotherm.
Definition at line 284 of file isotherm.hh.
|
protected |
density of the solvent
Definition at line 298 of file isotherm.hh.
|
protected |
coefficient that convert soluted concentration to mass; porosity = k_W, originally rho_aqua*porosity = k_W
Definition at line 300 of file isotherm.hh.
|
protected |
coefficient that convert adsorbed molar concentration to mass; molar_weight * rho_rock * (1 - porosity) = k_H
Definition at line 302 of file isotherm.hh.
|
protected |
Optional secod parameter of the isotherm.
Definition at line 287 of file isotherm.hh.
|
protected |
Concentration limit in liquid phase (solubility limit).
Definition at line 295 of file isotherm.hh.
|
protected |
Concentration in liquid phase for limit of the interpolation table.
Definition at line 290 of file isotherm.hh.
|
protected |
Step on the rotated X axes (total mass).
Definition at line 313 of file isotherm.hh.
1.8.11