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,
164 velocity_field_ptr_ = flux_field;
170 {
return substances_.size(); }
174 {
return substances_; }
182 void set_balance_object(std::shared_ptr<Balance> balance)
override;
185 {
return subst_idx; }
188 { output_stream_ = stream; }
191 {
return output_stream_; }
194 return this->velocity_field_ptr_;
210 static IT::Record get_input_type(
const string &implementation,
const string &description);
222 void calculate_dispersivity_tensor(
const arma::vec3 &velocity,
226 double water_content,
SubstanceList substances_
Transported substances.
MultiField< 3, FieldValue< 3 >::Scalar > output_field
MultiField< 3, FieldValue< 3 >::Scalar > init_conc
Initial concentrations.
std::shared_ptr< FieldFE< 3, FieldValue< 3 >::VectorFixed > > velocity_field_ptr() const
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
bool flux_changed
Indicator of change in advection vector field.
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.
void set_velocity_field(std::shared_ptr< FieldFE< 3, FieldValue< 3 >::VectorFixed >> flux_field) override
Updates the velocity field which determines some coefficients of the transport equation.
std::shared_ptr< OutputTime > output_stream() override
Getter for output stream.
std::shared_ptr< FieldFE< 3, FieldValue< 3 >::VectorFixed > > velocity_field_ptr_
Pointer to velocity field given from Flow equation.
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.