Flow123d
JB_transport-d4c8564
|
Go to the documentation of this file.
50 return arma::norm(vel, 2);
62 inline Sclr operator() () {
71 return (1.-por_m)*rho_s*sorp_mult*csec;
76 inline Sclr operator() () {
111 return arma::zeros(3);
125 Tens K = (duxx * v[0] * v[0] + duyy * v[1] * v[1] + duzz * v[2] * v[2]
126 + 2 * ( duyz * v[1] * v[2] + duxz * v[0] * v[2] + duxy * v[0] * v[1])) / v_norm;
141 "Type of boundary condition.")
149 .
description(
"Dirichlet boundary condition (for each substance).")
155 .description(
"Flux in Neumann boundary condition.")
156 .units(
UnitSI().kg().m().s(-1).md() )
157 .input_default(
"0.0")
161 .name(
"bc_robin_sigma")
162 .description(
"Conductivity coefficient in Robin boundary condition.")
163 .units(
UnitSI().m(4).s(-1).md() )
164 .input_default(
"0.0")
169 .
description(
"Initial values for concentration of substances.")
172 .
name(
"dispersion_uxx")
173 .
description(
"Dispersion 4-th order tensor component ux D ux. Common for all substances right now.")
178 .
name(
"dispersion_uyy")
179 .
description(
"Dispersion 4-th order tensor component uy D uy. Common for all substances right now.")
184 .
name(
"dispersion_uzz")
185 .
description(
"Dispersion 4-th order tensor component uz D uz. Common for all substances right now.")
190 .
name(
"dispersion_uyz")
191 .
description(
"Dispersion 4-th order tensor component uy D uz. Common for all substances right now.")
196 .
name(
"dispersion_uxz")
197 .
description(
"Dispersion 4-th order tensor component ux D uz. Common for all substances right now.")
202 .
name(
"dispersion_uxy")
203 .
description(
"Dispersion 4-th order tensor component ux D uy. Common for all substances right now.")
209 .
name(
"rock_density")
215 .
name(
"sorption_coefficient")
235 .
description(
"Matrix coefficients computed by model in mass assemblation.")
240 .
description(
"Retardation coefficients computed by model in mass assemblation.")
244 .
description(
"Concentration sources output - density of substance source, only positive part is used..")
249 .
description(
"Concentration sources - Robin type, in_flux = sources_sigma * (sources_conc - mobile_conc).")
273 bool static_flag = transport_rec.val<
bool>(
"static_model");
276 sorption_coefficient.setup_components();
277 sources_conc.setup_components();
278 sources_density.setup_components();
279 sources_sigma.setup_components();
309 flow_flux, v_norm), 0.0);
315 return Selection(
"Solute_AdvectionDiffusion_BC_Type",
"Types of boundary conditions for advection-diffusion solute transport model.")
317 "Default transport boundary condition.\n"
318 "On water inflow (($(q_w \\le 0)$)), total flux is given by the reference concentration 'bc_conc'. "
319 "On water outflow we prescribe zero diffusive flux, "
320 "i.e. the mass flows out only due to advection.")
322 "Dirichlet boundary condition (($ c = c_D $)).\n"
323 "The prescribed concentration (($c_D$)) is specified by the field 'bc_conc'.")
325 "Total mass flux boundary condition.\n"
326 "The prescribed total incoming flux can have the general form (($\\delta(f_N+\\sigma_R(c_R-c) )$)), "
327 "where the absolute flux (($f_N$)) is specified by the field 'bc_flux', "
328 "the transition parameter (($\\sigma_R$)) by 'bc_robin_sigma', "
329 "and the reference concentration (($c_R$)) by 'bc_conc'.")
330 .
add_value(bc_diffusive_flux,
"diffusive_flux",
331 "Diffusive flux boundary condition.\n"
332 "The prescribed incoming mass flux due to diffusion can have the general form (($\\delta(f_N+\\sigma_R(c_R-c) )$)), "
333 "where the absolute flux (($f_N$)) is specified by the field 'bc_flux', "
334 "the transition parameter (($\\sigma_R$)) by 'bc_robin_sigma', "
335 "and the reference concentration (($c_R$)) by 'bc_conc'.")
348 "Selection of output fields for Diffusive Solute Transport DG model.");
356 description +
" for solute transport.")
359 "Forces zero time and advection term.")
361 "Density of the solvent [ (($kg.m^{-3}$)) ].");
FieldCommon & units(const UnitSI &units)
Set basic units of the field.
static constexpr Mask in_rhs
A field is part of the right hand side of the equation.
double solvent_density_
Density of liquid (a global constant).
static UnitSI & dimensionless()
Returns dimensionless unit.
MultiField< 3, FieldValue< 3 >::Scalar > retardation_coef
Field represents retardation coefficients due to sorption.
vector< unsigned int > subst_idx_
List of indices used to call balance methods for a set of quantities.
MultiField< 3, FieldValue< 3 >::Scalar > output_field
MultiField< 3, FieldValue< 3 >::Scalar > sources_conc_out
Concentration sources - concentration output.
virtual ModelEqData & eq_data()=0
Derived class should implement getter for ModelEqData instance.
auto disable_where(const MultiField< spacedim, typename FieldValue< spacedim >::Enum > &control_field, const vector< FieldEnum > &value_list) -> MultiField &
static constexpr const char * name()
void init_balance(const Input::Record &in_rec)
Field< 3, FieldValue< 3 >::Scalar > rock_density
Longitudal dispersivity (for each substance).
FieldCommon & flags(FieldFlag::Flags::Mask mask)
MultiField< 3, FieldValue< 3 >::Scalar > sorption_coefficient
Coefficient of linear sorption.
void init_from_input(const Input::Record &in_rec) override
Read necessary data from input record.
Field< 3, FieldValue< 3 >::Tensor > disp_uxy
ConcDispersionModel(Mesh &mesh, const Input::Record &in_rec)
static IT::Selection get_output_selection()
FieldCommon & flags_add(FieldFlag::Flags::Mask mask)
std::shared_ptr< Balance > balance() const
static const Input::Type::Selection & get_bc_type_selection()
void initialize(Input::Record transport_rec)
std::shared_ptr< Balance > balance_
object for calculation and writing the mass balance to file.
static constexpr Mask equation_result
Match result fields. These are never given by input or copy of input.
Field< 3, FieldValue< 3 >::Tensor > disp_uyz
~ConcDispersionModel() override
Class for representation SI units of Fields.
void set_balance_object(std::shared_ptr< Balance > balance) override
Field< 3, FieldValue< 3 >::Tensor > disp_uyy
MultiField< 3, FieldValue< 3 >::Scalar > sources_sigma_out
Concentration sources - sigma output.
static constexpr Mask in_main_matrix
A field is part of main "stiffness matrix" of the equation.
MultiField< 3, FieldValue< 3 >::Scalar > sources_density_out
Concentration sources - density output.
Field< 3, FieldValue< 3 >::Scalar > mass_matrix_coef
Field represents coefficients of mass matrix.
FieldCommon & input_default(const string &input_default)
Field< 3, FieldValue< 3 >::Tensor > disp_uxx
Components of the full dispersion tensor.
Field< 3, FieldValue< 3 >::Tensor > disp_uxz
MultiField< 3, FieldValue< 3 >::Tensor > diffusion_coef
Diffusion coefficients.
MultiField< 3, FieldValue< 3 >::Vector > advection_coef
Advection coefficients.
static Input::Type::Abstract & get_input_type()
Common specification of the input record for secondary equations.
Field< 3, FieldValue< 3 >::Tensor > disp_uzz
Field< 3, FieldValue< 3 >::Scalar > v_norm
Velocity norm field.
FieldCommon & input_selection(Input::Type::Selection element_selection)
FieldCommon & description(const string &description)
BCMultiField< 3, FieldValue< 3 >::Scalar > bc_flux
Flux value in total/diffusive flux b.c.
static constexpr Mask in_time_term
A field is part of time term of the equation.
BCMultiField< 3, FieldValue< 3 >::Enum > bc_type
Type of boundary condition (see also BC_Type)
MultiField< 3, FieldValue< 3 >::Scalar > init_condition
Initial concentrations.
BCMultiField< 3, FieldValue< 3 >::Scalar > bc_dirichlet_value
Prescribed concentration for Dirichlet/reference concentration for flux b.c.
FieldCommon & name(const string &name)
BCMultiField< 3, FieldValue< 3 >::Scalar > bc_robin_sigma
Transition coefficient in total/diffusive flux b.c.