Flow123d  release_2.1.0-87-gfbc1563
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

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 (double &time_constraint) override
 Computes a constraint for time step. 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 (std::shared_ptr< 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, 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 ()
 
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 const Input::Type::Recordget_input_type ()
 
static Input::Type::Instance make_output_type (const string &equation_name, const string &output_field_name)
 
- 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 ()
 

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) override
 
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
 
std::shared_ptr< ReactionTermreaction_liquid
 
std::shared_ptr< 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...
 
std::shared_ptr< 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_
 
std::shared_ptr< Balancebalance_
 object for calculation and writing the mass balance to file. More...
 

Detailed Description

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

SorptionBase::~SorptionBase ( void  )
virtual

Destructor.

Definition at line 118 of file sorption_base.cc.

SorptionBase::SorptionBase ( )
protected

This method disables to use constructor without parameters.

Here is the caller graph for this function:

Member Function Documentation

void SorptionBase::allocate_output_mpi ( void  )
protected

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

Definition at line 482 of file sorption_base.cc.

Here is the caller graph for this function:

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

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

Implements ReactionTerm.

Definition at line 437 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 ( double &  time_constraint)
inlineoverridevirtual

Computes a constraint for time step.

Implements ReactionTerm.

Definition at line 126 of file sorption_base.hh.

const Record & SorptionBase::get_input_type ( )
static

Static variable for new input data types input

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

void SorptionBase::initialize_fields ( )
protected

Initializes field sets.

Definition at line 315 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 266 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 220 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::Instance SorptionBase::make_output_type ( const string &  equation_name,
const string &  output_field_name 
)
inlinestatic

Definition at line 59 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 137 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 410 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 516 of file sorption_base.cc.

Here is the caller graph for this function:

void SorptionBase::output_vector_gather ( void  )
overrideprotectedvirtual

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

Reimplemented from ReactionTerm.

Definition at line 505 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 370 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 389 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 348 of file sorption_base.cc.

Member Data Documentation

double** SorptionBase::conc_solid
protected

Array for storage infos about sorbed species concentrations.

Definition at line 214 of file sorption_base.hh.

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

sorbed concentration array output (gathered - sequential)

Definition at line 231 of file sorption_base.hh.

EqData* SorptionBase::data_
protected

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

Definition at line 179 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 204 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 184 of file sorption_base.hh.

unsigned int SorptionBase::n_substances_
protected

Definition at line 206 of file sorption_base.hh.

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

Reaction model that follows the sorption.

Definition at line 223 of file sorption_base.hh.

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

Definition at line 224 of file sorption_base.hh.

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

Critical concentrations of species dissolved in water.

Definition at line 193 of file sorption_base.hh.

double SorptionBase::solvent_density_
protected

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

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

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

Concentration table limits of species dissolved in water.

Definition at line 197 of file sorption_base.hh.

VecScatter SorptionBase::vconc_out_scatter
protected

Output vector scatter.

Definition at line 228 of file sorption_base.hh.

Vec* SorptionBase::vconc_solid
protected

PETSC sorbed concentration vector (parallel).

Definition at line 230 of file sorption_base.hh.


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