Flow123d  JS_before_hm-1575-ga41e096
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
SorptionBase Class Referenceabstract

#include <sorption_base.hh>

Inheritance diagram for SorptionBase:
Inheritance graph
[legend]
Collaboration diagram for SorptionBase:
Collaboration graph
[legend]

Classes

struct  CommonElementData
 
class  EqData
 

Public Member Functions

 TYPEDEF_ERR_INFO (EI_ArrayName, std::string)
 
 DECLARE_INPUT_EXCEPTION (ExcSubstanceCountMatch,<< "The size of the input array "<< EI_ArrayName::qval<< " does not match the number of substances.")
 
 SorptionBase (Mesh &init_mesh, Input::Record in_rec)
 
virtual ~SorptionBase (void)
 
void initialize () override
 Prepares the object to usage. More...
 
void zero_time_step () override
 
void update_solution (void) override
 Updates the solution. More...
 
void output_data (void) override
 Output method. More...
 
bool evaluate_time_constraint (FMT_UNUSED double &time_constraint) override
 
- Public Member Functions inherited from ReactionTerm
 TYPEDEF_ERR_INFO (EI_Substance, std::string)
 
 TYPEDEF_ERR_INFO (EI_Model, std::string)
 
 DECLARE_INPUT_EXCEPTION (ExcUnknownSubstance,<< "Unknown substance name: "<< EI_Substance::qval)
 
 DECLARE_INPUT_EXCEPTION (ExcWrongDescendantModel,<< "Impossible descendant model: "<< EI_Model::qval)
 
 ReactionTerm (Mesh &init_mesh, Input::Record in_rec)
 Constructor. More...
 
 ~ReactionTerm (void)
 Destructor. More...
 
void choose_next_time (void) override
 Disable changes in TimeGovernor by empty method. More...
 
ReactionTermsubstances (SubstanceList &substances)
 Sets the names of substances considered in transport. More...
 
ReactionTermoutput_stream (std::shared_ptr< OutputTime > ostream)
 Sets the output stream which is given from transport class. More...
 
virtual bool evaluate_time_constraint (double &time_constraint)=0
 Computes a constraint for time step. More...
 
ReactionTermconcentration_fields (FieldFEScalarVec &conc_mobile)
 
- Public Member Functions inherited from EquationBase
 EquationBase ()
 
 EquationBase (Mesh &mesh, const Input::Record in_rec)
 
virtual ~EquationBase ()
 
virtual void set_time_upper_constraint (double dt, std::string message)
 
virtual void set_time_lower_constraint (double dt, std::string message)
 
TimeGovernortime ()
 
virtual void set_time_governor (TimeGovernor &time)
 
double planned_time ()
 
double solved_time ()
 
Meshmesh ()
 
std::shared_ptr< Balancebalance () const
 
TimeMark::Type mark_type ()
 
FieldSeteq_fieldset ()
 

Static Public Member Functions

static const Input::Type::Recordget_input_type ()
 
static Input::Type::Instance make_output_type (const string &equation_name, const string &output_field_name, const string &output_field_desc)
 
- Static Public Member Functions inherited from ReactionTerm
static Input::Type::Abstractit_abstract_term ()
 
static Input::Type::Abstractit_abstract_mobile_term ()
 
static Input::Type::Abstractit_abstract_immobile_term ()
 
static Input::Type::Abstractit_abstract_reaction ()
 
- Static Public Member Functions inherited from EquationBase
static Input::Type::Recordrecord_template ()
 Template Record with common keys for derived equations. More...
 

Protected Member Functions

 SorptionBase ()
 
void make_reactions ()
 
void initialize_substance_ids ()
 Reads names of substances from input and creates indexing to global vector of substance. More...
 
void initialize_from_input ()
 Initializes private members of sorption from the input record. More...
 
void initialize_fields ()
 Initializes field sets. More...
 
void set_initial_condition ()
 Reads and sets initial condition for concentration in solid. More...
 
void compute_reaction (const DHCellAccessor &dh_cell) override
 Compute reaction on a single element. More...
 
void isotherm_reinit (unsigned int i_subst, const ElementAccessor< 3 > &elm)
 Reinitializes the isotherm. More...
 
void isotherm_reinit_all (const ElementAccessor< 3 > &elm)
 Calls isotherm_reinit for all isotherms. More...
 
void make_tables (void)
 
void update_max_conc ()
 Computes maximal aqueous concentration at the current step. More...
 
void clear_max_conc ()
 Sets max conc to zeros on all regins. More...
 
virtual void compute_common_ele_data (const ElementAccessor< 3 > &elem)=0
 

Protected Attributes

EqDatadata_
 Pointer to equation data. The object is constructed in descendants. More...
 
unsigned int n_interpolation_steps_
 
double solvent_density_
 
std::vector< double > solubility_vec_
 
std::vector< double > table_limit_
 
std::vector< std::vector< double > > max_conc
 
std::vector< std::vector< Isotherm > > isotherms
 
unsigned int n_substances_
 
std::vector< unsigned int > substance_global_idx_
 Mapping from local indexing of substances to global. More...
 
std::shared_ptr< ReactionTermreaction_liquid
 
std::shared_ptr< ReactionTermreaction_solid
 
struct SorptionBase::CommonElementData common_ele_data
 
- Protected Attributes inherited from ReactionTerm
FieldFEScalarVec conc_mobile_fe
 FieldFEs representing P0 interpolation of mobile concentration (passed from transport). More...
 
SubstanceList substances_
 Names belonging to substances. More...
 
std::shared_ptr< OutputTimeoutput_stream_
 Pointer to a transport output stream. More...
 
std::shared_ptr< DOFHandlerMultiDimdof_handler_
 Pointer to DOF handler used through the reaction tree. More...
 
- Protected Attributes inherited from EquationBase
bool equation_empty_
 flag is true if only default constructor was called More...
 
Meshmesh_
 
TimeGovernortime_
 
Input::Record input_record_
 
FieldSeteq_fieldset_
 
std::shared_ptr< Balancebalance_
 object for calculation and writing the mass balance to file. More...
 

Additional Inherited Members

- Public Types inherited from ReactionTerm
typedef std::vector< std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > > FieldFEScalarVec
 

Detailed Description

Definition at line 59 of file sorption_base.hh.

Constructor & Destructor Documentation

SorptionBase::SorptionBase ( Mesh init_mesh,
Input::Record  in_rec 
)

Constructor with parameter for initialization of a new declared class member

Definition at line 124 of file sorption_base.cc.

SorptionBase::~SorptionBase ( void  )
virtual

Destructor.

Definition at line 133 of file sorption_base.cc.

SorptionBase::SorptionBase ( )
protected

This method disables to use constructor without parameters.

Member Function Documentation

void SorptionBase::clear_max_conc ( )
protected

Sets max conc to zeros on all regins.

Definition at line 438 of file sorption_base.cc.

Here is the caller graph for this function:

virtual void SorptionBase::compute_common_ele_data ( const ElementAccessor< 3 > &  elem)
protectedpure virtual

Computes CommonElementData. Is pure virtual, implemented differently for simple/mobile/immobile sorption class.

Implemented in SorptionImmob, SorptionMob, SorptionDual, and SorptionSimple.

Here is the caller graph for this function:

void SorptionBase::compute_reaction ( const DHCellAccessor dh_cell)
overrideprotectedvirtual

Compute reaction on a single element.

Implements ReactionTerm.

Definition at line 530 of file sorption_base.cc.

Here is the caller graph for this function:

SorptionBase::DECLARE_INPUT_EXCEPTION ( ExcSubstanceCountMatch  ,
<< "The size of the input array "<< EI_ArrayName::qval<< " does not match the number of substances."   
)
bool SorptionBase::evaluate_time_constraint ( FMT_UNUSED double &  time_constraint)
inlineoverride

Definition at line 139 of file sorption_base.hh.

const Record & SorptionBase::get_input_type ( )
static

Static variable for new input data types input

Definition at line 54 of file sorption_base.cc.

Here is the caller graph for this function:

void SorptionBase::initialize ( )
overridevirtual

Prepares the object to usage.

Allocating memory, reading input, initialization of fields.

Reimplemented from EquationBase.

Definition at line 165 of file sorption_base.cc.

void SorptionBase::initialize_fields ( )
protected

Initializes field sets.

Definition at line 302 of file sorption_base.cc.

Here is the caller graph for this function:

void SorptionBase::initialize_from_input ( )
protected

Initializes private members of sorption from the input record.

Definition at line 253 of file sorption_base.cc.

Here is the caller graph for this function:

void SorptionBase::initialize_substance_ids ( )
protected

Reads names of substances from input and creates indexing to global vector of substance.

Also creates the local vector of molar masses.

Definition at line 207 of file sorption_base.cc.

Here is the caller graph for this function:

void SorptionBase::isotherm_reinit ( unsigned int  i_subst,
const ElementAccessor< 3 > &  elm 
)
protected

Reinitializes the isotherm.

On data change the isotherm is recomputed, possibly new interpolation table is made. NOTE: Be sure to update common element data (porosity, rock density etc.) by compute_common_ele_data(), before calling reinitialization!

Definition at line 400 of file sorption_base.cc.

Here is the caller graph for this function:

void SorptionBase::isotherm_reinit_all ( const ElementAccessor< 3 > &  elm)
protected

Calls isotherm_reinit for all isotherms.

Definition at line 430 of file sorption_base.cc.

Here is the caller graph for this function:

static Input::Type::Instance SorptionBase::make_output_type ( const string &  equation_name,
const string &  output_field_name,
const string &  output_field_desc 
)
inlinestatic

Definition at line 71 of file sorption_base.hh.

Here is the caller graph for this function:

void SorptionBase::make_reactions ( )
protected

Initializes possible following reactions from input record. It should be called after setting mesh, time_governor, distribution and concentration_matrix if there are some setting methods for reactions called (they are not at the moment, so it could be part of init_from_input).

Definition at line 138 of file sorption_base.cc.

Here is the caller graph for this function:

void SorptionBase::make_tables ( void  )
protected

Creates interpolation table for isotherms.

Definition at line 465 of file sorption_base.cc.

Here is the caller graph for this function:

void SorptionBase::output_data ( void  )
overridevirtual

Output method.

Some reaction models have their own data to output (sorption, dual porosity)

  • this is where it must be reimplemented. On the other hand, some do not have (linear reaction, pade approximant)
  • that is why it is not pure virtual.

Reimplemented from ReactionTerm.

Definition at line 583 of file sorption_base.cc.

Here is the caller graph for this function:

void SorptionBase::set_initial_condition ( )
protected

Reads and sets initial condition for concentration in solid.

Definition at line 364 of file sorption_base.cc.

Here is the caller graph for this function:

SorptionBase::TYPEDEF_ERR_INFO ( EI_ArrayName  ,
std::string   
)
void SorptionBase::update_max_conc ( )
protected

Computes maximal aqueous concentration at the current step.

Definition at line 449 of file sorption_base.cc.

Here is the caller graph for this function:

void SorptionBase::update_solution ( void  )
overridevirtual

Updates the solution.

Goes through local distribution of elements and calls compute_reaction.

Reimplemented from EquationBase.

Definition at line 380 of file sorption_base.cc.

void SorptionBase::zero_time_step ( )
overridevirtual

Does first computation after initialization process. The time is set and initial condition is set and output.

Reimplemented from EquationBase.

Definition at line 338 of file sorption_base.cc.

Member Data Documentation

struct SorptionBase::CommonElementData SorptionBase::common_ele_data
protected
EqData* SorptionBase::data_
protected

Pointer to equation data. The object is constructed in descendants.

Definition at line 193 of file sorption_base.hh.

std::vector<std::vector<Isotherm> > SorptionBase::isotherms
protected

Three dimensional array contains intersections between isotherms and mass balance lines. It describes behaviour of sorbents in mobile pores of various rock matrix enviroments. Up to |nr_of_region x nr_of_substances x n_points| doubles. Because of equidistant step lenght in cocidered system of coordinates, just function values are stored.

Definition at line 223 of file sorption_base.hh.

std::vector<std::vector<double> > SorptionBase::max_conc
protected

Maximum concentration per region. It is used for optimization of interpolation table.

Definition at line 216 of file sorption_base.hh.

unsigned int SorptionBase::n_interpolation_steps_
protected

Temporary nr_of_points can be computed using step_length. Should be |nr_of_region x nr_of_substances| matrix later.

Definition at line 198 of file sorption_base.hh.

unsigned int SorptionBase::n_substances_
protected

Definition at line 225 of file sorption_base.hh.

std::shared_ptr<ReactionTerm> SorptionBase::reaction_liquid
protected

Reaction model that follows the sorption.

Definition at line 233 of file sorption_base.hh.

std::shared_ptr<ReactionTerm> SorptionBase::reaction_solid
protected

Definition at line 234 of file sorption_base.hh.

std::vector<double> SorptionBase::solubility_vec_
protected

Critical concentrations of species dissolved in water.

Definition at line 207 of file sorption_base.hh.

double SorptionBase::solvent_density_
protected

Density of the solvent. TODO: Could be done region dependent, easily.

Definition at line 203 of file sorption_base.hh.

std::vector<unsigned int> SorptionBase::substance_global_idx_
protected

Mapping from local indexing of substances to global.

Definition at line 228 of file sorption_base.hh.

std::vector<double> SorptionBase::table_limit_
protected

Concentration table limits of species dissolved in water.

Definition at line 211 of file sorption_base.hh.


The documentation for this class was generated from the following files: