Flow123d
Classes | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
DualPorosity Class Reference

#include <dual_por_exchange.hh>

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

Classes

class  EqData
 

Public Member Functions

 DualPorosity (Mesh &init_mesh, Input::Record in_rec)
 
 ~DualPorosity (void)
 
void make_reactions ()
 
void update_solution (void) override
 
void zero_time_step () override
 
void output_data (void) override
 Output method. More...
 
void output_vector_gather (void) override
 
void set_porosity (Field< 3, FieldValue< 3 >::Scalar > &por_m)
 
double ** compute_reaction (double **concentrations, int loc_el) override
 
- Public Member Functions inherited from ReactionTerm
 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...
 
ReactionTermnames (const std::vector< string > &names)
 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 initialize ()
 Initialize fields. More...
 
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 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

 DualPorosity ()
 
void allocate_output_mpi (void)
 
- Protected Member Functions inherited from ReactionTerm
virtual void init_from_input (Input::Record in_rec)
 

Protected Attributes

double ** conc_immobile
 
EqData data_
 
Input::Array output_array
 
FieldSet input_data_set_
 
ReactionTermreaction_mobile
 Reaction running in mobile zone. More...
 
ReactionTermreaction_immobile
 Reaction running in immobile zone. More...
 
members used in output routines
Vec * vconc_immobile
 PETSC concentration vector for immobile phase (parallel). More...
 
Vec * vconc_immobile_out
 PETSC concentration vector output for immobile phase (gathered - sequential) More...
 
double ** conc_immobile_out
 concentration array output for immobile phase (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...
 
vector< string > names_
 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_
 

Static Protected Attributes

static const double min_dt = 0
 

Detailed Description

Definition at line 23 of file dual_por_exchange.hh.

Constructor & Destructor Documentation

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

Definition at line 81 of file dual_por_exchange.cc.

DualPorosity::~DualPorosity ( void  )

Destructor.

Definition at line 87 of file dual_por_exchange.cc.

DualPorosity::DualPorosity ( )
protected

This method disables to use constructor without parameters.

Member Function Documentation

void DualPorosity::allocate_output_mpi ( void  )
protected

Definition at line 368 of file dual_por_exchange.cc.

Here is the caller graph for this function:

double ** DualPorosity::compute_reaction ( double **  concentrations,
int  loc_el 
)
overridevirtual

Computation of reaction term on a single element. Inputs should be loc_el and local copies of concentrations of the element, which is then returned.

Reimplemented from ReactionTerm.

Definition at line 303 of file dual_por_exchange.cc.

Here is the caller graph for this function:

void DualPorosity::make_reactions ( )

Definition at line 115 of file dual_por_exchange.cc.

Here is the caller graph for this function:

void DualPorosity::output_data ( void  )
overridevirtual

Output method.

Some reaction models have their own data to output (sorption, dual porosity) - this is where it must be solved. 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 417 of file dual_por_exchange.cc.

void DualPorosity::output_vector_gather ( void  )
overridevirtual

Communicate parallel concentration vectors into sequential output vector.

Reimplemented from ReactionTerm.

Definition at line 390 of file dual_por_exchange.cc.

Here is the caller graph for this function:

void DualPorosity::set_porosity ( Field< 3, FieldValue< 3 >::Scalar > &  por_m)

Set the porosity field which is passed from transport.

Definition at line 108 of file dual_por_exchange.cc.

void DualPorosity::update_solution ( void  )
overridevirtual

Updates the solution according to the dual porosity model.

Reimplemented from EquationBase.

Definition at line 286 of file dual_por_exchange.cc.

void DualPorosity::zero_time_step ( )
overridevirtual

Initialization routines after all necessary members have been set. It also sets and initializes possible following reaction models.

Reimplemented from EquationBase.

Definition at line 174 of file dual_por_exchange.cc.

Member Data Documentation

double** DualPorosity::conc_immobile
protected

Pointer to thwodimensional array[species][elements] containing concentrations either in immobile.

Definition at line 93 of file dual_por_exchange.hh.

double** DualPorosity::conc_immobile_out
protected

concentration array output for immobile phase (gathered - sequential)

Definition at line 119 of file dual_por_exchange.hh.

EqData DualPorosity::data_
protected

Equation data - all data field are in this set.

Definition at line 98 of file dual_por_exchange.hh.

FieldSet DualPorosity::input_data_set_
protected

Input data set - fields in this set are read from the input file.

Definition at line 105 of file dual_por_exchange.hh.

Record DualPorosity::input_type
static
Initial value:
= Record("DualPorosity",
"Dual porosity model in transport problems.\n"
"Provides computing the concentration of substances in mobile and immobile zone.\n"
)
.declare_key("input_fields", Array(DualPorosity::EqData().make_field_descriptor_type("DualPorosity")), Default::obligatory(),
"Containes region specific data necessary to construct dual porosity model.")
.declare_key("reaction_mobile", ReactionTerm::input_type, Default::optional(), "Reaction model in mobile zone.")
.declare_key("reaction_immobile", ReactionTerm::input_type, Default::optional(), "Reaction model in immobile zone.")
.declare_key("output_fields", Array(EqData::output_selection),
Default("conc_immobile"), "List of fields to write to output stream.")

Static variable for new input data types input

Definition at line 29 of file dual_por_exchange.hh.

const double DualPorosity::min_dt = 0
staticprotected

Minimal time for which the analytical solution of dual porosity concentrations are evaluated. Else it is replaced with simple forward difference approximation.

Definition at line 113 of file dual_por_exchange.hh.

Input::Array DualPorosity::output_array
protected

Definition at line 100 of file dual_por_exchange.hh.

ReactionTerm* DualPorosity::reaction_immobile
protected

Reaction running in immobile zone.

Definition at line 108 of file dual_por_exchange.hh.

ReactionTerm* DualPorosity::reaction_mobile
protected

Reaction running in mobile zone.

Definition at line 107 of file dual_por_exchange.hh.

Vec* DualPorosity::vconc_immobile
protected

PETSC concentration vector for immobile phase (parallel).

Definition at line 117 of file dual_por_exchange.hh.

Vec* DualPorosity::vconc_immobile_out
protected

PETSC concentration vector output for immobile phase (gathered - sequential)

Definition at line 118 of file dual_por_exchange.hh.


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