DUNE-ACFEM (2.5.1)
Basic parabolic fem-scheme class. More...
#include <dune/acfem/algorithms/parabolicfemscheme.hh>
Public Types | |
typedef DiscreteFunction | DiscreteFunctionType |
Type of the discrete solution function. | |
typedef DiscreteFunctionType::GridType | GridType |
type of hierarchic grid | |
typedef DiscreteFunctionType::GridPartType | GridPartType |
type of the grid view | |
typedef DiscreteFunctionType::DiscreteFunctionSpaceType | DiscreteFunctionSpaceType |
type of the discrete function space | |
typedef TimeProvider | TimeProviderType |
access to the simulation time and time-step | |
typedef ImplicitModel | ImplicitModelImplementationType |
type of the mathematical model | |
typedef InitialValue | InitialValueType |
Initial value. | |
typedef ImplicitModelType::FunctionSpaceType | FunctionSpaceType |
type of function space (scalar functions, \(f: \Omega -> R\)) | |
typedef Fem::NewtonInverseOperator< LinearOperatorType, LinearInverseOperatorType > | NonLinearInverseOperatorType |
Non-linear solver. | |
typedef Dune::Fem::RestrictProlongDefault< DiscreteFunctionType > | RestrictionProlongationType |
type of restriction/prolongation projection for adaptive simulations (use default here, i.e. More... | |
typedef Dune::Fem::AdaptationManager< GridType, RestrictionProlongationType > | AdaptationManagerType |
type of adaptation manager handling adapation and DoF compression | |
typedef ImplicitModelType::DirichletIndicatorType | DirichletIndicatorType |
types for various data | |
typedef ImplicitModelType::DirichletBoundaryFunctionType | DirichletBoundaryFunctionType |
type of Dirichlet boundary values | |
typedef ImplicitModelType::DirichletWeightFunctionType | DirichletWeightFunctionType |
type of Dirichlet weight function | |
typedef decltype(std::declval< DirichletBoundaryFunctionType >()/std::declval< typename DirichletWeightFunctionType::GridFunctionType >()) | EffectiveDirichletFunctionType |
type of effective Dirichlet values | |
typedef DirichletConstraints< LinearOperatorType, EffectiveDirichletFunctionType, DirichletIndicatorType > | ConstraintsOperatorType |
type of Dirichlet constraints | |
typedef DifferentiableEmptyBlockConstraints< LinearOperatorType > | EmptyConstraintsType |
empty constraints for the explicit operator (old solution is already constrained) | |
typedef DifferentiableEllipticOperator< LinearOperatorType, ImplicitOperatorPartsType, ConstraintsOperatorType, QuadratureTraits > | ImplicitOperatorType |
define differential operator, implicit part | |
typedef EllipticOperator< ExplicitOperatorPartsType, DiscreteFunctionType, DiscreteFunctionType, EmptyConstraintsType, QuadratureTraits > | ExplicitOperatorType |
explicit part of differential operator. More... | |
typedef ParabolicEulerEstimator< DiscreteFunctionType, TimeProviderType, ImplicitModelImplementationType, ExplicitModelImplementationType > | EstimatorType |
type of error estimator | |
typedef MarkingStrategy< EstimatorType > | MarkingStrategyType |
type of marking strategy for space adaptivity | |
typedef TrueErrorEstimator< InitialValueFunctionType, Dune::Fem::L2Norm< GridPartType > > | InitialEstimatorType |
intial estimator | |
typedef MarkingStrategy< InitialEstimatorType > | InitialMarkingStrategyType |
Initial marking. | |
typedef InitialValueFunctionType | ExactSolutionFunctionType |
adapter to turn exact solution into a grid function (for visualization) | |
typedef std::tuple< DiscreteFunctionType *, const ExactSolutionFunctionType * > | IOTupleType |
type of input/output tuple | |
typedef DataOutput< GridType, IOTupleType > | DataOutputType |
type of data writer (produces VTK data) | |
typedef Dune::Fem::CheckPointer< GridType > | CheckPointerType |
type of check-pointer (dumps unaltered simulation data) | |
Define the RHS functional. The default for forces and Neumann is a ZeroGridFunction which will result in a ZeroFunctional which simply will do nothing. For assembling, both will be added efficently together using FunctionalExpressions. | |
typedef SumModelType::BulkForcesFunctionType | BulkForcesFunctionType |
typedef L2InnerProductFunctional< DiscreteFunctionSpaceType, BulkForcesFunctionType > | BulkForcesFunctional |
typedef SumModelType::NeumannBoundaryFunctionType | BoundaryFluxFunctionType |
typedef L2BoundaryFunctional< DiscreteFunctionSpaceType, BoundaryFluxFunctionType, typename ImplicitModelType::NeumannIndicatorType > | BoundaryFluxFunctional |
Public Member Functions | |
ParabolicFemScheme (DiscreteFunctionType &solution, const TimeProviderType &timeProvider, const ImplicitModelType &implicitModel, const ExplicitModelType &explicitModel, const InitialValueType &initialValue, const std::string name="heat") | |
Constructor. More... | |
virtual void | initialize () |
initialize the solution | |
virtual void | next () |
Close the current time-step. More... | |
virtual void | solve (bool forceMatrixAssembling=true) |
solve the system | |
virtual bool | mark (const double tolerance) |
mark elements for adaptation | |
virtual double | estimate () |
calculate error estimator | |
virtual double | timeEstimate () |
return the most recent time estimate | |
virtual void | adapt () |
do the adaptation for a given marking | |
virtual int | output () |
data I/O | |
virtual double | residual () const |
calculate residual (in small l^2) | |
virtual double | error () const |
Calculate L2/H1 error. More... | |
virtual size_t | size () const |
return some measure about the number of DOFs in use | |
Protected Member Functions | |
virtual void | nonLinearSolve (DiscreteFunctionType &rhs) |
Run the full Newton-scheme ... | |
virtual void | linearSolve (DiscreteFunctionType &rhs, bool forceMatrixAssembling) |
Perform only one step of the Newton scheme for the affine-linear case. More... | |
Detailed Description
class Dune::ACFem::ParabolicFemScheme< DiscreteFunction, TimeProvider, ImplicitModel, ExplicitModel, InitialValue, QuadratureTraits >
Basic parabolic fem-scheme class.
- Parameters
-
[in] DiscreteFunction The type of the discrete solution. [in] TimeProvider The type of the Dune::Fem::TimeProvider. [in] ImplicitModel The type of the implicit model. [in] ExplicitModel The type of the explicit model. [in] InitialValue The type of the initial value. Additionally, this can also be the exact solution in order to perform experimental convergence tests. ParabolicFemScheme::error() will compute the distance to this function; it will also be dumped to the VTK-files for visualization. [in] QuadratureTraits Special quadrature rules, for instance to implement mass-lumping. Defaults to DefaultQuadratureTraits. The template argument of the template template-parameter is the GridPartType.
Member Typedef Documentation
◆ ExplicitOperatorType
typedef EllipticOperator<ExplicitOperatorPartsType, DiscreteFunctionType, DiscreteFunctionType, EmptyConstraintsType, QuadratureTraits> Dune::ACFem::ParabolicFemScheme< DiscreteFunction, TimeProvider, ImplicitModel, ExplicitModel, InitialValue, QuadratureTraits >::ExplicitOperatorType |
explicit part of differential operator.
Need not be differentiable as it is only needed for the RHS.
◆ RestrictionProlongationType
typedef Dune::Fem::RestrictProlongDefault<DiscreteFunctionType> Dune::ACFem::ParabolicFemScheme< DiscreteFunction, TimeProvider, ImplicitModel, ExplicitModel, InitialValue, QuadratureTraits >::RestrictionProlongationType |
type of restriction/prolongation projection for adaptive simulations (use default here, i.e.
LagrangeInterpolation)
Constructor & Destructor Documentation
◆ ParabolicFemScheme()
|
inline |
Constructor.
- Parameters
-
[in,out] solution Storage for the discrete solution. [in] timeProvider A Dune::Fem time-provider to communicate time and step-size all over the place. [in] implicitModel The part of the operator to be applied at the end of the time interval. [in] explicitModel The part of the operator to be applied to the old values. [in] initialValue Guess what. This can either be a non-discrete function or something which already has a LocalFunction-property. This can also used to pass an "exact" "solution" for experimental convergence tests. If so the function still has to evaluate at the start of the current time-step, in order to be suitable as an initial value. [in] name Name used for parameters and output.
Member Function Documentation
◆ error()
|
inlinevirtual |
Calculate L2/H1 error.
This actually computes the distance to the initial value which optionally may be used for experimental convergence tests in order to pass an exact "solution". In this case initialValue may be time-dependent and has to give the correct value at the start of the time-step.
Implements Dune::ACFem::BasicFemScheme.
◆ linearSolve()
|
inlineprotectedvirtual |
Perform only one step of the Newton scheme for the affine-linear case.
This implies that an affine linear case is really allowed.
◆ next()
|
inlinevirtual |
Close the current time-step.
Here: copy new solution to oldSolution. Note that this does not move the timeProvider to the new time-step.
The documentation for this class was generated from the following file:
- dune/acfem/algorithms/parabolicfemscheme.hh