Flow123d  jenkins-Flow123d-windows-release-multijob-285
Classes | Public Member Functions | Static Public Member Functions | Static Public Attributes | 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

class  EqData
 
struct  SorptionRecord
 

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...
 
- 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 (OutputTime &ostream)
 Sets the output stream which is given from transport class. More...
 
ReactionTermconcentration_matrix (double **concentration, Distribution *conc_distr, int *el_4_loc, int *row_4_el)
 
- 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)
 
virtual void set_time_lower_constraint (double dt)
 
TimeGovernor const & time ()
 
virtual void set_time_governor (TimeGovernor &time)
 
double planned_time ()
 
double solved_time ()
 
Meshmesh ()
 
TimeMark::Type mark_type ()
 
FieldSetdata ()
 
virtual void get_solution_vector (double *&vector, unsigned int &size)
 
virtual void get_parallel_solution_vector (Vec &vector)
 

Static Public Member Functions

static Input::Type::Record record_factory (SorptionRecord::Type)
 Creates the input record for different cases of sorption model (simple or in dual porosity). More...
 
static Input::Type::Selection make_output_selection (const string &output_field_name, const string &selection_name)
 

Static Public Attributes

static Input::Type::Record input_type
 
- Static Public Attributes inherited from ReactionTerm
static Input::Type::AbstractRecord input_type = AbstractRecord("ReactionTerm", "Equation for reading information about simple chemical reactions.")
 
static Input::Type::Record input_type_output_record
 Specification of the output record. 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 allocate_output_mpi (void)
 Allocates petsc vectors, prepares them for output and creates vector scatter. More...
 
void output_vector_gather (void) override
 Gathers all the parallel vectors to enable them to be output. More...
 
double ** compute_reaction (double **concentrations, int loc_el)
 
virtual void isotherm_reinit (std::vector< Isotherm > &isotherms, const ElementAccessor< 3 > &elm)=0
 Reinitializes the isotherm. More...
 
void make_tables (void)
 

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< Isotherm > > isotherms
 
unsigned int n_substances_
 
std::vector< unsigned int > substance_global_idx_
 Mapping from local indexing of substances to global. More...
 
double ** conc_solid
 
Input::Array output_array
 
Input::Type::Selection output_selection
 
ReactionTermreaction_liquid
 
ReactionTermreaction_solid
 
members used in output routines
VecScatter vconc_out_scatter
 Output vector scatter. More...
 
Vec * vconc_solid
 PETSC sorbed concentration vector (parallel). More...
 
std::vector< VectorSeqDoubleconc_solid_out
 sorbed concentration array output (gathered - sequential) More...
 
- Protected Attributes inherited from ReactionTerm
double ** concentration_matrix_
 
int * el_4_loc_
 Indices of elements belonging to local dofs. More...
 
int * row_4_el_
 Indices of rows belonging to elements. More...
 
Distributiondistribution_
 Pointer to reference to distribution of elements between processors. More...
 
SubstanceList substances_
 Names belonging to substances. More...
 
OutputTimeoutput_stream_
 Pointer to a transport output stream. 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_data_
 

Detailed Description

Definition at line 24 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 117 of file sorption_base.cc.

SorptionBase::~SorptionBase ( void  )
virtual

Destructor.

Definition at line 126 of file sorption_base.cc.

SorptionBase::SorptionBase ( )
protected

This method disables to use constructor without parameters.

Member Function Documentation

void SorptionBase::allocate_output_mpi ( void  )
protected

Allocates petsc vectors, prepares them for output and creates vector scatter.

Definition at line 529 of file sorption_base.cc.

Here is the caller graph for this function:

double ** SorptionBase::compute_reaction ( double **  concentrations,
int  loc_el 
)
protectedvirtual

For simulation of sorption in just one element either inside of MOBILE or IMMOBILE pores.

Implements ReactionTerm.

Definition at line 484 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."   
)
void SorptionBase::initialize ( )
overridevirtual

Prepares the object to usage.

Allocating memory, reading input, initialization of fields.

Reimplemented from EquationBase.

Definition at line 218 of file sorption_base.cc.

void SorptionBase::initialize_fields ( )
protected

Initializes field sets.

Definition at line 369 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 320 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 274 of file sorption_base.cc.

Here is the caller graph for this function:

virtual void SorptionBase::isotherm_reinit ( std::vector< Isotherm > &  isotherms,
const ElementAccessor< 3 > &  elm 
)
protectedpure virtual

Reinitializes the isotherm.

On data change the isotherm is recomputed, possibly new interpolation table is made. Pure virtual method.

Implemented in SorptionImmob, SorptionMob, SorptionDual, and SorptionSimple.

Here is the caller graph for this function:

static Input::Type::Selection SorptionBase::make_output_selection ( const string &  output_field_name,
const string &  selection_name 
)
inlinestatic

Definition at line 46 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 143 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 457 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 563 of file sorption_base.cc.

void SorptionBase::output_vector_gather ( void  )
overrideprotectedvirtual

Gathers all the parallel vectors to enable them to be output.

Reimplemented from ReactionTerm.

Definition at line 552 of file sorption_base.cc.

Here is the caller graph for this function:

Record SorptionBase::record_factory ( SorptionRecord::Type  fact)
static

Creates the input record for different cases of sorption model (simple or in dual porosity).

Definition at line 85 of file sorption_base.cc.

void SorptionBase::set_initial_condition ( )
protected

Reads and sets initial condition for concentration in solid.

Definition at line 417 of file sorption_base.cc.

Here is the caller graph for this function:

SorptionBase::TYPEDEF_ERR_INFO ( EI_ArrayName  ,
std::string   
)
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 436 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 397 of file sorption_base.cc.

Member Data Documentation

double** SorptionBase::conc_solid
protected

Array for storage infos about sorbed species concentrations.

Definition at line 200 of file sorption_base.hh.

std::vector<VectorSeqDouble> SorptionBase::conc_solid_out
protected

sorbed concentration array output (gathered - sequential)

Definition at line 215 of file sorption_base.hh.

EqData* SorptionBase::data_
protected

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

Definition at line 165 of file sorption_base.hh.

Record SorptionBase::input_type
static
Initial value:
= Record("Sorption", "AUXILIARY RECORD. Should not be directly part of the input tree.")
.declare_key("substances", Array(String(),1), Default::obligatory(),
"Names of the substances that take part in the sorption model.")
.declare_key("solvent_density", Double(0.0), Default("1.0"),
"Density of the solvent.")
.declare_key("substeps", Integer(1), Default("1000"),
"Number of equidistant substeps, molar mass and isotherm intersections")
.declare_key("solubility", Array(Double(0.0)), Default::optional(),
"Specifies solubility limits of all the sorbing species.")
.declare_key("table_limits", Array(Double(0.0)), Default::optional(),
"Specifies highest aqueous concentration in interpolation table.")
.declare_key("input_fields", Array(EqData("").input_data_set_.make_field_descriptor_type("Sorption")), Default::obligatory(),
"Containes region specific data necessary to construct isotherms.")
.declare_key("reaction_liquid", ReactionTerm::input_type, Default::optional(), "Reaction model following the sorption in the liquid.")
.declare_key("reaction_solid", ReactionTerm::input_type, Default::optional(), "Reaction model following the sorption in the solid.")

Static variable for new input data types input

Definition at line 34 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 190 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 170 of file sorption_base.hh.

unsigned int SorptionBase::n_substances_
protected

Definition at line 192 of file sorption_base.hh.

Input::Array SorptionBase::output_array
protected

Definition at line 202 of file sorption_base.hh.

Input::Type::Selection SorptionBase::output_selection
protected

Definition at line 204 of file sorption_base.hh.

ReactionTerm* SorptionBase::reaction_liquid
protected

Reaction model that follows the sorption.

Definition at line 208 of file sorption_base.hh.

ReactionTerm* SorptionBase::reaction_solid
protected

Definition at line 209 of file sorption_base.hh.

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

Critical concentrations of species dissolved in water.

Definition at line 179 of file sorption_base.hh.

double SorptionBase::solvent_density_
protected

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

Definition at line 175 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 195 of file sorption_base.hh.

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

Concentration table limits of species dissolved in water.

Definition at line 183 of file sorption_base.hh.

VecScatter SorptionBase::vconc_out_scatter
protected

Output vector scatter.

Definition at line 213 of file sorption_base.hh.

Vec* SorptionBase::vconc_solid
protected

PETSC sorbed concentration vector (parallel).

Definition at line 214 of file sorption_base.hh.


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