19 #ifndef TRANSPORT_DG_HH_ 20 #define TRANSPORT_DG_HH_ 25 #include <boost/exception/info.hpp> 57 template<
unsigned int dim,
class Model>
class AssemblyDG;
64 template<
unsigned int dim,
unsigned int spacedim>
class FEValuesBase;
66 template<
unsigned int dim,
unsigned int spacedim>
class Mapping;
68 namespace Input {
namespace Type {
class Selection; } }
92 std::shared_ptr<DOFHandlerMultiDim> dh;
131 template<
class Model>
144 class EqData :
public Model::ModelEqData {
162 void set_DG_parameters_boundary(
Side side,
223 std::shared_ptr<DOFHandlerMultiDim>
dh_;
233 std::shared_ptr<DOFHandlerMultiDim>
dh_p0;
267 void zero_time_step()
override;
275 void update_solution()
override;
287 void initialize()
override;
289 void calculate_cumulative_balance();
293 {
return data_->ls[sbi]->get_solution(); }
297 {
return data_->conc_fe;}
300 void compute_p0_interpolation();
302 void update_after_reactions(
bool solution_changed);
309 inline std::shared_ptr<Balance>
balance()
const {
310 return Model::balance_;
315 return Model::subst_idx;
319 inline typename Model::ModelEqData &
data() {
return *data_; }
347 void set_initial_condition();
351 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.
std::vector< std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > > FieldFEScalarVec
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.
Vec get_component_vec(unsigned int sbi)
Return PETSc vector with solution for sbi-th component.
FieldFEScalarVec & get_p0_interpolation()
Getter for P0 interpolation by FieldFE.
Directing class of FieldValueCache.
int dg_variant
DG variant ((non-)symmetric/incomplete.
Discontinuous Galerkin method for equation of transport with dispersion.
vector< double > ret_sources_prev
MultiField< 3, FieldValue< 3 >::Scalar > dg_penalty
Penalty enforcing inter-element continuity of solution (for each substance).
std::shared_ptr< DOFHandlerMultiDim > dh_p0
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.
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.
unsigned int IntDim
A dimension index type.
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.