Go to the documentation of this file.
19 #ifndef TRANSPORT_DG_HH_
20 #define TRANSPORT_DG_HH_
58 template<
unsigned int dim,
class Model>
class AssemblyDG;
66 template<
unsigned int dim,
unsigned int spacedim>
class FEValuesBase;
68 template<
unsigned int dim,
unsigned int spacedim>
class Mapping;
70 namespace Input {
namespace Type {
class Selection; } }
94 std::shared_ptr<DOFHandlerMultiDim> dh;
133 template<
class Model>
161 class EqData :
public Model::ModelEqData {
233 std::shared_ptr<DOFHandlerMultiDim>
dh_;
239 std::shared_ptr<DOFHandlerMultiDim>
dh_p0;
301 {
return eq_data_->ls[sbi]->get_solution(); }
313 inline std::shared_ptr<Balance>
balance()
const {
314 return Model::balance_;
unsigned int dg_order
Polynomial order of finite elements.
void set_time_governor(TimeGovernor *time)
GenericAssembly< StiffnessAssemblyDim > * stiffness_assembly_
MultiField< 3, FieldValue< 3 >::Scalar > dg_penalty
Penalty enforcing inter-element continuity of solution (for each substance).
FieldFEScalarVec & get_p0_interpolation()
Getter for P0 interpolation by FieldFE.
std::vector< std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > > FieldFEScalarVec
unsigned int max_edg_sides
Maximal number of edge sides (evaluate from dim 1,2,3)
Input::Record input_rec
Array for storing the output solution data.
Directing class of FieldValueCache.
Wrappers for linear systems based on MPIAIJ and MATIS format.
void update_solution() override
Computes the solution in one time instant.
LinSys ** ls_dt
Linear algebra system for the time derivative (actually it is used only for handling the matrix struc...
vector< double > ret_sources_prev
void set_initial_condition()
Calculates the dispersivity (diffusivity) tensor from the velocity field.
void set_DG_parameters_boundary(Side side, const int K_size, const std::vector< arma::mat33 > &K, const double flux, const arma::vec3 &normal_vector, const double alpha, double &gamma)
Sets up parameters of the DG method on a given boundary edge.
GenericAssembly< MassAssemblyDim > * mass_assembly_
general assembly objects, hold assembly objects of appropriate dimension
std::vector< Mat > mass_matrix
The mass matrix.
void calculate_cumulative_balance()
void compute_p0_interpolation()
Compute P0 interpolation of the solution (used in reaction term).
Field< 3, FieldValue< 3 >::Scalar > region_id
TransportDG(Mesh &init_mesh, const Input::Record in_rec)
Constructor.
bool evaluate_time_constraint(double &)
std::vector< Vec > ret_vec
Auxiliary vectors for calculation of sources in balance due to retardation (e.g. sorption).
Vec get_component_vec(unsigned int sbi)
Return PETSc vector with solution for sbi-th component.
int dg_variant
DG variant ((non-)symmetric/incomplete.
std::vector< Vec > rhs
Vector of right hand side.
LinSys ** ls
Linear algebra system for the transport equation.
void output_data()
Postprocesses the solution and writes to output file.
std::shared_ptr< EqFields > eq_fields_
Fields for model parameters.
std::shared_ptr< Balance > balance_
Model::ModelEqFields & eq_fields()
Provides the numbering of the finite element degrees of freedom on the computational mesh.
std::shared_ptr< DOFHandlerMultiDim > dh_
Object for distribution of dofs.
void initialize() override
Basic time management functionality for unsteady (and steady) solvers (class Equation).
static const Input::Type::Selection & get_dg_variant_selection_input_type()
Input type for the DG variant selection.
The class for outputting data during time.
bool allocation_done
Indicates whether matrices have been preallocated.
vector< vector< arma::mat33 > > dif_coef
Diffusion coefficients.
std::shared_ptr< Balance > balance() const
Access to balance object of Model.
Discontinuous Galerkin method for equation of transport with dispersion.
Abstract class for the description of a general finite element on a reference simplex in dim dimensio...
static const int registrar
Registrar of class to factory.
Transport with dispersion implemented using discontinuous Galerkin method.
MultiField< 3, FieldValue< 3 >::Scalar > fracture_sigma
Transition parameter for diffusive transfer on fractures (for each substance).
std::vector< Mat > stiffness_matrix
The stiffness matrix.
std::shared_ptr< DOFHandlerMultiDim > dh_p0
std::shared_ptr< EqData > eq_data_
Data for model parameters.
GenericAssembly< BdrConditionAssemblyDim > * bdr_cond_assembly_
void update_after_reactions(bool solution_changed)
Enum type UpdateFlags indicates which quantities are to be recomputed on each finite element cell.
Field< 3, FieldValue< 3 >::Scalar > subdomain
Class for representation of a vector of fields of the same physical quantity.
std::vector< std::vector< double > > gamma
Penalty parameters.
void output_region_statistics()
std::vector< Vec > mass_vec
Mass from previous time instant (necessary when coefficients of mass matrix change in time).
Discontinuous Galerkin method for equation of transport with dispersion.
void zero_time_step() override
Initialize solution in the zero time.
~TransportDG() override
Destructor.
std::vector< VectorMPI > output_vec
Vector of solution data.
Class template representing a field with values dependent on: point, element, and region.
Model::ModelEqData & eq_data()
GenericAssembly< SourcesAssemblyDim > * sources_assembly_
GenericAssemblyBase * init_assembly_
static const Input::Type::Record & get_input_type()
Declare input record type for the equation TransportDG.
#define ASSERT_PTR(ptr)
Definition of assert macro checking non-null pointer (PTR) only for debug mode.
Base class for quadrature rules on simplices in arbitrary dimensions.
vector< double > ret_sources
Temporary values of increments due to retardation (e.g. sorption)
double elem_anisotropy(ElementAccessor< 3 > e) const
Compute and return anisotropy of given element.
Generic class of assemblation.
EquationOutput output_fields
unsigned int IntDim
A dimension index type.