DUNE-ACFEM (2.5.1)

Model Building Blocks

Basic PDE-Models which can be used to conveniently form more complicated models by means of ModelExpressions. More...

Modules

 Building Blocks for the Bulk-Phase
 Define some "germs" for the bulk-contributions for differentiable operators.
 
 Building Blocks for the Driving Forces
 Some models for the "right hand side", L2 "bulk forces" and DiscreteLinearFunctionals.
 
 Building Blocks for Boundary Conditions
 Models for some common-case boundary conditions.
 
 Generate Model-Building-Blocks Conveniently
 Some utility function in order to conveniently define some standard models without having to go through the "typedef" trouble.
 
 BasicOperatorParts
 

Classes

class  Dune::ACFem::ZeroModel< FunctionSpace, GridPart >
 Define a simple zero model to optimize expression templates. More...
 

Detailed Description

Basic PDE-Models which can be used to conveniently form more complicated models by means of ModelExpressions.

Provided you already have some Fem::DiscreteFunction U at hand, a grid-function F for the bulk-forces and a grid-function G for Dirichlet boundary values, then you may some diffusion-reaction model in the following way:

auto myModel = laplaceModel(U, "-Delta_u") + 2.0 * massModel(U) - F + bc;
static OperatorPartsAdapterModel< MassOperatorParts< typename Object::FunctionSpaceType >, typename Object::GridPartType > massModel(const Object &object, const std::string &name="")
Generate a mass model fitting the specified object.
Definition: massmodel.hh:149
DirichletBoundaryModel< GridFunction, Indicator > dirichletBoundaryModel(const Fem::Function< typename GridFunction::FunctionSpaceType, GridFunction > &values, const BoundaryIndicatorInterface< Indicator > &where=Indicator())
Generate a DirichletBoundaryModel from given grid-function and boundary indicator.
Definition: dirichletmodel.hh:165

The resulting myModel will then model the following boundary value problem:

\[ \begin{split} -\Delta\,U + 2\,U & = F\text{ in }\Omega\\ U &= G\text{ on }\partial\Omega. \end{split} \]

Note
It is of course possible to form more complicated models, have different kind of boundary conditions on parts of the boundary and define non linear models. In addition, it is – also intentionally – ever possible to simply code your most-precious model in the most-efficient way without expression templates by following the layout prescribe by ModelInterface. Our believe is that efficiency is not an issue here, but flexibility is. If something cannot be formed conveniently from the BasicModels, then feel free to do "hand-work".
See also
ModelInterface, EllipticOperator, EllipticFemScheme, ParabolicFemScheme, ModelExpressions.
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (Apr 17, 22:29, 2024)