38 using namespace Input::Type;
41 =
AbstractRecord(
"Transport",
"Secondary equation for transport of substances.")
43 "Time governor setting for the secondary equation.")
45 "Parameters of output stream.")
50 =
Record(
"TransportOutput",
"Output setting for transport equations.")
52 "Parameters of output stream.");
56 =
Record(
"TransportOperatorSplitting",
57 "Explicit FVM transport (no diffusion)\n"
58 "coupled with reaction and adsorption model (ODE per element)\n"
59 " via operator splitting.")
62 "Names of transported substances.")
65 "Reaction model involved in transport.")
73 "List of fields to write to output file.");
79 ADD_FIELD(porosity,
"Mobile porosity",
"1");
85 ADD_FIELD(sources_density,
"Density of concentration sources.",
"0");
86 sources_density.units(
UnitSI().kg().m(-3) );
88 ADD_FIELD(sources_sigma,
"Concentration flux.",
"0");
89 sources_sigma.units(
UnitSI().s(-1) );
91 ADD_FIELD(sources_conc,
"Concentration sources threshold.",
"0");
92 sources_conc.units(
UnitSI().kg().m(-3) );
99 mass_balance_(nullptr)
119 Semchem_reactions(NULL)
134 if ( reactions_it ) {
156 xprintf(
Warn,
"The mass balance is not computed correctly when reaction term is present. "
157 "Only the mass flux over boundaries is correct.\n");
void calculate(double time)
virtual void zero_time_step()
double *** get_concentration_matrix()
Abstract base class for equation clasess.
static Input::Type::Record input_type
Header: The functions for all outputs.
void update_solution() override
static Input::Type::AbstractRecord input_type
Common specification of the input record for secondary equations.
void set_el_4_loc(int *el_for_loc)
virtual void output_data(void)
Output method.
void zero_time_step() override
static Input::Type::Record input_type
The specification of output stream.
virtual void initialize()
Initialize fields.
void calc_fluxes(vector< vector< double > > &bcd_balance, vector< vector< double > > &bcd_plus_balance, vector< vector< double > > &bcd_minus_balance) override
virtual void set_velocity_field(const MH_DofHandler &dh) override
void next_time()
Proceed to the next time according to current estimated time step.
void update_solution(void)
const MH_DofHandler * mh_dh
static Input::Type::Record input_type
virtual void set_velocity_field(const MH_DofHandler &dh) override
void get_par_info(int *&el_4_loc, Distribution *&el_ds)
#define ADD_FIELD(name,...)
I/O functions with filename storing, able to track current line in opened file. All standard stdio fu...
Basic time management functionality for unsteady (and steady) solvers (class Equation).
void zero_time_step() override
Basic time management class.
MassBalance * mass_balance()
Specification of transport model interface.
double estimate_dt() const
Estimate choice of next time step according to actual setting of constraints.
OutputTime * output_stream_
void view(const char *name="") const
static Input::Type::AbstractRecord input_type
static Input::Type::Record input_type
bool lt(double other_time) const
static constexpr Mask input_copy
A field that is input of its equation and cna not read from input, thus muzt be set by copy...
#define START_TIMER(tag)
Starts a timer with specified tag.
void set_field(const std::string &dest_field_name, FieldCommon &source)
ConvectionTransport * convection
static Input::Type::Record input_type
unsigned int n_subst_
Number of transported substances.
static Input::Type::Record input_type
static Input::Type::Record input_type_output_record
static Input::Type::AbstractRecord input_type
Class representing dual porosity model in transport.
virtual void set_time_governor(TimeGovernor &time)
void update_solution() override
std::vector< string > subst_names_
Names of transported substances.
Support classes for parallel programing.
void calc_elem_sources(vector< vector< double > > &mass, vector< vector< double > > &src_balance) override
void output_data() override
Write computed fields.
virtual void update_solution()
static Input::Type::Record input_type
static Input::Type::Selection output_selection
Semchem_interface * Semchem_reactions
TimeGovernor const & time()
Vector classes to support both Iterator, index and Id access and creating co-located vectors...
virtual void output_data() override
Write computed fields.
ReactionTerm & names(const std::vector< string > &names)
Sets the names of substances considered in transport.
void set_target_time(double target_time)
OutputTime * output_stream()
#define END_TIMER(tag)
Ends a timer with specified tag.
TimeMark::Type mark_type()
void set_concentration_matrix(double ***ConcentrationsMatrix, Distribution *conc_distr, int *el_4_loc)
TransportBase(Mesh &mesh, const Input::Record in_rec)
Simple sorption model without dual porosity.
static Input::Type::Record input_type
Declare input record type for the equation TransportOperatorSplittiong.
Class for representation SI units of Fields.
static UnitSI & dimensionless()
Returns dimensionless unit.
ReactionTerm & concentration_matrix(double **concentration, Distribution *conc_distr, int *el_4_loc, int *row_4_el)
TransportOperatorSplitting(Mesh &init_mesh, const Input::Record &in_rec)
Constructor.
virtual ~TransportOperatorSplitting()
Destructor.