DUNE-ACFEM (2.5.1)
Some utility function in order to conveniently define some standard models without having to go through the "typedef" trouble. More...
Functions | |
template<class GridFunction > | |
BulkForcesFunctionModel< GridFunction > | Dune::ACFem::bulkForcesModel (const Fem::Function< typename GridFunction::FunctionSpaceType, GridFunction > &f, const std::string &name="") |
Generate a BulkForcesFunctionModel for the "right hand side". More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::DeformationTensorOperatorParts< FunctionSpace >::linearizedFlux (const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const |
Evaluate the linearized flux in local coordinates. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::DeformationTensorOperatorParts< FunctionSpace >::fluxDivergence (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, const HessianRangeType &hessian, RangeType &result) const |
Compute the point-wise value of the flux-part of the operator, meaning the part of the differential operator which is multiplied by the derivative of the test function. More... | |
template<class Object > | |
static DeformationTensorOperatorParts< typename Object::FunctionSpaceType > | Dune::ACFem::deformationTensorOperatorParts (const Object &object, const std::string &name="") |
Generate a deformation tensor model fitting the specified object. More... | |
template<class Object > | |
static OperatorPartsAdapterModel< DeformationTensorOperatorParts< typename Object::FunctionSpaceType >, typename Object::GridPartType > | Dune::ACFem::deformationTensorModel (const Object &object, const std::string &name="") |
Generate a deformation tensor model fitting the specified object. More... | |
const GridPartType & | Dune::ACFem::DirichletBoundaryModel< GridFunction, Indicator >::gridPart () const |
Return the GridPart (non-interface method) | |
template<class GridFunction , class Indicator = EntireBoundaryIndicatorType> | |
DirichletBoundaryModel< GridFunction, Indicator > | Dune::ACFem::dirichletBoundaryModel (const Fem::Function< typename GridFunction::FunctionSpaceType, GridFunction > &values, const BoundaryIndicatorInterface< Indicator > &where=Indicator()) |
Generate a DirichletBoundaryModel from given grid-function and boundary indicator. More... | |
template<class Object , class Indicator = EntireBoundaryIndicatorType> | |
DirichletBoundaryModel< ZeroGridFunction< typename Object::FunctionSpaceType, typename Object::GridPartType >, Indicator > | Dune::ACFem::dirichletZeroModel (const Object &object, const BoundaryIndicatorInterface< Indicator > &where=Indicator()) |
Generate homogeneous Dirichlet boundary conditions fitting the specified object. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::DivergenceOperatorParts< GridFunction >::source (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, RangeType &result) const |
The zero-order term as function of local coordinates. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::DivergenceOperatorParts< GridFunction >::linearizedSource (const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, RangeType &result) const |
The linearized source term as function of local coordinates. More... | |
template<class GridFunction > | |
static OperatorPartsAdapterModel< DivergenceOperatorParts< GridFunction >, typename GridFunction::GridPartType > | Dune::ACFem::divergenceModel (const Fem::Function< typename GridFunction::FunctionSpaceType, GridFunction > &f, const std::string &name="") |
Generate a Laplacian-model fitting the specified object. More... | |
template<class Intersection > | |
bool | Dune::ACFem::FluidSelfTransportOperatorParts< FunctionSpace >::setIntersection (const Intersection &intersection) const |
Per-intersection initialization for the boundary contributions. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::FluidSelfTransportOperatorParts< FunctionSpace >::flux (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const |
Evaluate \(A(x, u)\nabla u(x)\) in local coordinates. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::FluidSelfTransportOperatorParts< FunctionSpace >::linearizedFlux (const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const |
Evaluate the linearized flux in local coordinates. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::FluidSelfTransportOperatorParts< FunctionSpace >::fluxDivergence (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, const HessianRangeType &hessian, RangeType &result) const |
Compute the point-wise value of the flux-part of the operator, meaning the part of the differential operator which is multiplied by the derivative of the test function. More... | |
template<class Object > | |
static FluidSelfTransportOperatorParts< typename Object::FunctionSpaceType > | Dune::ACFem::fluidSelfTransportOperatorParts (const Object &object, const std::string &name="") |
Generate a Navier-Stokes non-linearity fitting the given object. More... | |
template<class Object > | |
static OperatorPartsAdapterModel< FluidSelfTransportOperatorParts< typename Object::FunctionSpaceType >, typename Object::GridPartType > | Dune::ACFem::fluidSelfTransportModel (const Object &object, const std::string &name="") |
Generate a Navier-Stokes non-linearity fitting the given object. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::GradientOperatorParts< GridFunction >::flux (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const |
Evaluate \(A(x, u)\nabla u(x)\) in local coordinates. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::GradientOperatorParts< GridFunction >::linearizedFlux (const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const |
Evaluate the linearized flux in local coordinates. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::GradientOperatorParts< GridFunction >::fluxDivergence (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, const HessianRangeType &hessian, RangeType &result) const |
Compute the point-wise value of the flux-part of the operator, meaning the part of the differential operator which is multiplied by the derivative of the test function. More... | |
template<class GridFunction > | |
static GradientOperatorParts< GridFunction > | Dune::ACFem::gradientOperatorParts (const Fem::Function< typename GridFunction::FunctionSpaceType, GridFunction > &f, const std::string &name="") |
Generate a Gradient-model fitting the specified object. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::IncompressibleSelfTransportOperatorParts< FunctionSpace >::source (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, RangeType &result) const |
The zero-order term as function of local coordinates. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::IncompressibleSelfTransportOperatorParts< FunctionSpace >::linearizedSource (const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, RangeType &result) const |
The linearized source term as function of local coordinates. More... | |
template<class Object > | |
static IncompressibleSelfTransportOperatorParts< typename Object::FunctionSpaceType > | Dune::ACFem::incompressibleSelfTransportOpertorParts (const Object &object, const std::string &name="") |
Generate a Navier-Stokes non-linearity fitting the given object. More... | |
template<class Object > | |
static OperatorPartsAdapterModel< IncompressibleSelfTransportOperatorParts< typename Object::FunctionSpaceType >, typename Object::GridPartType > | Dune::ACFem::incompressibleSelfTransportModel (const Object &object, const std::string &name="") |
Generate a Navier-Stokes non-linearity fitting the given object. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::IncompressibleTransportOperatorParts< FunctionSpace, Velocity >::linearizedSource (const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, RangeType &result) const |
The linearized source term as function of local coordinates. More... | |
template<class Object , class Velocity > | |
static IncompressibleTransportOperatorParts< typename Object::FunctionSpaceType, Velocity > | Dune::ACFem::incompressibleTransportOperatorParts (const Object &object, const Fem::Function< typename Velocity::FunctionSpaceType, Velocity > &velocity, const std::string &name="") |
Generate an advection-model object. More... | |
template<class Object , class Velocity > | |
static OperatorPartsAdapterModel< IncompressibleTransportOperatorParts< typename Object::FunctionSpaceType, Velocity >, typename Object::GridPartType > | Dune::ACFem::incompressibleTransportModel (const Object &object, const Fem::Function< typename Velocity::FunctionSpaceType, Velocity > &velocity, const std::string &name="") |
Generate an advection-model object. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::LaplacianOperatorParts< FunctionSpace >::linearizedFlux (const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const |
Evaluate the linearized flux in local coordinates. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::LaplacianOperatorParts< FunctionSpace >::fluxDivergence (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, const HessianRangeType &hessian, RangeType &result) const |
Compute the point-wise value of the flux-part of the operator, meaning the part of the differential operator which is multiplied by the derivative of the test function. More... | |
template<class Object > | |
static LaplacianOperatorParts< typename Object::FunctionSpaceType > | Dune::ACFem::laplacianOperatorParts (const Object &object, const std::string &name="") |
Generate OperatorParts for a (weak, of course) Laplacian. More... | |
template<class Object > | |
static OperatorPartsAdapterModel< LaplacianOperatorParts< typename Object::FunctionSpaceType >, typename Object::GridPartType > | Dune::ACFem::laplacianModel (const Object &object, const std::string &name="") |
Generate a Laplacian-model fitting the specified object. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::MassOperatorParts< FunctionSpace >::linearizedSource (const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, RangeType &result) const |
The linearized source term as function of local coordinates. More... | |
template<class Object > | |
static MassOperatorParts< typename Object::FunctionSpaceType > | Dune::ACFem::massOperatorParts (const Object &object, const std::string &name="") |
Generate OperatorParts for a (weak, of course) Mass. More... | |
template<class Object > | |
static OperatorPartsAdapterModel< MassOperatorParts< typename Object::FunctionSpaceType >, typename Object::GridPartType > | Dune::ACFem::massModel (const Object &object, const std::string &name="") |
Generate a mass model fitting the specified object. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::MeanCurvatureOperatorParts< FunctionSpace, Parameter >::flux (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const |
Evaluate \(A(x, u)\nabla u(x)\) in local coordinates. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::MeanCurvatureOperatorParts< FunctionSpace, Parameter >::linearizedFlux (const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const |
Evaluate the linearized flux in local coordinates. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::MeanCurvatureOperatorParts< FunctionSpace, Parameter >::fluxDivergence (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, const HessianRangeType &hessian, RangeType &result) const |
Compute the point-wise value of the flux-part of the operator, meaning the part of the differential operator which is multiplied by the derivative of the test function. More... | |
template<class Object , class Parameter = TrivialParameter<typename Object::FunctionSpaceType::RangeType>> | |
static MeanCurvatureOperatorParts< typename Object::FunctionSpaceType, Parameter > | Dune::ACFem::meanCurvatureOperatorParts (const Parameter ®ularization, const Object &object, const std::string &name="") |
Generate a MeanCurvature-model fitting the specified object. More... | |
template<class Object , class Parameter = TrivialParameter<typename Object::FunctionSpaceType::RangeType>> | |
static OperatorPartsAdapterModel< MeanCurvatureOperatorParts< typename Object::FunctionSpaceType, Parameter >, typename Object::GridPartType > | Dune::ACFem::meanCurvatureModel (const Parameter ®ularization, const Object &object, const std::string &name="") |
Generate a mean-curvature-model fitting the specified object. More... | |
std::string | Dune::ACFem::NeumannBoundaryModel< GridFunction, Indicator >::name () const |
Print a descriptive name for debugging and output. More... | |
bool | Dune::ACFem::NeumannBoundaryModel< GridFunction, Indicator >::setIntersection (const IntersectionType &intersection) const |
NeumannIndicatorType | Dune::ACFem::NeumannBoundaryModel< GridFunction, Indicator >::neumannIndicator () const |
Generate an object to identify parts of the boundary subject to Neumann boundary conditions. More... | |
NeumannBoundaryFunctionType | Dune::ACFem::NeumannBoundaryModel< GridFunction, Indicator >::neumannBoundaryFunction (const GridPartType &gridPart) const |
Generate an instance of a class defining Neumann boundary values as a Fem grid-function. More... | |
const GridPartType & | Dune::ACFem::NeumannBoundaryModel< GridFunction, Indicator >::gridPart () const |
Return the GridPart (non-interface method) | |
template<class GridFunction , class Indicator = EntireBoundaryIndicatorType> | |
NeumannBoundaryModel< GridFunction, Indicator > | Dune::ACFem::neumannBoundaryModel (const Fem::Function< typename GridFunction::FunctionSpaceType, GridFunction > &values, const BoundaryIndicatorInterface< Indicator > &where=Indicator()) |
Generate a NeumannBoundaryModel from given grid-function and boundary indicator. More... | |
template<class Object , class Indicator = EntireBoundaryIndicatorType> | |
NeumannBoundaryModel< ZeroGridFunction< typename Object::FunctionSpaceType, typename Object::GridPartType >, Indicator > | Dune::ACFem::neumannZeroModel (const Object &object, const BoundaryIndicatorInterface< Indicator > &where=Indicator()) |
Generate homogeneous Neumann boundary conditions fitting the specified object. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::P_LaplacianOperatorParts< FunctionSpace >::flux (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const |
Evaluate \(A(x, u)\nabla u(x)\) in local coordinates. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::P_LaplacianOperatorParts< FunctionSpace >::linearizedFlux (const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const |
Evaluate the linearized flux in local coordinates. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::P_LaplacianOperatorParts< FunctionSpace >::fluxDivergence (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, const HessianRangeType &hessian, RangeType &result) const |
Compute the point-wise value of the flux-part of the operator, meaning the part of the differential operator which is multiplied by the derivative of the test function. More... | |
template<class Object > | |
static P_LaplacianOperatorParts< typename Object::FunctionSpaceType > | Dune::ACFem::p_LaplacianOperatorParts (const typename Object::FunctionSpaceType::RangeFieldType &p, const Object &object, const std::string &name="") |
Generate OperatorParts for a (weak, of course) p-Laplacian. More... | |
template<class Object > | |
static OperatorPartsAdapterModel< P_LaplacianOperatorParts< typename Object::FunctionSpaceType >, typename Object::GridPartType > | Dune::ACFem::p_LaplacianModel (const typename Object::FunctionSpaceType::RangeFieldType &p, const Object &object, const std::string &name="") |
Generate a P-laplacian model fitting the specified object. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::P_MassOperatorParts< FunctionSpace >::source (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, RangeType &result) const |
template<class Entity , class Point > | |
void | Dune::ACFem::P_MassOperatorParts< FunctionSpace >::linearizedSource (const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, RangeType &result) const |
template<class Object > | |
static P_MassOperatorParts< typename Object::FunctionSpaceType > | Dune::ACFem::p_MassOperatorParts (const typename Object::FunctionSpaceType::RangeFieldType &p, const Object &object, const std::string &name="") |
Generate OperatorParts for a (weak, of course) Mass. More... | |
template<class Object > | |
static OperatorPartsAdapterModel< P_MassOperatorParts< typename Object::FunctionSpaceType >, typename Object::GridPartType > | Dune::ACFem::p_MassModel (const typename Object::FunctionSpaceType::RangeFieldType &p, const Object &object, const std::string &name="") |
Generate a P-power mass-model fitting the specified object. More... | |
template<class Intersection , class Point > | |
void | Dune::ACFem::RobinBoundaryOperatorParts< FunctionSpace, Indicator >::linearizedRobinFlux (const RangeType &uBar, const Intersection &intersection, const Point &x, const DomainType &unitOuterNormal, const RangeType &value, RangeType &result) const |
The linearized Robin-type flux term. More... | |
template<class Object , class Indicator = EntireBoundaryIndicatorType> | |
static RobinBoundaryOperatorParts< typename Object::FunctionSpaceType, Indicator > | Dune::ACFem::robinOperatorParts (const Object &object, const BoundaryIndicatorInterface< Indicator > &where=Indicator(), const std::string &name="") |
Generate OperatorParts for (homogeneous) Robin boundary conditions. More... | |
template<class Object , class Indicator = EntireBoundaryIndicatorType> | |
OperatorPartsAdapterModel< RobinBoundaryOperatorParts< typename Object::FunctionSpaceType, Indicator >, typename Object::GridPartType > | Dune::ACFem::robinZeroModel (const Object &object, const BoundaryIndicatorInterface< Indicator > &where=Indicator()) |
Generate homogeneous Robin boundary conditions fitting the specified object. More... | |
template<class GridFunction , class Indicator = EntireBoundaryIndicatorType> | |
auto | Dune::ACFem::robinBoundaryModel (const Fem::Function< typename GridFunction::FunctionSpaceType, GridFunction > &values, const BoundaryIndicatorInterface< Indicator > &where=Indicator()) -> decltype(robinZeroModel(asImp(values), where *neumannBoundaryModel(asImp(values), where).neumannIndicator())+neumannBoundaryModel(asImp(values), where)) |
Generate a RobinBoundaryModel from given grid-function and boundary indicator. More... | |
template<class Entity > | |
void | Dune::ACFem::TransportOperatorParts< FunctionSpace, Velocity >::setEntity (const Entity &entity) const |
Per entity initialization, if that is needed. More... | |
template<class Intersection > | |
bool | Dune::ACFem::TransportOperatorParts< FunctionSpace, Velocity >::setIntersection (const Intersection &intersection) const |
Per-intersection initialization for the boundary contributions. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::TransportOperatorParts< FunctionSpace, Velocity >::linearizedFlux (const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const |
template<class Entity , class Point > | |
void | Dune::ACFem::TransportOperatorParts< FunctionSpace, Velocity >::fluxDivergence (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, const HessianRangeType &hessian, RangeType &result) const |
! More... | |
template<class Intersection , class Point > | |
void | Dune::ACFem::TransportOperatorParts< FunctionSpace, Velocity >::linearizedRobinFlux (const RangeType &uBar, const Intersection &intersection, const Point &x, const DomainType &unitOuterNormal, const RangeType &value, RangeType &result) const |
template<class Object , class Velocity > | |
static TransportOperatorParts< typename Object::FunctionSpaceType, Velocity > | Dune::ACFem::transportOperatorParts (const Object &object, const Fem::Function< typename Velocity::FunctionSpaceType, Velocity > &velocity, const std::string &name="") |
Generate an advection-model object. More... | |
template<class Object , class Velocity > | |
static OperatorPartsAdapterModel< TransportOperatorParts< typename Object::FunctionSpaceType, Velocity >, typename Velocity::GridPartType > | Dune::ACFem::transportModel (const Object &object, const Fem::Function< typename Velocity::FunctionSpaceType, Velocity > &velocity, const std::string &name="") |
Generate an advection-model object. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::WeakDivergenceOperatorParts< GridFunction >::flux (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const |
Evaluate \(A(x, u)\nabla u(x)\) in local coordinates. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::WeakDivergenceOperatorParts< GridFunction >::linearizedFlux (const RangeType &uBar, const JacobianRangeType &DuBar, const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, JacobianRangeType &flux) const |
Evaluate the linearized flux in local coordinates. More... | |
template<class Entity , class Point > | |
void | Dune::ACFem::WeakDivergenceOperatorParts< GridFunction >::fluxDivergence (const Entity &entity, const Point &x, const RangeType &value, const JacobianRangeType &jacobian, const HessianRangeType &hessian, RangeType &result) const |
Compute the point-wise value of the flux-part of the operator, meaning the part of the differential operator which is multiplied by the derivative of the test function. More... | |
template<class GridFunction > | |
static OperatorPartsAdapterModel< WeakDivergenceOperatorParts< GridFunction >, typename GridFunction::GridPartType > | Dune::ACFem::weakDivergenceModel (const Fem::Function< typename GridFunction::FunctionSpaceType, GridFunction > &f, const std::string &name="") |
Generate a weak divergence model fitting the specified object. More... | |
template<class Object > | |
static ZeroModel< typename Object::FunctionSpaceType, typename Object::GridPartType > | Dune::ACFem::zeroModel (const Object &object, const std::string &name="0") |
Generate a Zero-model fitting the specified object. More... | |
Detailed Description
Some utility function in order to conveniently define some standard models without having to go through the "typedef" trouble.
Typedef Documentation
◆ DirichletBoundaryFunctionType
typedef decltype(std::declval<OuterIndicatorType>() * std::declval<GridFunction>()) Dune::ACFem::ModelTraits< DirichletBoundaryModel< GridFunction, Indicator > >::DirichletBoundaryFunctionType |
A BoundarySupportedFunction which must be sub-ordinate to the DirichletIndicatorType.
- See also
- BoundarySupportedFunction, in particular the "factory" function boundarySupportedFunction() and BoundaryFunctionExpressions for the set of supported algebraic operations for such functions.
◆ DirichletIndicatorType
typedef DirichletBoundaryFunctionType::IndicatorType Dune::ACFem::ModelTraits< DirichletBoundaryModel< GridFunction, Indicator > >::DirichletIndicatorType |
Something satisfying the BoundaryIndicatorInterface.
This models the indicator function for the subset of the boundary where Dirichlet conditions apply. The default is the indicator function for the empty set.
◆ DirichletWeightFunctionType
typedef BoundarySupportedFunction<decltype(oneFunction(std::declval<GridFunction>())), DirichletIndicatorType> Dune::ACFem::ModelTraits< DirichletBoundaryModel< GridFunction, Indicator > >::DirichletWeightFunctionType |
A scalar BoundarySupportedFunction which defines "weighted" Dirichlet values of the form.
\[ \chi_D(x)\,w_D(x)\,u(x) = g_D(x)\text{ on }\Gamma_D\subset\partial\Omega. \]
Here \(\chi_D\) is the indicator function on \(\Gamma_D\) and \(g_D\) denotes the prescribed Dirichlet values. Under simple circumstances \(w_D\) will simply evaluate to 1. The presence of \(w_D\) seems to be a little bit obscure, but the presence of this factor helps a lot in defining ModelExpressions in a simple and consitent way. The drawback is that this function needs to be adjusted when changing the DirichletIndicatorType. The DirichletBoundaryModel (Model Building Blocks) takes automatically care of this. If you define your own model, you have to take care to define a suitable weight function. Normally it should suffice to copy the corresponding three lines from the DefaultModelTraits out of modelinterface.hh into your specialized Model-class.
◆ NeumannBoundaryFunctionType
typedef decltype(std::declval<OuterIndicatorType>() * std::declval<GridFunction>()) Dune::ACFem::ModelTraits< NeumannBoundaryModel< GridFunction, Indicator > >::NeumannBoundaryFunctionType |
A function modelling the "right hand side" inhomogeneous von Neumann as for inhomogeneous Robin boundary conditions.
This must be a BoundarySupportedFunction subordinate to NeumannIndicatorType.
- See also
- BoundarySupportedFunction, in particular the "factory" function boundarySupprotedFunction() and BoundaryFunctionExpressions for the set of supported algebraic operations for such functions.
◆ NeumannIndicatorType
typedef NeumannBoundaryFunctionType::IndicatorType Dune::ACFem::ModelTraits< NeumannBoundaryModel< GridFunction, Indicator > >::NeumannIndicatorType |
Something satisfying the BoundaryIndicatorInterface.
This models the indicator function for the subset of the boundary where inhomogeneous boundary conditions apply. The default is the indicator function for the empty set. For homogeneous von Neumann or Robin boundary conditions this can be left at its default, which is the indicator function for the empty set (aka x -> 0).
Enumeration Type Documentation
◆ ConstituentFlags [1/14]
enum Dune::ACFem::OperatorPartsTraits< DeformationTensorOperatorParts< FunctionSpace > >::ConstituentFlags |
Provide information about the constituents of the model.
All other components (like forces, boundary values) can be identified by looking at the data type.
◆ ConstituentFlags [2/14]
enum Dune::ACFem::OperatorPartsTraits< DivergenceOperatorParts< GridFunction > >::ConstituentFlags |
Provide information about the constituents of the model.
All other components (like forces, boundary values) can be identified by looking at the data type.
◆ ConstituentFlags [3/14]
enum Dune::ACFem::OperatorPartsTraits< FluidSelfTransportOperatorParts< FunctionSpace > >::ConstituentFlags |
Provide information about the constituents of the model.
All other components (like forces, boundary values) can be identified by looking at the data type.
◆ ConstituentFlags [4/14]
enum Dune::ACFem::OperatorPartsTraits< GradientOperatorParts< GridFunction > >::ConstituentFlags |
Provide information about the constituents of the model.
All other components (like forces, boundary values) can be identified by looking at the data type.
◆ ConstituentFlags [5/14]
enum Dune::ACFem::OperatorPartsTraits< IncompressibleSelfTransportOperatorParts< FunctionSpace > >::ConstituentFlags |
Provide information about the constituents of the model.
All other components (like forces, boundary values) can be identified by looking at the data type.
◆ ConstituentFlags [6/14]
enum Dune::ACFem::OperatorPartsTraits< IncompressibleTransportOperatorParts< FunctionSpace, Velocity > >::ConstituentFlags |
Provide information about the constituents of the model.
All other components (like forces, boundary values) can be identified by looking at the data type.
◆ ConstituentFlags [7/14]
enum Dune::ACFem::OperatorPartsTraits< LaplacianOperatorParts< FunctionSpace > >::ConstituentFlags |
◆ ConstituentFlags [8/14]
enum Dune::ACFem::OperatorPartsTraits< MassOperatorParts< FunctionSpace > >::ConstituentFlags |
Provide information about the constituents of the model.
All other components (like forces, boundary values) can be identified by looking at the data type.
◆ ConstituentFlags [9/14]
enum Dune::ACFem::OperatorPartsTraits< MeanCurvatureOperatorParts< FunctionSpace, Parameter > >::ConstituentFlags |
Provide information about the constituents of the model.
All other components (like forces, boundary values) can be identified by looking at the data type.
◆ ConstituentFlags [10/14]
enum Dune::ACFem::OperatorPartsTraits< P_LaplacianOperatorParts< FunctionSpace > >::ConstituentFlags |
Provide information about the constituents of the model.
All other components (like forces, boundary values) can be identified by looking at the data type.
◆ ConstituentFlags [11/14]
enum Dune::ACFem::OperatorPartsTraits< P_MassOperatorParts< FunctionSpace > >::ConstituentFlags |
◆ ConstituentFlags [12/14]
enum Dune::ACFem::OperatorPartsTraits< RobinBoundaryOperatorParts< FunctionSpace, Indicator > >::ConstituentFlags |
◆ ConstituentFlags [13/14]
enum Dune::ACFem::OperatorPartsTraits< TransportOperatorParts< FunctionSpace, Velocity > >::ConstituentFlags |
◆ ConstituentFlags [14/14]
enum Dune::ACFem::OperatorPartsTraits< WeakDivergenceOperatorParts< GridFunction > >::ConstituentFlags |
Provide information about the constituents of the model.
All other components (like forces, boundary values) can be identified by looking at the data type.
◆ StructureFlags [1/17]
enum Dune::ACFem::ModelTraits< BulkForcesFunctionModel< GridFunction > >::StructureFlags |
◆ StructureFlags [2/17]
enum Dune::ACFem::OperatorPartsTraits< DeformationTensorOperatorParts< FunctionSpace > >::StructureFlags |
Static flags for the overall structure of the operator.
◆ StructureFlags [3/17]
enum Dune::ACFem::ModelTraits< DirichletBoundaryModel< GridFunction, Indicator > >::StructureFlags |
◆ StructureFlags [4/17]
enum Dune::ACFem::OperatorPartsTraits< DivergenceOperatorParts< GridFunction > >::StructureFlags |
Static flags for the overall structure of the operator.
◆ StructureFlags [5/17]
enum Dune::ACFem::OperatorPartsTraits< FluidSelfTransportOperatorParts< FunctionSpace > >::StructureFlags |
Static flags for the overall structure of the operator.
◆ StructureFlags [6/17]
enum Dune::ACFem::OperatorPartsTraits< GradientOperatorParts< GridFunction > >::StructureFlags |
Static flags for the overall structure of the operator.
◆ StructureFlags [7/17]
enum Dune::ACFem::OperatorPartsTraits< IncompressibleSelfTransportOperatorParts< FunctionSpace > >::StructureFlags |
Static flags for the overall structure of the operator.
◆ StructureFlags [8/17]
enum Dune::ACFem::OperatorPartsTraits< IncompressibleTransportOperatorParts< FunctionSpace, Velocity > >::StructureFlags |
Static flags for the overall structure of the operator.
◆ StructureFlags [9/17]
enum Dune::ACFem::OperatorPartsTraits< LaplacianOperatorParts< FunctionSpace > >::StructureFlags |
◆ StructureFlags [10/17]
enum Dune::ACFem::OperatorPartsTraits< MassOperatorParts< FunctionSpace > >::StructureFlags |
Static flags for the overall structure of the operator.
◆ StructureFlags [11/17]
enum Dune::ACFem::OperatorPartsTraits< MeanCurvatureOperatorParts< FunctionSpace, Parameter > >::StructureFlags |
Static flags for the overall structure of the operator.
◆ StructureFlags [12/17]
enum Dune::ACFem::ModelTraits< NeumannBoundaryModel< GridFunction, Indicator > >::StructureFlags |
◆ StructureFlags [13/17]
enum Dune::ACFem::OperatorPartsTraits< P_LaplacianOperatorParts< FunctionSpace > >::StructureFlags |
Static flags for the overall structure of the operator.
◆ StructureFlags [14/17]
enum Dune::ACFem::OperatorPartsTraits< P_MassOperatorParts< FunctionSpace > >::StructureFlags |
◆ StructureFlags [15/17]
enum Dune::ACFem::OperatorPartsTraits< RobinBoundaryOperatorParts< FunctionSpace, Indicator > >::StructureFlags |
◆ StructureFlags [16/17]
enum Dune::ACFem::OperatorPartsTraits< TransportOperatorParts< FunctionSpace, Velocity > >::StructureFlags |
◆ StructureFlags [17/17]
enum Dune::ACFem::OperatorPartsTraits< WeakDivergenceOperatorParts< GridFunction > >::StructureFlags |
Static flags for the overall structure of the operator.
Function Documentation
◆ bulkForcesModel()
BulkForcesFunctionModel< GridFunction > Dune::ACFem::bulkForcesModel | ( | const Fem::Function< typename GridFunction::FunctionSpaceType, GridFunction > & | f, |
const std::string & | name = "" |
||
) |
Generate a BulkForcesFunctionModel for the "right hand side".
- Parameters
-
[in] f The L2-function for the RHS. [in] name Optional. If left empty some sensible name is built from f.name() for debugging purposes.
◆ deformationTensorModel()
|
inlinestatic |
Generate a deformation tensor model fitting the specified object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
◆ deformationTensorOperatorParts()
|
inlinestatic |
Generate a deformation tensor model fitting the specified object.
◆ dirichletBoundaryModel()
DirichletBoundaryModel< GridFunction, Indicator > Dune::ACFem::dirichletBoundaryModel | ( | const Fem::Function< typename GridFunction::FunctionSpaceType, GridFunction > & | values, |
const BoundaryIndicatorInterface< Indicator > & | where = Indicator() |
||
) |
Generate a DirichletBoundaryModel from given grid-function and boundary indicator.
- Parameters
-
[in] values The Dirichlet boundary values. [in] where Indicator which decides which part of the boundary is affected
Referenced by Dune::ACFem::dirichletZeroModel().
◆ dirichletZeroModel()
DirichletBoundaryModel< ZeroGridFunction< typename Object::FunctionSpaceType, typename Object::GridPartType >, Indicator > Dune::ACFem::dirichletZeroModel | ( | const Object & | object, |
const BoundaryIndicatorInterface< Indicator > & | where = Indicator() |
||
) |
Generate homogeneous Dirichlet boundary conditions fitting the specified object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType and a method object.gridPart().
- Parameters
-
[in] object Super-object, the DirichletBoundaryModel generated will be compatible to this object. [in] where Indicator which decides where the Dirichlet b.c. apply.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
References Dune::ACFem::dirichletBoundaryModel().
◆ divergenceModel()
|
inlinestatic |
Generate a Laplacian-model fitting the specified object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
◆ fluidSelfTransportModel()
|
inlinestatic |
Generate a Navier-Stokes non-linearity fitting the given object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
◆ fluidSelfTransportOperatorParts()
|
inlinestatic |
Generate a Navier-Stokes non-linearity fitting the given object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
◆ flux() [1/5]
|
inline |
Evaluate \(A(x, u)\nabla u(x)\) in local coordinates.
This can be interpreted as a diffusive "flux", at least when restricted to some surface. \(\bar u\) denotes the point of linearization for non-linear problems.
- Parameters
-
[in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value To allow integration by parts for first order terms and in preparation for non-linear models. [in] jacobian The value of \(\nabla\bar\psi\). [out] flux The result of the computation.
- Note
- "flux" in this sense simply means something which is multiplied by the jacobians of the test-function and covers "diffusive fluxes" as well as advective fluxes.
References Dune::ACFem::FluidSelfTransportOperatorParts< FunctionSpace >::flux().
Referenced by Dune::ACFem::FluidSelfTransportOperatorParts< FunctionSpace >::flux(), and Dune::ACFem::FluidSelfTransportOperatorParts< FunctionSpace >::linearizedFlux().
◆ flux() [2/5]
|
inline |
Evaluate \(A(x, u)\nabla u(x)\) in local coordinates.
This can be interpreted as a diffusive "flux", at least when restricted to some surface. \(\bar u\) denotes the point of linearization for non-linear problems.
- Parameters
-
[in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value To allow integration by parts for first order terms and in preparation for non-linear models. [in] jacobian The value of \(\nabla\bar\psi\). [out] flux The result of the computation.
- Note
- "flux" in this sense simply means something which is multiplied by the jacobians of the test-function and covers "diffusive fluxes" as well as advective fluxes.
References Dune::ACFem::GradientOperatorParts< GridFunction >::flux().
Referenced by Dune::ACFem::GradientOperatorParts< GridFunction >::flux(), and Dune::ACFem::GradientOperatorParts< GridFunction >::linearizedFlux().
◆ flux() [3/5]
|
inline |
Evaluate \(A(x, u)\nabla u(x)\) in local coordinates.
This can be interpreted as a diffusive "flux", at least when restricted to some surface. \(\bar u\) denotes the point of linearization for non-linear problems.
- Parameters
-
[in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value To allow integration by parts for first order terms and in preparation for non-linear models. [in] jacobian The value of \(\nabla\bar\psi\). [out] flux The result of the computation.
- Note
- "flux" in this sense simply means something which is multiplied by the jacobians of the test-function and covers "diffusive fluxes" as well as advective fluxes.
◆ flux() [4/5]
|
inline |
Evaluate \(A(x, u)\nabla u(x)\) in local coordinates.
This can be interpreted as a diffusive "flux", at least when restricted to some surface. \(\bar u\) denotes the point of linearization for non-linear problems.
- Parameters
-
[in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value To allow integration by parts for first order terms and in preparation for non-linear models. [in] jacobian The value of \(\nabla\bar\psi\). [out] flux The result of the computation.
- Note
- "flux" in this sense simply means something which is multiplied by the jacobians of the test-function and covers "diffusive fluxes" as well as advective fluxes.
References Dune::ACFem::P_LaplacianOperatorParts< FunctionSpace >::flux().
Referenced by Dune::ACFem::P_LaplacianOperatorParts< FunctionSpace >::flux(), and Dune::ACFem::P_LaplacianOperatorParts< FunctionSpace >::linearizedFlux().
◆ flux() [5/5]
|
inline |
Evaluate \(A(x, u)\nabla u(x)\) in local coordinates.
This can be interpreted as a diffusive "flux", at least when restricted to some surface. \(\bar u\) denotes the point of linearization for non-linear problems.
- Parameters
-
[in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value To allow integration by parts for first order terms and in preparation for non-linear models. [in] jacobian The value of \(\nabla\bar\psi\). [out] flux The result of the computation.
- Note
- "flux" in this sense simply means something which is multiplied by the jacobians of the test-function and covers "diffusive fluxes" as well as advective fluxes.
References Dune::ACFem::WeakDivergenceOperatorParts< GridFunction >::flux().
Referenced by Dune::ACFem::WeakDivergenceOperatorParts< GridFunction >::flux(), and Dune::ACFem::WeakDivergenceOperatorParts< GridFunction >::linearizedFlux().
◆ fluxDivergence() [1/8]
|
inline |
Compute the point-wise value of the flux-part of the operator, meaning the part of the differential operator which is multiplied by the derivative of the test function.
Primarily useful for residual error estimators.
- Parameters
-
[in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value In preparation for non-linear problems. [in] jacobian The value of \(\nabla u\). [in] hessian The value of \(D^2u\). [out] result The result of the computation.
◆ fluxDivergence() [2/8]
|
inline |
Compute the point-wise value of the flux-part of the operator, meaning the part of the differential operator which is multiplied by the derivative of the test function.
Primarily useful for residual error estimators.
- Parameters
-
[in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value In preparation for non-linear problems. [in] jacobian The value of \(\nabla u\). [in] hessian The value of \(D^2u\). [out] result The result of the computation.
◆ fluxDivergence() [3/8]
|
inline |
Compute the point-wise value of the flux-part of the operator, meaning the part of the differential operator which is multiplied by the derivative of the test function.
Primarily useful for residual error estimators.
- Parameters
-
[in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value In preparation for non-linear problems. [in] jacobian The value of \(\nabla u\). [in] hessian The value of \(D^2u\). [out] result The result of the computation.
This is the strong form, i.e. simply the gradient.
References Dune::ACFem::gradient().
◆ fluxDivergence() [4/8]
|
inline |
Compute the point-wise value of the flux-part of the operator, meaning the part of the differential operator which is multiplied by the derivative of the test function.
Primarily useful for residual error estimators.
- Parameters
-
[in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value In preparation for non-linear problems. [in] jacobian The value of \(\nabla u\). [in] hessian The value of \(D^2u\). [out] result The result of the computation.
◆ fluxDivergence() [5/8]
|
inline |
Compute the point-wise value of the flux-part of the operator, meaning the part of the differential operator which is multiplied by the derivative of the test function.
Primarily useful for residual error estimators.
- Parameters
-
[in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value In preparation for non-linear problems. [in] jacobian The value of \(\nabla u\). [in] hessian The value of \(D^2u\). [out] result The result of the computation.
◆ fluxDivergence() [6/8]
|
inline |
Compute the point-wise value of the flux-part of the operator, meaning the part of the differential operator which is multiplied by the derivative of the test function.
Primarily useful for residual error estimators.
- Parameters
-
[in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value In preparation for non-linear problems. [in] jacobian The value of \(\nabla u\). [in] hessian The value of \(D^2u\). [out] result The result of the computation.
◆ fluxDivergence() [7/8]
|
inline |
!
The implementation also works for transport-velocities which are not divergence free.
◆ fluxDivergence() [8/8]
|
inline |
Compute the point-wise value of the flux-part of the operator, meaning the part of the differential operator which is multiplied by the derivative of the test function.
Primarily useful for residual error estimators.
- Parameters
-
[in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value In preparation for non-linear problems. [in] jacobian The value of \(\nabla u\). [in] hessian The value of \(D^2u\). [out] result The result of the computation.
This is the strong form, i.e. simply the divergence.
◆ gradientOperatorParts()
|
inlinestatic |
Generate a Gradient-model fitting the specified object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
◆ incompressibleSelfTransportModel()
|
inlinestatic |
Generate a Navier-Stokes non-linearity fitting the given object.
This variant moves the derivative to the test function at the cost of introducing a boundary integral.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
◆ incompressibleSelfTransportOpertorParts()
|
inlinestatic |
Generate a Navier-Stokes non-linearity fitting the given object.
This variant moves the derivative to the test function at the cost of introducing a boundary integral.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
◆ incompressibleTransportModel()
|
inlinestatic |
Generate an advection-model object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
- Parameters
-
[in] velocity The advection-velocity. This must already be something with a localFunction() method. It is implicitly assumed that the divergence of this object vanishes.
◆ incompressibleTransportOperatorParts()
|
inlinestatic |
Generate an advection-model object.
- Parameters
-
[in] object Something with a public FunctionSpaceType typedef. [in] name An optional name for debugging and pretty-printing. [in] velocity The advection-velocity. This must already be something with a localFunction() method. It is implicitly assumed that the divergence of this object vanishes.
◆ laplacianModel()
|
inlinestatic |
Generate a Laplacian-model fitting the specified object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
◆ laplacianOperatorParts()
|
inlinestatic |
Generate OperatorParts for a (weak, of course) Laplacian.
- Parameters
-
[in] object Something with a public FunctionSpaceType typedef. [in] name An optional name for debugging and pretty-printing.
◆ linearizedFlux() [1/8]
|
inline |
Evaluate the linearized flux in local coordinates.
This can be interpreted as a diffusive "flux", at least when restricted to some surface. \(\bar u\) denotes the point of linearization for non-linear problems.
- Parameters
-
[in] uBar Point of linearization. [in] DuBar Point of linearization. [in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value To allow integration by parts for first order terms and in preparation for non-linear models. [in] jacobian The value of \(\nabla\bar\psi\). [out] flux The result of the computation.
- Note
- "flux" in this sense simply means something which is multiplied by the jacobians of the test-function and covers "diffusive fluxes" as well as advective fluxes.
References Dune::ACFem::DefaultOperatorParts< Expression >::flux().
◆ linearizedFlux() [2/8]
|
inline |
Evaluate the linearized flux in local coordinates.
This can be interpreted as a diffusive "flux", at least when restricted to some surface. \(\bar u\) denotes the point of linearization for non-linear problems.
- Parameters
-
[in] uBar Point of linearization. [in] DuBar Point of linearization. [in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value To allow integration by parts for first order terms and in preparation for non-linear models. [in] jacobian The value of \(\nabla\bar\psi\). [out] flux The result of the computation.
- Note
- "flux" in this sense simply means something which is multiplied by the jacobians of the test-function and covers "diffusive fluxes" as well as advective fluxes.
References Dune::ACFem::FluidSelfTransportOperatorParts< FunctionSpace >::flux().
◆ linearizedFlux() [3/8]
|
inline |
Evaluate the linearized flux in local coordinates.
This can be interpreted as a diffusive "flux", at least when restricted to some surface. \(\bar u\) denotes the point of linearization for non-linear problems.
- Parameters
-
[in] uBar Point of linearization. [in] DuBar Point of linearization. [in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value To allow integration by parts for first order terms and in preparation for non-linear models. [in] jacobian The value of \(\nabla\bar\psi\). [out] flux The result of the computation.
- Note
- "flux" in this sense simply means something which is multiplied by the jacobians of the test-function and covers "diffusive fluxes" as well as advective fluxes.
References Dune::ACFem::GradientOperatorParts< GridFunction >::flux().
◆ linearizedFlux() [4/8]
|
inline |
Evaluate the linearized flux in local coordinates.
This can be interpreted as a diffusive "flux", at least when restricted to some surface. \(\bar u\) denotes the point of linearization for non-linear problems.
- Parameters
-
[in] uBar Point of linearization. [in] DuBar Point of linearization. [in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value To allow integration by parts for first order terms and in preparation for non-linear models. [in] jacobian The value of \(\nabla\bar\psi\). [out] flux The result of the computation.
- Note
- "flux" in this sense simply means something which is multiplied by the jacobians of the test-function and covers "diffusive fluxes" as well as advective fluxes.
References Dune::ACFem::DefaultOperatorParts< Expression >::flux().
◆ linearizedFlux() [5/8]
|
inline |
Evaluate the linearized flux in local coordinates.
This can be interpreted as a diffusive "flux", at least when restricted to some surface. \(\bar u\) denotes the point of linearization for non-linear problems.
- Parameters
-
[in] uBar Point of linearization. [in] DuBar Point of linearization. [in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value To allow integration by parts for first order terms and in preparation for non-linear models. [in] jacobian The value of \(\nabla\bar\psi\). [out] flux The result of the computation.
- Note
- "flux" in this sense simply means something which is multiplied by the jacobians of the test-function and covers "diffusive fluxes" as well as advective fluxes.
◆ linearizedFlux() [6/8]
|
inline |
Evaluate the linearized flux in local coordinates.
This can be interpreted as a diffusive "flux", at least when restricted to some surface. \(\bar u\) denotes the point of linearization for non-linear problems.
- Parameters
-
[in] uBar Point of linearization. [in] DuBar Point of linearization. [in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value To allow integration by parts for first order terms and in preparation for non-linear models. [in] jacobian The value of \(\nabla\bar\psi\). [out] flux The result of the computation.
- Note
- "flux" in this sense simply means something which is multiplied by the jacobians of the test-function and covers "diffusive fluxes" as well as advective fluxes.
References Dune::ACFem::P_LaplacianOperatorParts< FunctionSpace >::flux().
◆ linearizedFlux() [7/8]
|
inline |
◆ linearizedFlux() [8/8]
|
inline |
Evaluate the linearized flux in local coordinates.
This can be interpreted as a diffusive "flux", at least when restricted to some surface. \(\bar u\) denotes the point of linearization for non-linear problems.
- Parameters
-
[in] uBar Point of linearization. [in] DuBar Point of linearization. [in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value To allow integration by parts for first order terms and in preparation for non-linear models. [in] jacobian The value of \(\nabla\bar\psi\). [out] flux The result of the computation.
- Note
- "flux" in this sense simply means something which is multiplied by the jacobians of the test-function and covers "diffusive fluxes" as well as advective fluxes.
References Dune::ACFem::WeakDivergenceOperatorParts< GridFunction >::flux().
◆ linearizedRobinFlux() [1/2]
|
inline |
The linearized Robin-type flux term.
- Parameters
-
[in] uBar The point of linearization. [in] intersection The current intersection. [in] x The point of evaluation, local coordinates. [in] unitOuterNormal The outer normal (outer with respect to the current entity). [in] value The value of u. [out] result The result of the computation.
◆ linearizedRobinFlux() [2/2]
|
inline |
◆ linearizedSource() [1/5]
|
inline |
The linearized source term as function of local coordinates.
Note the "source" in this context includes all terms which are multiplied by the value (not the jacobian) of the test-functions und thus may also include first order terms.
- Parameters
-
[in] uBar The point of linearization. [in] DuBar The jacobian at the point of linearization. [in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value The value of u. [in] jacobian The jacobian of u. [out] result The result of the computation.
◆ linearizedSource() [2/5]
|
inline |
The linearized source term as function of local coordinates.
Note the "source" in this context includes all terms which are multiplied by the value (not the jacobian) of the test-functions und thus may also include first order terms.
- Parameters
-
[in] uBar The point of linearization. [in] DuBar The jacobian at the point of linearization. [in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value The value of u. [in] jacobian The jacobian of u. [out] result The result of the computation.
◆ linearizedSource() [3/5]
|
inline |
The linearized source term as function of local coordinates.
Note the "source" in this context includes all terms which are multiplied by the value (not the jacobian) of the test-functions und thus may also include first order terms.
- Parameters
-
[in] uBar The point of linearization. [in] DuBar The jacobian at the point of linearization. [in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value The value of u. [in] jacobian The jacobian of u. [out] result The result of the computation.
◆ linearizedSource() [4/5]
|
inline |
The linearized source term as function of local coordinates.
Note the "source" in this context includes all terms which are multiplied by the value (not the jacobian) of the test-functions und thus may also include first order terms.
- Parameters
-
[in] uBar The point of linearization. [in] DuBar The jacobian at the point of linearization. [in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value The value of u. [in] jacobian The jacobian of u. [out] result The result of the computation.
◆ linearizedSource() [5/5]
|
inline |
◆ massModel()
|
inlinestatic |
Generate a mass model fitting the specified object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
◆ massOperatorParts()
|
inlinestatic |
Generate OperatorParts for a (weak, of course) Mass.
- Parameters
-
[in] object Something with a public FunctionSpaceType typedef. [in] name An optional name for debugging and pretty-printing.
◆ meanCurvatureModel()
|
inlinestatic |
Generate a mean-curvature-model fitting the specified object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
◆ meanCurvatureOperatorParts()
|
inlinestatic |
Generate a MeanCurvature-model fitting the specified object.
- Parameters
-
[in] object Something with a public FunctionSpaceType typedef. [in] name An optional name for debugging and pretty-printing. [in] regularization \(\eta\), eee MeanCurvatureModel. For the graph-case this should be 1.0, for the level-set approach this is a regularization parameter in order to be able to cope with fattening.
◆ name()
|
inline |
Print a descriptive name for debugging and output.
◆ neumannBoundaryFunction()
|
inline |
Generate an instance of a class defining Neumann boundary values as a Fem grid-function.
Although this is a Neumann-model the inhomogeneity is always called "Neumann boundary function".
◆ neumannBoundaryModel()
NeumannBoundaryModel< GridFunction, Indicator > Dune::ACFem::neumannBoundaryModel | ( | const Fem::Function< typename GridFunction::FunctionSpaceType, GridFunction > & | values, |
const BoundaryIndicatorInterface< Indicator > & | where = Indicator() |
||
) |
Generate a NeumannBoundaryModel from given grid-function and boundary indicator.
- Parameters
-
[in] values The Neumann boundary values. [in] where Indicator which decides which part of the boundary is affected
Referenced by Dune::ACFem::neumannZeroModel(), and Dune::ACFem::robinBoundaryModel().
◆ neumannIndicator()
|
inline |
Generate an object to identify parts of the boundary subject to Neumann boundary conditions.
The return value has to obey the BoundaryIndicatorInterface.
◆ neumannZeroModel()
NeumannBoundaryModel< ZeroGridFunction< typename Object::FunctionSpaceType, typename Object::GridPartType >, Indicator > Dune::ACFem::neumannZeroModel | ( | const Object & | object, |
const BoundaryIndicatorInterface< Indicator > & | where = Indicator() |
||
) |
Generate homogeneous Neumann boundary conditions fitting the specified object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType and a method object.gridPart().
- Parameters
-
[in] object Super-object, the NeumannBoundaryModel generated will be compatible to this object. [in] where Indicator which decides where the Neumann b.c. apply.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
References Dune::ACFem::neumannBoundaryModel().
◆ p_LaplacianModel()
|
inlinestatic |
Generate a P-laplacian model fitting the specified object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
- Parameters
-
[in] p The exponent, see P_LaplacianOperatorParts.
◆ p_LaplacianOperatorParts()
|
inlinestatic |
Generate OperatorParts for a (weak, of course) p-Laplacian.
- Parameters
-
[in] object Something with a public FunctionSpaceType typedef. [in] name An optional name for debugging and pretty-printing.
◆ p_MassModel()
|
inlinestatic |
Generate a P-power mass-model fitting the specified object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
- Parameters
-
[in] p The exponent, see P_MassOperatorParts.
◆ p_MassOperatorParts()
|
inlinestatic |
Generate OperatorParts for a (weak, of course) Mass.
- Parameters
-
[in] object Something with a public FunctionSpaceType typedef. [in] name An optional name for debugging and pretty-printing.
◆ robinBoundaryModel()
auto Dune::ACFem::robinBoundaryModel | ( | const Fem::Function< typename GridFunction::FunctionSpaceType, GridFunction > & | values, |
const BoundaryIndicatorInterface< Indicator > & | where = Indicator() |
||
) | -> decltype(robinZeroModel(asImp(values), where * neumannBoundaryModel(asImp(values), where).neumannIndicator()) + neumannBoundaryModel(asImp(values), where)) |
Generate a RobinBoundaryModel from given grid-function and boundary indicator.
- Parameters
-
[in] values The Robin boundary values. [in] where Indicator which decides which part of the boundary is affected
If values is already a BoundarySupportedFunction the model will live on the intersection of the "structural" support of value and where.
References Dune::ACFem::asImp(), Dune::ACFem::neumannBoundaryModel(), and Dune::ACFem::robinZeroModel().
◆ robinOperatorParts()
|
inlinestatic |
Generate OperatorParts for (homogeneous) Robin boundary conditions.
- Parameters
-
[in] object Something with a public FunctionSpaceType typedef. [in] where Boundary indicator which describes on which part of the boundary the Robin conditions apply. [in] name An optional name for debugging and pretty-printing.
◆ robinZeroModel()
OperatorPartsAdapterModel< RobinBoundaryOperatorParts< typename Object::FunctionSpaceType, Indicator >, typename Object::GridPartType > Dune::ACFem::robinZeroModel | ( | const Object & | object, |
const BoundaryIndicatorInterface< Indicator > & | where = Indicator() |
||
) |
Generate homogeneous Robin boundary conditions fitting the specified object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType and a method object.gridPart().
- Parameters
-
[in] object Super-object, the RobinBoundaryModel generated will be compatible to this object. [in] where Indicator which decides where the Robin b.c. apply.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
Referenced by Dune::ACFem::robinBoundaryModel().
◆ setEntity()
|
inline |
Per entity initialization, if that is needed.
Useful for constructing LocalFunction instances if the coefficients depend on discrete data, for example. A cleaner solution would be to provide a "LocalOperatorGerm" class which would be constructed from en EntityType in the same way as the Fem::LocalFunction is constructed from an entity (and a grid-function). OHTO, this would introduce yet another data-structure ...
◆ setIntersection() [1/3]
|
inline |
Per-intersection initialization for the boundary contributions.
Several parts of the boundary may carry different Robin-kind boundary conditions. If necessary, per-intersection initializations can be performed here.
- Parameters
-
[in] intersection The Intersection implementation for the underlying grid.
- Returns
- The function must return
true
if Robin-boundary conditions apply forintersection
.
- Note
- Potential Dirichlet boundary conditions can be ignored here, the higher level code will only try to assemble boundary contributions if Dirichlet-conditions do not apply. It is therefore safe to constantly return
true
if there is only a split between a Dirichlet boundary part and a Robin boundary part. However, for more complicated cases it is vital that robinFlux() and linearizedRobinFlux() evaluate to zero if setIntersection() returnfalse
in order for ModelExpressions to work correctly,
◆ setIntersection() [2/3]
|
inline |
Per-intersection initialization for the boundary contributions.
Several parts of the boundary may carry different Robin-kind boundary conditions. If necessary, per-intersection initializations can be performed here.
- Parameters
-
[in] intersection The Intersection implementation for the underlying grid.
- Returns
- The function must return
true
if Robin-boundary conditions apply forintersection
.
- Note
- Potential Dirichlet boundary conditions can be ignored here, the higher level code will only try to assemble boundary contributions if Dirichlet-conditions do not apply. It is therefore safe to constantly return
true
if there is only a split between a Dirichlet boundary part and a Robin boundary part. However, for more complicated cases it is vital that robinFlux() and linearizedRobinFlux() evaluate to zero if setIntersection() returnfalse
in order for ModelExpressions to work correctly,
◆ setIntersection() [3/3]
|
inline |
◆ source() [1/3]
|
inline |
The zero-order term as function of local coordinates.
Has to evaluate \(\nabla\cdot(b(x,u)\,u) + c(x, u)\,u\).
- Parameters
-
[in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value The value of u. [in] jacobian The jacobian of u. [out] result The result of the computation.
◆ source() [2/3]
|
inline |
The zero-order term as function of local coordinates.
Has to evaluate \(\nabla\cdot(b(x,u)\,u) + c(x, u)\,u\).
- Parameters
-
[in] entity The mesh element. [in] x The point of evaluation, local coordinates. [in] value The value of u. [in] jacobian The jacobian of u. [out] result The result of the computation.
◆ source() [3/3]
|
inline |
◆ transportModel()
|
inlinestatic |
Generate an advection-model object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
- Parameters
-
[in] velocity The advection-velocity. This must already be something with a localFunction() method.
◆ transportOperatorParts()
|
inlinestatic |
Generate an advection-model object.
- Parameters
-
[in] object Something with a public FunctionSpaceType typedef. [in] name An optional name for debugging and pretty-printing. [in] velocity The advection-velocity. This must already be something with a localFunction() method.
◆ weakDivergenceModel()
|
inlinestatic |
Generate a weak divergence model fitting the specified object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.
◆ zeroModel()
|
inlinestatic |
Generate a Zero-model fitting the specified object.
In order for this to work the data-type of the given object must have the two sub-types Object::FunctionSpaceType and Object::GridPartType. The actual instance of the object is ignore and simply has to be passed in order that the compiler can deduce the correct types.
- Parameters
-
[in] object Ignored. We use only the type to get hold of the FunctionSpaceType and the GridPartType. [in] name Optional. A descriptive name for the generated model. A suitable default will be chosen if omitted.
Examples of suitable objects are something that satisfies the
- ModelInterface (another model)
- Fem::DiscreteFunctionSpaceInterface
- Fem::DiscreteFunctionInterface (including any wrapped or adapted non-discrete function)
- See also
- CompatibleModel.