Flow123d  JS_before_hm-979-g397e552
Public Types | Public Member Functions | List of all members
AdvectionDiffusionModel Class Referenceabstract

#include <advection_diffusion_model.hh>

Inheritance diagram for AdvectionDiffusionModel:
Inheritance graph
[legend]

Public Types

enum  Abstract_bc_types { abc_inflow, abc_dirichlet, abc_total_flux, abc_diffusive_flux }
 

Public Member Functions

virtual void init_from_input (const Input::Record &in_rec)=0
 Read necessary data from input record. More...
 
virtual void compute_mass_matrix_coefficient (const Armor::array &point_list, const ElementAccessor< 3 > &ele_acc, std::vector< double > &mm_coef)=0
 
virtual void compute_retardation_coefficient (const Armor::array &point_list, const ElementAccessor< 3 > &ele_acc, std::vector< std::vector< double > > &ret_coef)=0
 
virtual 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)=0
 
virtual void compute_init_cond (const Armor::array &point_list, const ElementAccessor< 3 > &ele_acc, std::vector< std::vector< double > > &init_values)=0
 
virtual void get_bc_type (const ElementAccessor< 3 > &ele_acc, arma::uvec &bc_types)=0
 
virtual 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)=0
 Return data for diffusive or total flux b.c. More...
 
virtual void get_flux_bc_sigma (unsigned int index, const Armor::array &point_list, const ElementAccessor< 3 > &ele_acc, std::vector< double > &bc_sigma)=0
 Return transition coefficient for flux b.c. More...
 
virtual 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)=0
 
virtual void compute_sources_sigma (const Armor::array &point_list, const ElementAccessor< 3 > &ele_acc, std::vector< std::vector< double > > &sources_sigma)=0
 
virtual ~AdvectionDiffusionModel ()
 Destructor. More...
 

Detailed Description

AdvectionDiffusionModel is a base class for description of a physical process described by the advection-diffusion partial differential equation (PDE). The derived classes define input parameters and implement methods that calculate coefficients of the PDE. These methods are then used by a template class for numerical solution, whose specialization derives from the model class.

Definition at line 34 of file advection_diffusion_model.hh.

Member Enumeration Documentation

Enumerator
abc_inflow 
abc_dirichlet 
abc_total_flux 
abc_diffusive_flux 

Definition at line 37 of file advection_diffusion_model.hh.

Constructor & Destructor Documentation

virtual AdvectionDiffusionModel::~AdvectionDiffusionModel ( )
inlinevirtual

Destructor.

Definition at line 164 of file advection_diffusion_model.hh.

Member Function Documentation

virtual void AdvectionDiffusionModel::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 
)
pure virtual

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).

Implemented in HeatTransferModel, and ConcentrationTransportModel.

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

Compute initial conditions.

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

Implemented in HeatTransferModel, and ConcentrationTransportModel.

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

Compute coefficients of mass matrix.

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

Implemented in HeatTransferModel, and ConcentrationTransportModel.

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

Compute retardation coefficients due to sorption.

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

Implemented in HeatTransferModel, and ConcentrationTransportModel.

virtual void AdvectionDiffusionModel::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 
)
pure virtual

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).

Implemented in HeatTransferModel, and ConcentrationTransportModel.

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

Compute coefficients of volume sources.

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

Implemented in HeatTransferModel, and ConcentrationTransportModel.

virtual void AdvectionDiffusionModel::get_bc_type ( const ElementAccessor< 3 > &  ele_acc,
arma::uvec &  bc_types 
)
pure virtual

Return types of boundary conditions for each solution component.

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

Implemented in HeatTransferModel, and ConcentrationTransportModel.

virtual void AdvectionDiffusionModel::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 
)
pure virtual

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).

Implemented in HeatTransferModel, and ConcentrationTransportModel.

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

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).

Implemented in HeatTransferModel, and ConcentrationTransportModel.

virtual void AdvectionDiffusionModel::init_from_input ( const Input::Record in_rec)
pure virtual

Read necessary data from input record.

Implemented in HeatTransferModel, and ConcentrationTransportModel.


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