39 inline double operator() (
double por_m) {
45 inline double operator() (
double surface_cond,
double rock_density) {
46 return surface_cond * rock_density;
58 return IT::Record(
"Sorption",
"Sorption model in the reaction term of transport.")
63 "Setting of the fields output.")
71 eq_fields_ = std::make_shared<EqFields>(
"conc_solid",
"Concentration solution in the solid phase.");
77 Input::register_class< SorptionSimple, Mesh &, Input::Record >(
"Sorption") +
101 .
name(
"porosity_immobile")
106 const string &output_conc_name,
107 const string &output_conc_desc)
110 eq_fields_dual_ = std::make_shared<EqFields>(output_conc_name, output_conc_desc);
131 inline double operator() (
double por_m,
double por_imm,
double surface_cond,
double rock_density) {
132 double phi = por_m/(por_m + por_imm);
133 return phi * surface_cond * rock_density;
139 return 1 - por_m - por_imm;
145 return IT::Record(
"SorptionMobile",
"Sorption model in the mobile zone, following the dual porosity model.")
150 "Setting of the fields output.")
157 Input::register_class< SorptionMob, Mesh &, Input::Record >(
"SorptionMobile") +
162 :
SorptionDual(init_mesh, in_rec,
"conc_solid",
"Concentration solution in the solid mobile phase.")
192 inline double operator() (
double por_m,
double por_imm,
double surface_cond,
double rock_density) {
193 double phi = por_m/(por_m + por_imm);
194 return (1 - phi) * surface_cond * rock_density;
200 return 1 - por_m - por_imm;
206 return IT::Record(
"SorptionImmobile",
"Sorption model in the immobile zone, following the dual porosity model.")
209 .
declare_key(
"output",
make_output_type(
"SorptionImmobile",
"conc_immobile_solid",
"Concentration solution in the solid immobile phase."),
210 IT::Default(
"{ \"fields\": [ \"conc_immobile_solid\" ] }"),
211 "Setting of the fields output.")
217 Input::register_class< SorptionImmob, Mesh &, Input::Record >(
"SorptionImmobile") +
221 :
SorptionDual(init_mesh, in_rec,
"conc_immobile_solid",
"Concentration solution in the solid immobile phase.")
std::shared_ptr< FieldSet > eq_fieldset_
FieldCommon & flags_add(FieldFlag::Flags::Mask mask)
FieldCommon & name(const string &name)
FieldCommon & set_limits(double min, double max=std::numeric_limits< double >::max())
static constexpr Mask input_copy
static Input::Type::Abstract & it_abstract_immobile_term()
std::shared_ptr< EqFields > eq_fields_base_
Equation data - all fields needs in assembly class.
static Input::Type::Abstract & it_abstract_term()
static Input::Type::Abstract & it_abstract_mobile_term()
static const Input::Type::Record & get_input_type()
static Input::Type::Instance make_output_type(const string &equation_name, const string &output_field_name, const string &output_field_desc)
std::shared_ptr< EqFields > eq_fields_
Pointer to equation fields. The object is constructed in descendants.
Field< 3, FieldValue< 3 >::Scalar > immob_porosity_
Abstract class of sorption model in case dual porosity is considered.
~SorptionDual(void)
Destructor.
SorptionDual(Mesh &init_mesh, Input::Record in_rec, const string &output_conc_name, const string &output_conc_desc)
Constructor.
std::shared_ptr< EqFields > eq_fields_dual_
Overwrites SorptionBase::eq_fields_.
SorptionImmob(Mesh &init_mesh, Input::Record in_rec)
Constructor.
~SorptionImmob(void)
Destructor.
void init_field_models() override
Implements SorptionBase::init_field_models.
static const int registrar
Registrar of class to factory.
static const Input::Type::Record & get_input_type()
static const int registrar
Registrar of class to factory.
SorptionMob(Mesh &init_mesh, Input::Record in_rec)
Constructor.
static const Input::Type::Record & get_input_type()
void init_field_models() override
Implements SorptionBase::init_field_models.
~SorptionMob(void)
Destructor.
static const Input::Type::Record & get_input_type()
~SorptionSimple(void)
Destructor.
static const int registrar
Registrar of class to factory.
void init_field_models() override
Implements SorptionBase::init_field_models.
SorptionSimple(Mesh &init_mesh, Input::Record in_rec)
Constructor.
#define FLOW123D_FORCE_LINK_IN_CHILD(x)
This file contains classes representing sorption model. Sorption model can be computed both in case t...
double operator()(double por_imm)
double operator()(double por_m, double por_imm, double surface_cond, double rock_density)
double operator()(double por_m, double por_imm)
double operator()(double por_m)
double operator()(double por_m, double por_imm, double surface_cond, double rock_density)
double operator()(double por_m, double por_imm)
double operator()(double surface_cond, double rock_density)
double operator()(double por_m)