ug4
|
Interface for domain discretization. More...
#include <domain_disc_interface.h>
Public Types | |
typedef TAlgebra | algebra_type |
Algebra type. More... | |
typedef algebra_type::matrix_type | matrix_type |
Type of algebra matrix. More... | |
typedef algebra_type::vector_type | vector_type |
Type of algebra vector. More... | |
Public Types inherited from ug::IAssemble< TAlgebra > | |
typedef TAlgebra | algebra_type |
Algebra type. More... | |
typedef TAlgebra::matrix_type | matrix_type |
Type of algebra matrix. More... | |
typedef TAlgebra::vector_type | vector_type |
Type of algebra vector. More... | |
Public Types inherited from ug::IDomainErrorIndicator< TAlgebra > | |
typedef CPUAlgebra::vector_type | error_vector_type |
Type of error vector. More... | |
typedef TAlgebra::vector_type | vector_type |
Type of algebra vector. More... | |
Public Member Functions | |
virtual void | adjust_solution (vector_type &u, const GridLevel &gl)=0 |
sets dirichlet values in solution vector More... | |
virtual void | adjust_solution (vector_type &u, ConstSmartPtr< DoFDistribution > dd)=0 |
void | adjust_solution (vector_type &u, number time) |
adjust solution on surface level More... | |
virtual void | adjust_solution (vector_type &u, number time, const GridLevel &gl)=0 |
sets dirichlet values in solution vector More... | |
virtual void | adjust_solution (vector_type &u, number time, ConstSmartPtr< DoFDistribution > dd)=0 |
virtual void | assemble_defect (vector_type &d, const vector_type &u, const GridLevel &gl)=0 |
assembles Defect More... | |
virtual void | assemble_defect (vector_type &d, const vector_type &u, ConstSmartPtr< DoFDistribution > dd)=0 |
void | assemble_defect (vector_type &d, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff) |
assembles defect on surface level More... | |
virtual void | assemble_defect (vector_type &d, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, const GridLevel &gl)=0 |
assembles Defect More... | |
virtual void | assemble_defect (vector_type &d, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, ConstSmartPtr< DoFDistribution > dd)=0 |
virtual void | assemble_jacobian (matrix_type &J, const vector_type &u, const GridLevel &gl)=0 |
assembles Jacobian (or Approximation of Jacobian) More... | |
virtual void | assemble_jacobian (matrix_type &J, const vector_type &u, ConstSmartPtr< DoFDistribution > dd)=0 |
void | assemble_jacobian (matrix_type &J, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const number s_a) |
assembles jacobian on surface level More... | |
virtual void | assemble_jacobian (matrix_type &J, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const number s_a, const GridLevel &gl)=0 |
assembles Jacobian (or Approximation of Jacobian) More... | |
virtual void | assemble_jacobian (matrix_type &J, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const number s_a0, ConstSmartPtr< DoFDistribution > dd)=0 |
virtual void | assemble_linear (matrix_type &A, vector_type &b, const GridLevel &gl)=0 |
Assembles Matrix and Right-Hand-Side for a linear problem. More... | |
virtual void | assemble_linear (matrix_type &A, vector_type &b, ConstSmartPtr< DoFDistribution > dd)=0 |
void | assemble_linear (matrix_type &A, vector_type &b, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff) |
assembles linear on surface level More... | |
virtual void | assemble_linear (matrix_type &A, vector_type &b, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, const GridLevel &gl)=0 |
Assembles matrix_type and Right-Hand-Side for a linear problem. More... | |
virtual void | assemble_linear (matrix_type &A, vector_type &b, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, ConstSmartPtr< DoFDistribution > dd)=0 |
virtual void | assemble_mass_matrix (matrix_type &M, const vector_type &u, const GridLevel &gl)=0 |
assembles the mass matrix More... | |
virtual void | assemble_mass_matrix (matrix_type &M, const vector_type &u, ConstSmartPtr< DoFDistribution > dd)=0 |
virtual void | assemble_rhs (vector_type &b, const GridLevel &gl)=0 |
assembles the rhs More... | |
virtual void | assemble_rhs (vector_type &b, ConstSmartPtr< DoFDistribution > dd)=0 |
void | assemble_rhs (vector_type &b, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff) |
assembles rhs on surface level More... | |
virtual void | assemble_rhs (vector_type &b, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, const GridLevel &gl)=0 |
Assembles Right-Hand-Side for a linear problem. More... | |
virtual void | assemble_rhs (vector_type &b, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, ConstSmartPtr< DoFDistribution > dd)=0 |
virtual void | assemble_rhs (vector_type &rhs, const vector_type &u, const GridLevel &gl)=0 |
assembles the rhs More... | |
virtual void | assemble_rhs (vector_type &rhs, const vector_type &u, ConstSmartPtr< DoFDistribution > dd)=0 |
virtual void | assemble_stiffness_matrix (matrix_type &A, const vector_type &u, const GridLevel &gl)=0 |
assembles the stiffness matrix More... | |
virtual void | assemble_stiffness_matrix (matrix_type &A, const vector_type &u, ConstSmartPtr< DoFDistribution > dd)=0 |
virtual SmartPtr< IConstraint< TAlgebra > > | constraint (size_t i)=0 |
returns the i'th post process More... | |
virtual void | finish_timestep (ConstSmartPtr< VectorTimeSeries< vector_type > > vSol) |
virtual void | finish_timestep (ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const GridLevel &gl)=0 |
virtual void | finish_timestep (ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, ConstSmartPtr< DoFDistribution > dd)=0 |
finishes time step More... | |
void | finish_timestep_elem (ConstSmartPtr< VectorTimeSeries< vector_type > > vSol) |
finishes timestep on surface level More... | |
virtual void | finish_timestep_elem (ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const GridLevel &gl)=0 |
finishes timestep More... | |
virtual void | finish_timestep_elem (ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, ConstSmartPtr< DoFDistribution > dd)=0 |
virtual size_t | num_constraints () const =0 |
returns the number of post processes More... | |
virtual void | prepare_timestep (ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, number future_time) |
virtual void | prepare_timestep (ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, number future_time, const GridLevel &gl)=0 |
virtual void | prepare_timestep (ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, number future_time, ConstSmartPtr< DoFDistribution > dd)=0 |
prepares time step More... | |
void | prepare_timestep_elem (ConstSmartPtr< VectorTimeSeries< vector_type > > vSol) |
prepares timestep on surface level More... | |
virtual void | prepare_timestep_elem (ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const GridLevel &gl)=0 |
virtual void | prepare_timestep_elem (ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, ConstSmartPtr< DoFDistribution > dd)=0 |
prepares time step element-wise More... | |
virtual | ~IDomainDiscretization () |
Public Member Functions inherited from ug::IAssemble< TAlgebra > | |
void | adjust_solution (vector_type &u) |
void | assemble_defect (vector_type &d, const vector_type &u) |
void | assemble_jacobian (matrix_type &J, const vector_type &u) |
void | assemble_linear (matrix_type &A, vector_type &b) |
void | assemble_mass_matrix (matrix_type &M, const vector_type &u) |
void | assemble_rhs (vector_type &b) |
virtual void | assemble_rhs (vector_type &rhs, const vector_type &u) |
void | assemble_stiffness_matrix (matrix_type &A, const vector_type &u) |
virtual | ~IAssemble () |
Virtual Destructor. More... | |
virtual SmartPtr< AssemblingTuner< TAlgebra > > | ass_tuner ()=0 |
virtual ConstSmartPtr< AssemblingTuner< TAlgebra > > | ass_tuner () const =0 |
Public Member Functions inherited from ug::IDomainErrorIndicator< TAlgebra > | |
virtual void | calc_error (const vector_type &u, const GridLevel &gl, error_vector_type *u_vtk=NULL)=0 |
virtual void | calc_error (const vector_type &u, ConstSmartPtr< DoFDistribution > dd, error_vector_type *u_vtk=NULL)=0 |
virtual void | calc_error (ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, const GridLevel &gl, error_vector_type *u_vtk)=0 |
Transient version. More... | |
virtual void | calc_error (ConstSmartPtr< VectorTimeSeries< vector_type > > vSol, ConstSmartPtr< DoFDistribution > dd, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff, error_vector_type *u_vtk)=0 |
Transient version. More... | |
virtual void | invalidate_error ()=0 |
marks error indicators as invalid More... | |
virtual bool | is_error_valid ()=0 |
returns whether current error values are valid More... | |
virtual | ~IDomainErrorIndicator () |
Interface for domain discretization.
This class is the interface for spatial discretizations. It can be used in the stationary case as well as for the domain dependent part of an instationary problem (i.e. inside ITimeDiscretization).
By its structure it is convenient to implement element-wise Mass-Matrix and Stiffness-Matrix. Then the time-independent member functions can call only the Stiffness-Matrix assembling, while the time-dependent part can call Mass- and Stiffness-Matrix assembling.
TAlgebra | Algebra Type |
typedef TAlgebra ug::IDomainDiscretization< TAlgebra >::algebra_type |
Algebra type.
typedef algebra_type::matrix_type ug::IDomainDiscretization< TAlgebra >::matrix_type |
Type of algebra matrix.
typedef algebra_type::vector_type ug::IDomainDiscretization< TAlgebra >::vector_type |
Type of algebra vector.
|
inlinevirtual |
|
pure virtual |
sets dirichlet values in solution vector
Sets dirichlet values of the NumericalSolution u when components are dirichlet
[out] | u | Numerical Solution |
[in] | dd | DoF Distribution |
Implements ug::IAssemble< TAlgebra >.
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
Referenced by ug::IDomainDiscretization< TAlgebra >::adjust_solution().
|
pure virtual |
|
inline |
adjust solution on surface level
References ug::IDomainDiscretization< TAlgebra >::adjust_solution().
|
pure virtual |
sets dirichlet values in solution vector
Sets dirichlet values of the Solution u when components are dirichlet
[in] | u | Solution to set values at |
[in] | time | time of next (to be computed) timestep |
[in] | dd | DoF Distribution |
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
|
pure virtual |
|
pure virtual |
assembles Defect
Assembles Defect at a given Solution u.
[out] | d | Defect d(u) to be filled |
[in] | u | Current iterate |
[in] | dd | DoF Distribution |
Implements ug::IAssemble< TAlgebra >.
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
Referenced by ug::IDomainDiscretization< TAlgebra >::assemble_defect().
|
pure virtual |
|
inline |
assembles defect on surface level
References ug::IDomainDiscretization< TAlgebra >::assemble_defect().
|
pure virtual |
assembles Defect
Assembles Defect at a given Solution u.
[out] | d | Defect d(u) to be filled |
[in] | vSol | vector of previous and current (iterated) solution |
[in] | vScaleMass | scaling factors for mass matrix |
[in] | vScaleStiff | scaling factors for stiffness matrix |
[in] | dd | DoF Distribution |
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
|
pure virtual |
|
pure virtual |
assembles Jacobian (or Approximation of Jacobian)
Assembles Jacobian at a given iterate u.
[out] | J | Jacobian J(u) matrix to be filled |
[in] | u | Current iterate |
[in] | dd | DoF Distribution |
Implements ug::IAssemble< TAlgebra >.
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
Referenced by ug::IDomainDiscretization< TAlgebra >::assemble_jacobian().
|
pure virtual |
|
inline |
assembles jacobian on surface level
References ug::IDomainDiscretization< TAlgebra >::assemble_jacobian().
|
pure virtual |
assembles Jacobian (or Approximation of Jacobian)
Assembles Jacobian at a given Solution u.
[out] | J | Jacobian J(u) Matrix to be filled |
[in] | vSol | vector of previous and current (iterated) solution |
[in] | s_a | scaling factors for mass matrix |
[in] | dd | DoF Distribution |
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
|
pure virtual |
|
pure virtual |
Assembles Matrix and Right-Hand-Side for a linear problem.
Assembles matrix_type and Right-Hand-Side for a linear problem
[out] | A | Mass-/Stiffness- Matrix |
[out] | b | Right-Hand-Side |
[in] | dd | DoF Distribution |
Implements ug::IAssemble< TAlgebra >.
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
Referenced by ug::IDomainDiscretization< TAlgebra >::assemble_linear().
|
pure virtual |
|
inline |
assembles linear on surface level
References ug::IDomainDiscretization< TAlgebra >::assemble_linear().
|
pure virtual |
Assembles matrix_type and Right-Hand-Side for a linear problem.
Assembles matrix_type and Right-Hand-Side for a linear problem
[out] | A | Mass-/Stiffness- matrix_type of the discretization |
[out] | b | Right-Hand-Side of the discretization |
[in] | vSol | vector of previous and current (iterated) solution |
[in] | vScaleMass | scaling factors for mass matrix |
[in] | vScaleStiff | scaling factors for stiffness matrix |
[in] | dd | DoF Distribution |
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
|
pure virtual |
|
pure virtual |
assembles the mass matrix
Reimplemented from ug::IAssemble< TAlgebra >.
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
|
pure virtual |
|
pure virtual |
assembles the rhs
Implements ug::IAssemble< TAlgebra >.
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
|
pure virtual |
|
inline |
assembles rhs on surface level
References ug::IDomainDiscretization< TAlgebra >::assemble_rhs().
|
pure virtual |
Assembles Right-Hand-Side for a linear problem.
Assembles Right-Hand-Side for a linear problem
[out] | b | Right-Hand-Side of the discretization |
[in] | vSol | vector of previous and current (iterated) solution |
[in] | vScaleMass | scaling factors for mass matrix |
[in] | vScaleStiff | scaling factors for stiffness matrix |
[in] | dd | DoF Distribution |
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
|
pure virtual |
|
pure virtual |
assembles the rhs
Implements ug::IAssemble< TAlgebra >.
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
Referenced by ug::IDomainDiscretization< TAlgebra >::assemble_rhs().
|
pure virtual |
|
pure virtual |
assembles the stiffness matrix
Reimplemented from ug::IAssemble< TAlgebra >.
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
|
pure virtual |
|
pure virtual |
returns the i'th post process
Implements ug::IAssemble< TAlgebra >.
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
|
inlinevirtual |
|
pure virtual |
|
pure virtual |
finishes time step
Finishes time step at a given solution u. This method is called only once after any time step.
[in] | vSol | vector of previous and current (iterated) solution |
[in] | dd | DoF distribution |
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
Referenced by ug::IDomainDiscretization< TAlgebra >::finish_timestep().
|
inline |
finishes timestep on surface level
References ug::IDomainDiscretization< TAlgebra >::finish_timestep_elem().
|
pure virtual |
finishes timestep
finishes timestep at a given Solution u.
[in] | vSol | vector of previous and current (iterated) solution |
[in] | dd | DoF Distribution |
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
Referenced by ug::IDomainDiscretization< TAlgebra >::finish_timestep_elem().
|
pure virtual |
|
pure virtual |
returns the number of post processes
Implements ug::IAssemble< TAlgebra >.
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
|
inlinevirtual |
|
pure virtual |
|
pure virtual |
prepares time step
Prepares time step at a given solution u. This method is called only once before any time step.
[in] | vSol | vector of previous and current (iterated) solution |
[in] | dd | DoF distribution |
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
Referenced by ug::IDomainDiscretization< TAlgebra >::prepare_timestep().
|
inline |
prepares timestep on surface level
References ug::IDomainDiscretization< TAlgebra >::prepare_timestep_elem().
|
pure virtual |
|
pure virtual |
prepares time step element-wise
prepares time step element-wise at a given solution u.
[in] | vSol | vector of previous and current (iterated) solution |
[in] | dd | DoF Distribution |
Implemented in ug::DomainDiscretizationBase< TDomain, TAlgebra, TGlobAssembler >, ug::DomainDiscretizationBase< TDomain, TAlgebra, LSGFGlobAssembler< TDomain, TAlgebra, TExtrapolation > >, and ug::DomainDiscretizationBase< TDomain, TAlgebra, StdGlobAssembler< TDomain, TAlgebra > >.
Referenced by ug::IDomainDiscretization< TAlgebra >::prepare_timestep_elem().