19 #ifndef CONC_TRANS_MODEL_HH_ 20 #define CONC_TRANS_MODEL_HH_ 22 #include <boost/exception/info.hpp> 42 namespace Input {
class Record; }
88 static constexpr
const char *
name() {
return "Solute_AdvectionDiffusion"; }
106 void compute_mass_matrix_coefficient(
const Armor::array &point_list,
110 void compute_retardation_coefficient(
const Armor::array &point_list,
116 void compute_advection_diffusion_coefficients(
const Armor::array &point_list,
127 arma::uvec &bc_types)
override;
129 void get_flux_bc_data(
unsigned int index,
136 void get_flux_bc_sigma(
unsigned int index,
141 void compute_source_coefficients(
const Armor::array &point_list,
147 void compute_sources_sigma(
const Armor::array &point_list,
155 {
return substances_.size(); }
159 {
return substances_; }
167 void set_balance_object(std::shared_ptr<Balance> balance)
override;
170 {
return subst_idx; }
173 { output_stream_ = stream; }
176 {
return output_stream_; }
190 static IT::Record get_input_type(
const string &implementation,
const string &description);
202 void calculate_dispersivity_tensor(
const arma::vec3 &velocity,
206 double water_content,
SubstanceList substances_
Transported substances.
MultiField< 3, FieldValue< 3 >::Scalar > output_field
MultiField< 3, FieldValue< 3 >::Scalar > init_conc
Initial concentrations.
void set_output_stream(std::shared_ptr< OutputTime > stream)
Setter for output stream.
MultiField< 3, FieldValue< 3 >::Scalar > sorption_coefficient
Coefficient of linear sorption.
Class template representing a field with values dependent on: point, element, and region...
SubstanceList & substances() override
Returns reference to the vector of substance names.
ConcentrationTransportBase FactoryBaseType
static constexpr const char * name()
static string default_output_field()
double solvent_density_
Density of liquid (a global constant).
Field< 3, FieldValue< 3 >::Scalar > rock_density
Rock matrix density.
const vector< unsigned int > & get_subst_idx()
Return substance indices used in balance.
MultiField< 3, FieldValue< 3 >::Scalar > disp_t
Transversal dispersivity (for each substance).
BCMultiField< 3, FieldValue< 3 >::Enum > bc_type
Type of boundary condition (see also BC_Type)
BCMultiField< 3, FieldValue< 3 >::Scalar > bc_dirichlet_value
Prescribed concentration for Dirichlet/reference concentration for flux b.c.
unsigned int n_substances() override
Returns number of transported substances.
The class for outputting data during time.
BCMultiField< 3, FieldValue< 3 >::Scalar > bc_robin_sigma
Transition coefficient in total/diffusive flux b.c.
std::shared_ptr< OutputTime > output_stream() override
Getter for output stream.
MultiField< 3, FieldValue< 3 >::Scalar > disp_l
Longitudal dispersivity (for each substance).
Discontinuous Galerkin method for equation of transport with dispersion.
std::shared_ptr< OutputTime > output_stream_
BCMultiField< 3, FieldValue< 3 >::Scalar > bc_flux
Flux value in total/diffusive flux b.c.
Classes for storing substance data.
void set_target_time(double) override
MultiField< 3, FieldValue< 3 >::TensorFixed > diff_m
Molecular diffusivity (for each substance).
vector< unsigned int > subst_idx
List of indices used to call balance methods for a set of quantities.
Class for representation of a vector of fields of the same physical quantity.