Flow123d  JS_before_hm-1008-g3dab983
Classes | Public Types | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
ConcentrationTransportModel Class Referenceabstract

#include <concentration_model.hh>

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

Classes

class  ModelEqData
 

Public Types

typedef ConcentrationTransportBase FactoryBaseType
 
- Public Types inherited from AdvectionDiffusionModel
enum  Abstract_bc_types { abc_inflow, abc_dirichlet, abc_total_flux, abc_diffusive_flux }
 
- Public Types inherited from ConcentrationTransportBase
typedef std::vector< std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > > FieldFEScalarVec
 

Public Member Functions

 ConcentrationTransportModel (Mesh &mesh, const Input::Record &in_rec)
 
void init_from_input (const Input::Record &in_rec) override
 Read necessary data from input record. More...
 
void compute_mass_matrix_coefficient (const Armor::array &point_list, const ElementAccessor< 3 > &ele_acc, std::vector< double > &mm_coef) override
 
void compute_retardation_coefficient (const Armor::array &point_list, const ElementAccessor< 3 > &ele_acc, std::vector< std::vector< double > > &ret_coef) override
 
void compute_advection_diffusion_coefficients (const Armor::array &point_list, const std::vector< arma::vec3 > &velocity, const ElementAccessor< 3 > &ele_acc, std::vector< std::vector< arma::vec3 > > &ad_coef, std::vector< std::vector< arma::mat33 > > &dif_coef) override
 
void compute_init_cond (const Armor::array &point_list, const ElementAccessor< 3 > &ele_acc, std::vector< std::vector< double > > &init_values) override
 
void get_bc_type (const ElementAccessor< 3 > &ele_acc, arma::uvec &bc_types) override
 
void get_flux_bc_data (unsigned int index, const Armor::array &point_list, const ElementAccessor< 3 > &ele_acc, std::vector< double > &bc_flux, std::vector< double > &bc_sigma, std::vector< double > &bc_ref_value) override
 Return data for diffusive or total flux b.c. More...
 
void get_flux_bc_sigma (unsigned int index, const Armor::array &point_list, const ElementAccessor< 3 > &ele_acc, std::vector< double > &bc_sigma) override
 Return transition coefficient for flux b.c. More...
 
void compute_source_coefficients (const Armor::array &point_list, const ElementAccessor< 3 > &ele_acc, std::vector< std::vector< double > > &sources_conc, std::vector< std::vector< double > > &sources_density, std::vector< std::vector< double > > &sources_sigma) override
 
void compute_sources_sigma (const Armor::array &point_list, const ElementAccessor< 3 > &ele_acc, std::vector< std::vector< double > > &sources_sigma) override
 
 ~ConcentrationTransportModel () override
 
unsigned int n_substances () override
 Returns number of transported substances. More...
 
SubstanceListsubstances () override
 Returns reference to the vector of substance names. More...
 
void set_target_time (double) override
 
void set_balance_object (std::shared_ptr< Balance > balance) override
 
const vector< unsigned int > & get_subst_idx ()
 Return substance indices used in balance. More...
 
void set_output_stream (std::shared_ptr< OutputTime > stream)
 Setter for output stream. More...
 
std::shared_ptr< OutputTimeoutput_stream () override
 Getter for output stream. More...
 
virtual ModelEqDatadata ()=0
 Derived class should implement getter for ModelEqData instance. More...
 
- Public Member Functions inherited from AdvectionDiffusionModel
virtual ~AdvectionDiffusionModel ()
 Destructor. More...
 
- Public Member Functions inherited from ConcentrationTransportBase
 ConcentrationTransportBase (Mesh &init_mesh, const Input::Record in_rec)
 
virtual bool evaluate_time_constraint (double &time_constraint)=0
 Computes a constraint for time step. More...
 
virtual void compute_p0_interpolation ()=0
 Compute P0 interpolation of the solution (used in reaction term). More...
 
virtual void update_after_reactions (bool solution_changed)=0
 Perform changes to transport solution after reaction step. More...
 
virtual FieldFEScalarVecget_p0_interpolation ()=0
 Getter for P0 interpolation by FieldFE. More...
 
virtual Vec get_component_vec (unsigned int sbi)=0
 Return PETSc vector with solution for sbi-th substance. More...
 
virtual void get_par_info (LongIdx *&el_4_loc, Distribution *&el_ds)=0
 Return array of indices of local elements and parallel distribution of elements. More...
 
virtual LongIdxget_row_4_el ()=0
 Return global array of order of elements within parallel vector. More...
 
- Public Member Functions inherited from EquationBase
 EquationBase ()
 
 EquationBase (Mesh &mesh, const Input::Record in_rec)
 
virtual void initialize ()
 
virtual void zero_time_step ()
 
virtual ~EquationBase ()
 
virtual void update_solution ()
 
virtual void choose_next_time ()
 
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 ()
 
FieldSetdata ()
 
virtual void output_data ()
 Write computed fields. More...
 

Protected Member Functions

void calculate_dispersivity_tensor (const arma::vec3 &velocity, const arma::mat33 &Dm, double alphaL, double alphaT, double water_content, double porosity, double cross_cut, arma::mat33 &K)
 

Static Protected Member Functions

static IT::Record get_input_type (const string &implementation, const string &description)
 

Protected Attributes

SubstanceList substances_
 Transported substances. More...
 
vector< unsigned int > subst_idx
 List of indices used to call balance methods for a set of quantities. More...
 
double solvent_density_
 Density of liquid (a global constant). More...
 
std::shared_ptr< OutputTimeoutput_stream_
 
- 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...
 

Additional Inherited Members

- Static Public Member Functions inherited from ConcentrationTransportBase
static Input::Type::Abstractget_input_type ()
 Common specification of the input record for secondary equations. More...
 
- Static Public Member Functions inherited from EquationBase
static Input::Type::Recordrecord_template ()
 Template Record with common keys for derived equations. More...
 

Detailed Description

Definition at line 48 of file concentration_model.hh.

Member Typedef Documentation

Definition at line 99 of file concentration_model.hh.

Constructor & Destructor Documentation

ConcentrationTransportModel::ConcentrationTransportModel ( Mesh mesh,
const Input::Record in_rec 
)

Definition at line 162 of file concentration_model.cc.

ConcentrationTransportModel::~ConcentrationTransportModel ( )
override

Definition at line 385 of file concentration_model.cc.

Member Function Documentation

void ConcentrationTransportModel::calculate_dispersivity_tensor ( const arma::vec3 velocity,
const arma::mat33 Dm,
double  alphaL,
double  alphaT,
double  water_content,
double  porosity,
double  cross_cut,
arma::mat33 K 
)
protected

Formula to calculate the dispersivity tensor.

Parameters
velocityFluid velocity.
DmMolecular diffusivity.
alphaLLongitudal dispersivity.
alphaTTransversal dispersivity.
porosityPorosity.
cross_cutCross-section.
KDispersivity tensor (output).

Definition at line 222 of file concentration_model.cc.

Here is the caller graph for this function:

void ConcentrationTransportModel::compute_advection_diffusion_coefficients ( const Armor::array point_list,
const std::vector< arma::vec3 > &  velocity,
const ElementAccessor< 3 > &  ele_acc,
std::vector< std::vector< arma::vec3 > > &  ad_coef,
std::vector< std::vector< arma::mat33 > > &  dif_coef 
)
overridevirtual

Compute coefficients of stiffness matrix.

Parameters
point_listPoints at which to evaluate.
velocityVelocity field (input). Temporary solution before we can pass data from other equations.
ele_accElement accessor.
ad_coefCoefficients of advection (output).
dif_coefCoefficients of diffusion (output).

Implements AdvectionDiffusionModel.

Definition at line 270 of file concentration_model.cc.

void ConcentrationTransportModel::compute_init_cond ( const Armor::array point_list,
const ElementAccessor< 3 > &  ele_acc,
std::vector< std::vector< double > > &  init_values 
)
overridevirtual

Compute initial conditions.

Parameters
point_listPoints at which to evaluate.
ele_accElement accessor.
init_valuesVector of intial values (output).

Implements AdvectionDiffusionModel.

Definition at line 301 of file concentration_model.cc.

void ConcentrationTransportModel::compute_mass_matrix_coefficient ( const Armor::array point_list,
const ElementAccessor< 3 > &  ele_acc,
std::vector< double > &  mm_coef 
)
overridevirtual

Compute coefficients of mass matrix.

Parameters
point_listPoints at which to evaluate.
ele_accElement accessor.
mm_coefCoefficient vector (output).

Implements AdvectionDiffusionModel.

Definition at line 174 of file concentration_model.cc.

void ConcentrationTransportModel::compute_retardation_coefficient ( const Armor::array point_list,
const ElementAccessor< 3 > &  ele_acc,
std::vector< std::vector< double > > &  ret_coef 
)
overridevirtual

Compute retardation coefficients due to sorption.

Parameters
point_listPoints at which to evaluate.
ele_accElement accessor.
ret_coefCoefficient vector (output).

Implements AdvectionDiffusionModel.

Definition at line 190 of file concentration_model.cc.

void ConcentrationTransportModel::compute_source_coefficients ( const Armor::array point_list,
const ElementAccessor< 3 > &  ele_acc,
std::vector< std::vector< double > > &  sources_conc,
std::vector< std::vector< double > > &  sources_density,
std::vector< std::vector< double > > &  sources_sigma 
)
overridevirtual

Compute coefficients of volume sources.

Parameters
point_listPoints at which to evaluate.
ele_accElement accessor.
sources_concSource concentrations (output).
sources_densitySource densities (output).
sources_sigmaSource sigmas (output).

Implements AdvectionDiffusionModel.

Definition at line 344 of file concentration_model.cc.

void ConcentrationTransportModel::compute_sources_sigma ( const Armor::array point_list,
const ElementAccessor< 3 > &  ele_acc,
std::vector< std::vector< double > > &  sources_sigma 
)
overridevirtual

Compute coefficients of volume sources.

Parameters
point_listPoints at which to evaluate.
ele_accElement accessor.
sources_sigmaSource sigmas (output).

Implements AdvectionDiffusionModel.

Definition at line 368 of file concentration_model.cc.

virtual ModelEqData& ConcentrationTransportModel::data ( )
pure virtual

Derived class should implement getter for ModelEqData instance.

Here is the caller graph for this function:

void ConcentrationTransportModel::get_bc_type ( const ElementAccessor< 3 > &  ele_acc,
arma::uvec &  bc_types 
)
overridevirtual

Return types of boundary conditions for each solution component.

Parameters
ele_accElement accessor.
bc_typesVector of bc. types (output, see BC_Type)

Implements AdvectionDiffusionModel.

Definition at line 309 of file concentration_model.cc.

void ConcentrationTransportModel::get_flux_bc_data ( unsigned int  index,
const Armor::array point_list,
const ElementAccessor< 3 > &  ele_acc,
std::vector< double > &  bc_flux,
std::vector< double > &  bc_sigma,
std::vector< double > &  bc_ref_value 
)
overridevirtual

Return data for diffusive or total flux b.c.

The flux can in general take the form

cross_section*(flux + sigma*(solution - ref_value))

Parameters
indexComponent index.
point_listPoints at which to evaluate.
ele_accElement accessor.
bc_fluxNeumann flux (output).
bc_sigmaTransition parameter (output).
bc_ref_valueReference value (output).

Implements AdvectionDiffusionModel.

Definition at line 320 of file concentration_model.cc.

void ConcentrationTransportModel::get_flux_bc_sigma ( unsigned int  index,
const Armor::array point_list,
const ElementAccessor< 3 > &  ele_acc,
std::vector< double > &  bc_sigma 
)
overridevirtual

Return transition coefficient for flux b.c.

In assembly of system matrix one does not teed all data for total/diffusive flux b.c. This method therefore returns only the sigma coefficient.

Parameters
indexComponent index.
point_listPoints at which to evaluate.
ele_accElement accessor.
bc_sigmaTransition parameter (output).

Implements AdvectionDiffusionModel.

Definition at line 335 of file concentration_model.cc.

IT::Record ConcentrationTransportModel::get_input_type ( const string &  implementation,
const string &  description 
)
staticprotected

Create input type that can be passed to the derived class.

Parameters
implementationString characterizing the numerical method, e.g. DG, FEM, FVM.
descriptionComment used to describe the record key.
Returns

Definition at line 142 of file concentration_model.cc.

const vector<unsigned int>& ConcentrationTransportModel::get_subst_idx ( )
inlinevirtual

Return substance indices used in balance.

Implements ConcentrationTransportBase.

Definition at line 169 of file concentration_model.hh.

void ConcentrationTransportModel::init_from_input ( const Input::Record in_rec)
overridevirtual

Read necessary data from input record.

Implements AdvectionDiffusionModel.

Definition at line 167 of file concentration_model.cc.

unsigned int ConcentrationTransportModel::n_substances ( )
inlineoverridevirtual

Returns number of transported substances.

Implements ConcentrationTransportBase.

Definition at line 154 of file concentration_model.hh.

Here is the caller graph for this function:

std::shared_ptr<OutputTime> ConcentrationTransportModel::output_stream ( )
inlineoverridevirtual

Getter for output stream.

Implements ConcentrationTransportBase.

Definition at line 175 of file concentration_model.hh.

void ConcentrationTransportModel::set_balance_object ( std::shared_ptr< Balance balance)
overridevirtual

Use Balance object from upstream equation (e.g. in various couplings) instead of own instance.

Implements ConcentrationTransportBase.

Definition at line 389 of file concentration_model.cc.

void ConcentrationTransportModel::set_output_stream ( std::shared_ptr< OutputTime stream)
inlinevirtual

Setter for output stream.

Implements ConcentrationTransportBase.

Definition at line 172 of file concentration_model.hh.

void ConcentrationTransportModel::set_target_time ( double  target_time)
inlineoverridevirtual

Set time interval which is considered as one time step by TransportOperatorSplitting. In particular the velocity field dosn't change over this interval.

Dependencies:

velocity, porosity -> matrix, source_vector matrix -> time_step

data_read_times -> time_step (not necessary if we won't stick to jump times) data -> source_vector time_step -> scaling

Implements ConcentrationTransportBase.

Definition at line 165 of file concentration_model.hh.

SubstanceList& ConcentrationTransportModel::substances ( )
inlineoverridevirtual

Returns reference to the vector of substance names.

Implements ConcentrationTransportBase.

Definition at line 158 of file concentration_model.hh.

Member Data Documentation

std::shared_ptr<OutputTime> ConcentrationTransportModel::output_stream_
protected

Definition at line 220 of file concentration_model.hh.

double ConcentrationTransportModel::solvent_density_
protected

Density of liquid (a global constant).

Definition at line 218 of file concentration_model.hh.

vector<unsigned int> ConcentrationTransportModel::subst_idx
protected

List of indices used to call balance methods for a set of quantities.

Definition at line 215 of file concentration_model.hh.

SubstanceList ConcentrationTransportModel::substances_
protected

Transported substances.

Definition at line 212 of file concentration_model.hh.


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