DUNE-ACFEM (2.5.1)

Dune::ACFem::SplittingFemScheme< DiscreteFunction, ImplicitModel, ZeroGridFunction< typename ImplicitModel::FunctionSpaceType, typename ImplicitModel::GridPartType >, ZeroModel< typename ImplicitModel::FunctionSpaceType, typename ImplicitModel::GridPartType >, InitialGuess > Class Template Reference

Constructor. More...

#include <dune/acfem/algorithms/splittingfemscheme.hh>

+ Collaboration diagram for Dune::ACFem::SplittingFemScheme< DiscreteFunction, ImplicitModel, ZeroGridFunction< typename ImplicitModel::FunctionSpaceType, typename ImplicitModel::GridPartType >, ZeroModel< typename ImplicitModel::FunctionSpaceType, typename ImplicitModel::GridPartType >, InitialGuess >:

Public Types

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 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, RestrictionProlongationTypeAdaptationManagerType
 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, DirichletIndicatorTypeConstraintsOperatorType
 type of Dirichlet constraints
 
typedef DifferentiableEmptyBlockConstraints< LinearOperatorType > EmptyConstraintsType
 empty constraints for the explicit operator (old solution is already constrained)
 
typedef DifferentiableEllipticOperator< LinearOperatorType, ImplicitModelType, ConstraintsOperatorTypeImplicitOperatorType
 define differential operator, implicit part
 
typedef EllipticOperator< ExplicitModelType, ExplicitDataFunctionType, DiscreteFunctionType, EmptyConstraintsTypeExplicitOperatorType
 explicit part of differential operator. More...
 
typedef InitialGuessFunctionType 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, IOTupleTypeDataOutputType
 type of data writer (produces VTK data)
 
typedef Dune::Fem::CheckPointer< GridTypeCheckPointerType
 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

virtual void solve (bool forceMatrixAssembling=true)
 solve the system
 
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...
 

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

template<class DiscreteFunction, class ImplicitModel, class InitialGuess>
class Dune::ACFem::SplittingFemScheme< DiscreteFunction, ImplicitModel, ZeroGridFunction< typename ImplicitModel::FunctionSpaceType, typename ImplicitModel::GridPartType >, ZeroModel< typename ImplicitModel::FunctionSpaceType, typename ImplicitModel::GridPartType >, InitialGuess >

Constructor.

Parameters
[in,out]solutionStorage for the discrete solution.
[in]implicitModelThe part of the operator to be applied at the end of the time interval.
[in]explicitDataThe grid-function the operator defined by explicitModel is applied to. This defaults to the ZeroGridFunction.
[in]explicitModelThe part of the operator to be applied to the old values. This defaults to the ZeroModel.
[in]initialGuessInitial guess. If present, initialize() will call the natural interpolation routine for the given discrete function space.
[in]nameName used for parameters and output.

Member Typedef Documentation

◆ ExplicitOperatorType

typedef EllipticOperator<ExplicitModelType, ExplicitDataFunctionType, DiscreteFunctionType, EmptyConstraintsType> Dune::ACFem::SplittingFemSchemeBase< DiscreteFunction, ImplicitModel, ZeroGridFunction< ImplicitModel::FunctionSpaceType, ImplicitModel::GridPartType > , ZeroModel< ImplicitModel::FunctionSpaceType, ImplicitModel::GridPartType > , InitialGuess >::ExplicitOperatorType
inherited

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::SplittingFemSchemeBase< DiscreteFunction, ImplicitModel, ZeroGridFunction< ImplicitModel::FunctionSpaceType, ImplicitModel::GridPartType > , ZeroModel< ImplicitModel::FunctionSpaceType, ImplicitModel::GridPartType > , InitialGuess >::RestrictionProlongationType
inherited

type of restriction/prolongation projection for adaptive simulations (use default here, i.e.

LagrangeInterpolation)

Member Function Documentation

◆ error()

virtual double Dune::ACFem::SplittingFemSchemeBase< DiscreteFunction, ImplicitModel, ZeroGridFunction< ImplicitModel::FunctionSpaceType, ImplicitModel::GridPartType > , ZeroModel< ImplicitModel::FunctionSpaceType, ImplicitModel::GridPartType > , InitialGuess >::error ( ) const
inlinevirtualinherited

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 initialGuess may be time-dependent and has to give the correct value at the start of the time-step.

Implements Dune::ACFem::BasicFemScheme.

◆ linearSolve()

virtual void Dune::ACFem::SplittingFemSchemeBase< DiscreteFunction, ImplicitModel, ZeroGridFunction< ImplicitModel::FunctionSpaceType, ImplicitModel::GridPartType > , ZeroModel< ImplicitModel::FunctionSpaceType, ImplicitModel::GridPartType > , InitialGuess >::linearSolve ( DiscreteFunctionType rhs,
bool  forceMatrixAssembling 
)
inlineprotectedvirtualinherited

Perform only one step of the Newton scheme for the affine-linear case.

This implies that an affine linear case is really allowed.


The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Nov 12, 23:30, 2024)