Flow123d
JS_before_hm-2198-g122e1f2e2
|
Go to the documentation of this file.
46 return arma::norm(vel, 2);
61 return (1.-por_m)*rho_s*sorp_mult*csec;
99 double tortuosity = pow(water_content, 7.0 / 3.0)/ (porosity * porosity);
108 if (fabs(v_norm) > 0) {
114 K = ((alphaL - alphaT) / v_norm) * arma::kron(velocity.t(), velocity);
124 K += alphaT*v_norm*arma::eye(3,3) + diff_m*(tortuosity*c_sec*water_content);
140 "Type of boundary condition.")
148 .
description(
"Dirichlet boundary condition (for each substance).")
154 .description(
"Flux in Neumann boundary condition.")
155 .units(
UnitSI().kg().m().s(-1).md() )
156 .input_default(
"0.0")
160 .name(
"bc_robin_sigma")
161 .description(
"Conductivity coefficient in Robin boundary condition.")
162 .units(
UnitSI().m(4).s(-1).md() )
163 .input_default(
"0.0")
168 .
description(
"Initial values for concentration of substances.")
172 .
description(
"Longitudinal dispersivity in the liquid (for each substance).")
178 .
description(
"Transverse dispersivity in the liquid (for each substance).")
184 .
description(
"Molecular diffusivity in the liquid (for each substance).")
189 .
name(
"rock_density")
195 .
name(
"sorption_coefficient")
215 .
description(
"Matrix coefficients computed by model in mass assemblation.")
220 .
description(
"Retardation coefficients computed by model in mass assemblation.")
224 .
description(
"Concentration sources output - density of substance source, only positive part is used..")
229 .
description(
"Concentration sources - Robin type, in_flux = sources_sigma * (sources_conc - mobile_conc).")
254 sorption_coefficient.setup_components();
255 sources_conc.setup_components();
256 sources_density.setup_components();
257 sources_sigma.setup_components();
258 diff_m.setup_components();
259 disp_l.setup_components();
260 disp_t.setup_components();
265 retardation_coef.set(
273 for (
unsigned int sbi=0; sbi<sorption_coefficient.size(); sbi++)
275 advection_coef.set(ad_coef_ptr_vec, 0.0);
278 fn_conc_diff_coef(), diff_m, flow_flux, v_norm, disp_l, disp_t, water_content, porosity, cross_section
287 return Selection(
"Solute_AdvectionDiffusion_BC_Type",
"Types of boundary conditions for advection-diffusion solute transport model.")
289 "Default transport boundary condition.\n"
290 "On water inflow (($(q_w \\le 0)$)), total flux is given by the reference concentration 'bc_conc'. "
291 "On water outflow we prescribe zero diffusive flux, "
292 "i.e. the mass flows out only due to advection.")
294 "Dirichlet boundary condition (($ c = c_D $)).\n"
295 "The prescribed concentration (($c_D$)) is specified by the field 'bc_conc'.")
297 "Total mass flux boundary condition.\n"
298 "The prescribed total incoming flux can have the general form (($\\delta(f_N+\\sigma_R(c_R-c) )$)), "
299 "where the absolute flux (($f_N$)) is specified by the field 'bc_flux', "
300 "the transition parameter (($\\sigma_R$)) by 'bc_robin_sigma', "
301 "and the reference concentration (($c_R$)) by 'bc_conc'.")
302 .
add_value(bc_diffusive_flux,
"diffusive_flux",
303 "Diffusive flux boundary condition.\n"
304 "The prescribed incoming mass flux due to diffusion can have the general form (($\\delta(f_N+\\sigma_R(c_R-c) )$)), "
305 "where the absolute flux (($f_N$)) is specified by the field 'bc_flux', "
306 "the transition parameter (($\\sigma_R$)) by 'bc_robin_sigma', "
307 "and the reference concentration (($c_R$)) by 'bc_conc'.")
320 "Selection of output fields for Diffusive Solute Transport DG model.");
328 description +
" for solute transport.")
331 "Density of the solvent [ (($kg.m^{-3}$)) ].");
FieldCommon & units(const UnitSI &units)
Set basic units of the field.
static IT::Selection get_output_selection()
static constexpr Mask in_rhs
A field is part of the right hand side of the equation.
MultiField< 3, FieldValue< 3 >::Scalar > sources_density_out
Concentration sources - density output.
MultiField< 3, FieldValue< 3 >::Scalar > init_condition
Initial concentrations.
static UnitSI & dimensionless()
Returns dimensionless unit.
void set_balance_object(std::shared_ptr< Balance > balance) override
MultiField< 3, FieldValue< 3 >::VectorFixed > advection_coef
Advection coefficients.
BCMultiField< 3, FieldValue< 3 >::Scalar > bc_robin_sigma
Transition coefficient in total/diffusive flux b.c.
auto disable_where(const MultiField< spacedim, typename FieldValue< spacedim >::Enum > &control_field, const vector< FieldEnum > &value_list) -> MultiField &
vector< unsigned int > subst_idx_
List of indices used to call balance methods for a set of quantities.
virtual ModelEqData & eq_data()=0
Derived class should implement getter for ModelEqData instance.
MultiField< 3, FieldValue< 3 >::Scalar > disp_t
Transversal dispersivity (for each substance).
void init_from_input(const Input::Record &in_rec) override
Read necessary data from input record.
FieldCommon & flags(FieldFlag::Flags::Mask mask)
MultiField< 3, FieldValue< 3 >::Scalar > sources_conc_out
Concentration sources - concentration output.
FieldCommon & flags_add(FieldFlag::Flags::Mask mask)
MultiField< 3, FieldValue< 3 >::Scalar > sources_sigma_out
Concentration sources - sigma output.
void init_balance(const Input::Record &in_rec)
std::shared_ptr< Balance > balance() const
static const Input::Type::Selection & get_bc_type_selection()
MultiField< 3, FieldValue< 3 >::TensorFixed > diffusion_coef
Diffusion coefficients.
std::shared_ptr< Balance > balance_
object for calculation and writing the mass balance to file.
~ConcentrationTransportModel() override
static constexpr Mask equation_result
Match result fields. These are never given by input or copy of input.
BCMultiField< 3, FieldValue< 3 >::Scalar > bc_flux
Flux value in total/diffusive flux b.c.
BCMultiField< 3, FieldValue< 3 >::Enum > bc_type
Type of boundary condition (see also BC_Type)
Class for representation SI units of Fields.
Field< 3, FieldValue< 3 >::Scalar > rock_density
Rock matrix density.
MultiField< 3, FieldValue< 3 >::Scalar > retardation_coef
Field represents retardation coefficients due to sorption.
MultiField< 3, FieldValue< 3 >::TensorFixed > diff_m
Molecular diffusivity (for each substance).
static constexpr Mask in_main_matrix
A field is part of main "stiffness matrix" of the equation.
FieldCommon & input_default(const string &input_default)
MultiField< 3, FieldValue< 3 >::Scalar > disp_l
Longitudal dispersivity (for each substance).
double solvent_density_
Density of liquid (a global constant).
MultiField< 3, FieldValue< 3 >::Scalar > sorption_coefficient
Coefficient of linear sorption.
ConcentrationTransportModel(Mesh &mesh, const Input::Record &in_rec)
BCMultiField< 3, FieldValue< 3 >::Scalar > bc_dirichlet_value
Prescribed concentration for Dirichlet/reference concentration for flux b.c.
static constexpr const char * name()
Discontinuous Galerkin method for equation of transport with dispersion.
static Input::Type::Abstract & get_input_type()
Common specification of the input record for secondary equations.
MultiField< 3, FieldValue< 3 >::Scalar > output_field
FieldCommon & input_selection(Input::Type::Selection element_selection)
FieldCommon & description(const string &description)
static constexpr Mask in_time_term
A field is part of time term of the equation.
Field< 3, FieldValue< 3 >::Scalar > v_norm
Velocity norm field.
FieldCommon & name(const string &name)
Field< 3, FieldValue< 3 >::Scalar > mass_matrix_coef
Field represents coefficients of mass matrix.