19 #ifndef TRANSPORT_DG_HH_ 20 #define TRANSPORT_DG_HH_ 25 #include <boost/exception/info.hpp> 56 template<
unsigned int dim,
class Model>
class AssemblyDG;
63 template<
unsigned int dim,
unsigned int spacedim>
class FEValuesBase;
65 template<
unsigned int dim,
unsigned int spacedim>
class Mapping;
67 namespace Input {
namespace Type {
class Selection; } }
91 std::shared_ptr<DOFHandlerMultiDim> dh;
130 template<
class Model>
141 class EqData :
public Model::ModelEqData {
159 void set_DG_parameters_boundary(
Side side,
220 std::shared_ptr<DOFHandlerMultiDim>
dh_;
263 void zero_time_step()
override;
271 void update_solution()
override;
283 void initialize()
override;
285 void calculate_cumulative_balance();
288 {
return data_->ls[sbi]->get_solution(); }
291 {
return solution_elem_; }
293 void calculate_concentration_matrix();
295 void update_after_reactions(
bool solution_changed);
302 inline std::shared_ptr<Balance>
balance()
const {
303 return Model::balance_;
308 return Model::subst_idx;
318 inline typename Model::ModelEqData &
data() {
return *data_; }
342 void set_initial_condition();
346 void output_region_statistics();
GenericAssembly< MassAssemblyDim > * mass_assembly_
general assembly objects, hold assembly objects of appropriate dimension
Input::Record input_rec
Record with input specification.
vector< vector< arma::vec3 > > ad_coef
Advection coefficients.
std::vector< std::vector< double > > gamma
Penalty parameters.
Transport with dispersion implemented using discontinuous Galerkin method.
unsigned int dg_order
Polynomial order of finite elements.
const vector< unsigned int > subst_idx() const
Return vector of substances indices.
Wrappers for linear systems based on MPIAIJ and MATIS format.
Class template representing a field with values dependent on: point, element, and region...
vector< VectorMPI > output_vec
Array for storing the output solution data.
Directing class of FieldValueCache.
int dg_variant
DG variant ((non-)symmetric/incomplete.
Discontinuous Galerkin method for equation of transport with dispersion.
const Vec & get_solution(unsigned int sbi)
vector< double > ret_sources_prev
MultiField< 3, FieldValue< 3 >::Scalar > dg_penalty
Penalty enforcing inter-element continuity of solution (for each substance).
Enum type UpdateFlags indicates which quantities are to be recomputed on each finite element cell...
EquationOutput output_fields
std::vector< Mat > mass_matrix
The mass matrix.
vector< vector< vector< arma::mat33 > > > dif_coef_edg
Diffusion coefficients on edges.
Base class for quadrature rules on simplices in arbitrary dimensions.
bool evaluate_time_constraint(double &)
GenericAssembly< SourcesAssemblyDim > * sources_assembly_
vector< vector< arma::mat33 > > dif_coef
Diffusion coefficients.
double ** get_concentration_matrix()
MultiField< 3, FieldValue< 3 >::Scalar > fracture_sigma
Transition parameter for diffusive transfer on fractures (for each substance).
GenericAssembly< BdrConditionAssemblyDim > * bdr_cond_assembly_
static const int registrar
Registrar of class to factory.
std::vector< Vec > ret_vec
Auxiliary vectors for calculation of sources in balance due to retardation (e.g. sorption).
LinSys ** ls
Linear algebra system for the transport equation.
Field< 3, FieldValue< 3 >::Scalar > subdomain
Provides the numbering of the finite element degrees of freedom on the computational mesh...
std::vector< Vec > rhs
Vector of right hand side.
Field< 3, FieldValue< 3 >::Scalar > region_id
The class for outputting data during time.
double ** solution_elem_
Element averages of solution (the array is passed to reactions in operator splitting).
vector< vector< vector< arma::vec3 > > > ad_coef_edg
Advection coefficients on edges.
Model::ModelEqData & data()
std::vector< Mat > stiffness_matrix
The stiffness matrix.
int LongIdx
Define type that represents indices of large arrays (elements, nodes, dofs etc.)
bool allocation_done
Indicates whether matrices have been preallocated.
GenericAssembly< StiffnessAssemblyDim > * stiffness_assembly_
Generic class of assemblation.
std::shared_ptr< DOFHandlerMultiDim > dh_
Object for distribution of dofs.
std::shared_ptr< Balance > balance() const
Access to balance object of Model.
Discontinuous Galerkin method for equation of transport with dispersion.
std::vector< Vec > mass_vec
Mass from previous time instant (necessary when coefficients of mass matrix change in time)...
Class for representation of a vector of fields of the same physical quantity.
Abstract class for the description of a general finite element on a reference simplex in dim dimensio...
GenericAssembly< InitConditionAssemblyDim > * init_cond_assembly_
LinSys ** ls_dt
Linear algebra system for the time derivative (actually it is used only for handling the matrix struc...
std::shared_ptr< EqData > data_
Field data for model parameters.