DUNE-ACFEM (2.5.1)

Dune::ACFem::EllipticFemScheme< DiscreteFunction, Model, ZeroGridFunction< typename Model::FunctionSpaceType, typename Model::GridPartType > > Class Template Reference

Constructor for the elliptic fem-scheme. More...

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

+ Collaboration diagram for Dune::ACFem::EllipticFemScheme< DiscreteFunction, Model, ZeroGridFunction< typename Model::FunctionSpaceType, typename Model::GridPartType > >:

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 Model ModelImplementationType
 type of the mathematical model
 
typedef DiscreteFunctionSpaceType::FunctionSpaceType FunctionSpaceType
 type of function space
 
typedef SolverSelector< DiscreteFunctionType, OperatorPartsType > SolverSelectorType
 choose type of discrete function, Matrix implementation and solver implementation
 
typedef Fem::NewtonInverseOperator< LinearOperatorType, LinearInverseOperatorType > NonLinearInverseOperatorType
 Non-linear solver.
 
typedef Fem::RestrictProlongDefault< DiscreteFunctionType > RestrictionProlongationType
 type of restriction/prolongation projection for adaptive simulations (use default here, i.e. More...
 
typedef Fem::AdaptationManager< GridType, RestrictionProlongationTypeAdaptationManagerType
 type of adaptation manager handling adapation and DoF compression
 
typedef ModelType::DirichletBoundaryFunctionType DirichletBoundaryFunctionType
 type of Dirichlet boundary values
 
typedef ModelType::DirichletWeightFunctionType DirichletWeightFunctionType
 type of Dirichlet weight function
 
typedef ModelType::DirichletIndicatorType DirichletIndicatorType
 types for various data
 
typedef DirichletConstraints< LinearOperatorType, EffectiveDirichletFunctionType, DirichletIndicatorTypeConstraintsOperatorType
 type of Dirichlet constraints
 
typedef DifferentiableEllipticOperator< LinearOperatorType, OperatorPartsType, ConstraintsOperatorTypeOperatorType
 define differential operator
 
typedef EllipticEstimator< DiscreteFunctionSpaceType, ModelImplementationTypeEstimatorType
 type of error estimator
 
typedef MarkingStrategy< EstimatorTypeMarkingStrategyType
 type of marking strategy
 
typedef GridFunctionConverter< InitialGuessType, GridPartType >::WrappedGridFunctionType InitialGuessFunctionType
 The wrapped InitialGuessType (no-op if already instrumented with LocalFunction)
 
typedef std::tuple< DiscreteFunctionType *, const InitialGuessFunctionType * > IOTupleType
 type of input/output tuple
 
typedef DataOutput< GridType, IOTupleTypeDataOutputType
 type of data writer
 

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 ModelType::BulkForcesFunctionType BulkForcesFunctionType
 
typedef L2InnerProductFunctional< DiscreteFunctionSpaceType, BulkForcesFunctionType > BulkForcesFunctional
 
typedef ModelType::NeumannBoundaryFunctionType BoundaryFluxFunctionType
 
typedef L2BoundaryFunctional< DiscreteFunctionSpaceType, BoundaryFluxFunctionType, typename ModelType::NeumannIndicatorTypeBoundaryFluxFunctional
 

Public Member Functions

 EllipticFemScheme (DiscreteFunctionType &solution, const ModelType &model, const InitialGuessType &initialGuess, const std::string &name="ellipt")
 Constructor for the elliptic fem-scheme. More...
 
 EllipticFemScheme (DiscreteFunctionType &solution, const ModelType &model, const std::string &name="ellipt")
 Constructor for the elliptic fem-scheme. More...
 
virtual void initialize ()
 initialize solution
 
virtual void solve (bool forceMatrixAssembling=true)
 
virtual bool mark (const double tolerance)
 mark elements for adaptation
 
virtual double estimate ()
 calculate error estimator
 
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
 

Public Attributes

decltype(std::declval< DirichletBoundaryFunctionType >()/std::declval< typename DirichletWeightFunctionType::GridFunctionType >()) typedef EffectiveDirichletFunctionType
 type of effective Dirichlet values
 

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 Model>
class Dune::ACFem::EllipticFemScheme< DiscreteFunction, Model, ZeroGridFunction< typename Model::FunctionSpaceType, typename Model::GridPartType > >

Constructor for the elliptic fem-scheme.

Parameters
[in]solutionMutable reference to an existing discrete function in order to store the solution.
[in]modelA const reference to something satisfying the ModelInterface.
[in]initialGuessAn initial guess for an iterative solver or an exact solution for experimental convergence tests. EllipticFemScheme::error() will compute the H1-distance from thise function.
[in]nameFancy prefix name for parameters and debugging.

Member Typedef Documentation

◆ RestrictionProlongationType

typedef Fem::RestrictProlongDefault<DiscreteFunctionType> Dune::ACFem::EllipticFemSchemeBase< DiscreteFunction, Model, ZeroGridFunction< Model::FunctionSpaceType, Model::GridPartType > >::RestrictionProlongationType
inherited

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

LagrangeInterpolation)

Constructor & Destructor Documentation

◆ EllipticFemScheme() [1/2]

template<class DiscreteFunction , class Model >
Dune::ACFem::EllipticFemScheme< DiscreteFunction, Model, ZeroGridFunction< typename Model::FunctionSpaceType, typename Model::GridPartType > >::EllipticFemScheme ( DiscreteFunctionType &  solution,
const ModelType model,
const InitialGuessType initialGuess,
const std::string &  name = "ellipt" 
)
inline

Constructor for the elliptic fem-scheme.

Parameters
[in]solutionMutable reference to an existing discrete function in order to store the solution.
[in]modelA const reference to something satisfying the ModelInterface.
[in]initialGuessAn initial guess for an iterative solver or an exact solution for experimental convergence tests. EllipticFemScheme::error() will compute the H1-distance from thise function.
[in]nameFancy prefix name for parameters and debugging.

◆ EllipticFemScheme() [2/2]

template<class DiscreteFunction , class Model >
Dune::ACFem::EllipticFemScheme< DiscreteFunction, Model, ZeroGridFunction< typename Model::FunctionSpaceType, typename Model::GridPartType > >::EllipticFemScheme ( DiscreteFunctionType &  solution,
const ModelType model,
const std::string &  name = "ellipt" 
)
inline

Constructor for the elliptic fem-scheme.

Parameters
[in]solutionMutable reference to an existing discrete function in order to store the solution.
[in]modelA const reference to something satisfying the ModelInterface.
[in]nameFancy prefix name for parameters and debugging.
Note
This constructor automatically constructs the InitialGuessType as ZeroGridFunction.

Member Function Documentation

◆ linearSolve()

virtual void Dune::ACFem::EllipticFemSchemeBase< DiscreteFunction, Model, ZeroGridFunction< Model::FunctionSpaceType, Model::GridPartType > >::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.

◆ solve()

virtual void Dune::ACFem::EllipticFemSchemeBase< DiscreteFunction, Model, ZeroGridFunction< Model::FunctionSpaceType, Model::GridPartType > >::solve ( bool  forceMatrixAssembling = true)
inlinevirtualinherited

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.80.0 (May 1, 22:29, 2024)