DUNE-ACFEM (2.5.1)
A class defining an elliptic operator. More...
#include <dune/acfem/operators/ellipticoperator.hh>
Detailed Description
class Dune::ACFem::EllipticOperator< OperatorParts, DomainFunction, RangeFunction, Constraints, QuadratureTraits >
A class defining an elliptic operator.
A class defining an elliptic differential operator \(\Phi\) of second order of the following type:
\[ \Phi: g+X \rightarrow X^\ast: u\mapsto \Phi(u). \]
\(\Phi\) – in general – maps an affine linear space (e.g. shifted by Dirichlet boundary values) to the dual of the attached vector space. The idea is that one always – also for linear problems – searches for zeros of \(\Phi\), i.e. the goal is
Find \(u\in g+X\) with \(\Phi(u) = 0\in X^\ast\).
The strong and weak form of the problem class this construct is intended for reads then
\[ \begin{split} -\nabla\cdot (A(x, u, \nabla u)\,\nabla u) + \nabla\cdot(b(x, u)\,u) + c(x, u)\,u &= f(x) + \Psi\quad \text{ in }\Omega,\\ u &= g_D \text{ on }\Gamma_D,\\ (A(x, u, \nabla u)\nabla u)\cdot\nu + \alpha(x, u)\,u &= g_N \text{ on }\Gamma_R,\\ (A(x, u, \nabla u)\nabla u)\cdot\nu &= g_N \text{ on }\Gamma_N,\\ \end{split} \]
In particular, \(\Psi\in H^{-1}\) models a functional, \(f\in L^2\) is the usual "right hand side".
The methods in this class provide all factors of the integrands not involving test functions. The multiplication by the test-functions is added in the class EllipticOperator. The weak formulation then reads:
\[ \int_\Omega (A(x,u,\nabla u)\,\nabla u)\cdot\nabla\phi\,dx + \int_\Omega (\nabla\cdot(b(x, u)\,u) + c(x, u)\,u)\,\phi\,dx + \int_{\Gamma_R} \alpha(x, u)\,u\,\phi\,do - \int_{\Gamma_N} g_N\,\phi\,do - \int_\Omega f(x)\,\phi\,dx - \langle\Psi,\,\phi\rangle = 0. \]
As the ModelInterface is potentially non-linear one has the option to leave the ModelInterface::BulkForcesFunctionType and ModelInterface::NeumannBoundaryFunctionType at zero and instead stuff the "right-hand-side" functions into the ModelInterface::robinFlux() and ModelInterface::source() methods. In principle even the functional \(\Psi\) could be expressed by a \(L^2\) scalar-product (don't shout at me: as the FEM-space is finite dimensional this is of course possible and one way to implement such a functional).
Nevertheless the different forces and other right-hand-side components are there and will be used by EllipticFemScheme and ParabolicFemScheme. Generally, the implementation checks for zero-objects (see ZeroExpression, ZeroGridFunction, ZeroFunctional, ZeroModel); the decision about which component has to be taken into account is taken at compile-time.
- Parameters
-
[in] DiscreteFunction The underlying discrete function space. [in] Model A class defining the differential operator. See class ModelInterface for the interface definition. The module Model Building Blocks provides some standard models which can be chained together by means of expression-templates in natural notation. EllipticModel contains an implementation based on dynamic polymorphism; it is meant for demonstration purposes only. [in] Constraints A class modelling the affine shift, for example by interpolating Dirichlet values into the DOFs belonging to the boundary. How this is done is left to the constraints-implementation. See BlockConstraintsOperatorInterface and DirichletConstraints.
- Todo:
- Does not allow for mapping between different function spaces. This could become important for systems like Stokes.
The documentation for this class was generated from the following file:
- dune/acfem/operators/ellipticoperator.hh