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...

Typedefs

typedef DirichletBoundaryFunctionType::IndicatorType Dune::ACFem::ModelTraits< DirichletBoundaryModel< GridFunction, Indicator > >::DirichletIndicatorType
 Something satisfying the BoundaryIndicatorInterface. More...
 
typedef BoundarySupportedFunction< decltype(oneFunction(std::declval< GridFunction >))), DirichletIndicatorTypeDune::ACFem::ModelTraits< DirichletBoundaryModel< GridFunction, Indicator > >::DirichletWeightFunctionType
 A scalar BoundarySupportedFunction which defines "weighted" Dirichlet values of the form. More...
 
typedef NeumannBoundaryFunctionType::IndicatorType Dune::ACFem::ModelTraits< NeumannBoundaryModel< GridFunction, Indicator > >::NeumannIndicatorType
 Something satisfying the BoundaryIndicatorInterface. More...
 

Enumerations

enum  Dune::ACFem::ModelTraits< BulkForcesFunctionModel< GridFunction > >::StructureFlags { Dune::ACFem::ModelTraits< BulkForcesFunctionModel< GridFunction > >::isLinear = true , Dune::ACFem::ModelTraits< BulkForcesFunctionModel< GridFunction > >::isSymmetric = true , Dune::ACFem::ModelTraits< BulkForcesFunctionModel< GridFunction > >::isSemiDefinite = true }
 
enum  Dune::ACFem::OperatorPartsTraits< DeformationTensorOperatorParts< FunctionSpace > >::StructureFlags
 
enum  Dune::ACFem::OperatorPartsTraits< DeformationTensorOperatorParts< FunctionSpace > >::ConstituentFlags
 
enum  Dune::ACFem::ModelTraits< DirichletBoundaryModel< GridFunction, Indicator > >::StructureFlags { Dune::ACFem::ModelTraits< DirichletBoundaryModel< GridFunction, Indicator > >::isLinear = true , Dune::ACFem::ModelTraits< DirichletBoundaryModel< GridFunction, Indicator > >::isSymmetric = true , Dune::ACFem::ModelTraits< DirichletBoundaryModel< GridFunction, Indicator > >::isSemiDefinite = true }
 
enum  Dune::ACFem::OperatorPartsTraits< DivergenceOperatorParts< GridFunction > >::StructureFlags
 
enum  Dune::ACFem::OperatorPartsTraits< DivergenceOperatorParts< GridFunction > >::ConstituentFlags
 
enum  Dune::ACFem::OperatorPartsTraits< FluidSelfTransportOperatorParts< FunctionSpace > >::StructureFlags
 
enum  Dune::ACFem::OperatorPartsTraits< FluidSelfTransportOperatorParts< FunctionSpace > >::ConstituentFlags
 
enum  Dune::ACFem::OperatorPartsTraits< GradientOperatorParts< GridFunction > >::StructureFlags
 
enum  Dune::ACFem::OperatorPartsTraits< GradientOperatorParts< GridFunction > >::ConstituentFlags
 
enum  Dune::ACFem::OperatorPartsTraits< IncompressibleSelfTransportOperatorParts< FunctionSpace > >::StructureFlags
 
enum  Dune::ACFem::OperatorPartsTraits< IncompressibleSelfTransportOperatorParts< FunctionSpace > >::ConstituentFlags
 
enum  Dune::ACFem::OperatorPartsTraits< IncompressibleTransportOperatorParts< FunctionSpace, Velocity > >::StructureFlags
 
enum  Dune::ACFem::OperatorPartsTraits< IncompressibleTransportOperatorParts< FunctionSpace, Velocity > >::ConstituentFlags
 
enum  Dune::ACFem::OperatorPartsTraits< LaplacianOperatorParts< FunctionSpace > >::StructureFlags
 
enum  Dune::ACFem::OperatorPartsTraits< LaplacianOperatorParts< FunctionSpace > >::ConstituentFlags
 
enum  Dune::ACFem::OperatorPartsTraits< MassOperatorParts< FunctionSpace > >::StructureFlags
 
enum  Dune::ACFem::OperatorPartsTraits< MassOperatorParts< FunctionSpace > >::ConstituentFlags
 
enum  Dune::ACFem::OperatorPartsTraits< MeanCurvatureOperatorParts< FunctionSpace, Parameter > >::StructureFlags
 
enum  Dune::ACFem::OperatorPartsTraits< MeanCurvatureOperatorParts< FunctionSpace, Parameter > >::ConstituentFlags
 
enum  Dune::ACFem::ModelTraits< NeumannBoundaryModel< GridFunction, Indicator > >::StructureFlags { Dune::ACFem::ModelTraits< NeumannBoundaryModel< GridFunction, Indicator > >::isLinear = true , Dune::ACFem::ModelTraits< NeumannBoundaryModel< GridFunction, Indicator > >::isSymmetric = true , Dune::ACFem::ModelTraits< NeumannBoundaryModel< GridFunction, Indicator > >::isSemiDefinite = true }
 
enum  Dune::ACFem::OperatorPartsTraits< P_LaplacianOperatorParts< FunctionSpace > >::StructureFlags
 
enum  Dune::ACFem::OperatorPartsTraits< P_LaplacianOperatorParts< FunctionSpace > >::ConstituentFlags
 
enum  Dune::ACFem::OperatorPartsTraits< P_MassOperatorParts< FunctionSpace > >::StructureFlags { Dune::ACFem::OperatorPartsTraits< P_MassOperatorParts< FunctionSpace > >::isLinear = false , Dune::ACFem::OperatorPartsTraits< P_MassOperatorParts< FunctionSpace > >::isSymmetric = true , Dune::ACFem::OperatorPartsTraits< P_MassOperatorParts< FunctionSpace > >::isSemiDefinite = true }
 
enum  Dune::ACFem::OperatorPartsTraits< P_MassOperatorParts< FunctionSpace > >::ConstituentFlags
 
enum  Dune::ACFem::OperatorPartsTraits< RobinBoundaryOperatorParts< FunctionSpace, Indicator > >::StructureFlags
 
enum  Dune::ACFem::OperatorPartsTraits< RobinBoundaryOperatorParts< FunctionSpace, Indicator > >::ConstituentFlags
 
enum  Dune::ACFem::OperatorPartsTraits< TransportOperatorParts< FunctionSpace, Velocity > >::StructureFlags
 
enum  Dune::ACFem::OperatorPartsTraits< TransportOperatorParts< FunctionSpace, Velocity > >::ConstituentFlags
 
enum  Dune::ACFem::OperatorPartsTraits< WeakDivergenceOperatorParts< GridFunction > >::StructureFlags
 
enum  Dune::ACFem::OperatorPartsTraits< WeakDivergenceOperatorParts< GridFunction > >::ConstituentFlags
 

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 &regularization, 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 &regularization, 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...
 

Variables

decltype(std::declval< OuterIndicatorType >() *std::declval< GridFunction >()) typedef Dune::ACFem::ModelTraits< DirichletBoundaryModel< GridFunction, Indicator > >::DirichletBoundaryFunctionType
 A BoundarySupportedFunction which must be sub-ordinate to the DirichletIndicatorType. More...
 
decltype(std::declval< OuterIndicatorType >() *std::declval< GridFunction >()) typedef Dune::ACFem::ModelTraits< NeumannBoundaryModel< GridFunction, Indicator > >::NeumannBoundaryFunctionType
 A function modelling the "right hand side" inhomogeneous von Neumann as for inhomogeneous Robin boundary conditions. More...
 

Detailed Description

Some utility function in order to conveniently define some standard models without having to go through the "typedef" trouble.

Typedef Documentation

◆ DirichletIndicatorType

template<class GridFunction , class Indicator >
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

template<class GridFunction , class Indicator >
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.

◆ NeumannIndicatorType

template<class GridFunction , class Indicator >
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]

template<class FunctionSpace >
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]

template<class GridFunction >
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]

template<class FunctionSpace >
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]

template<class GridFunction >
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]

template<class FunctionSpace >
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]

template<class FunctionSpace , class Velocity >
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]

template<class FunctionSpace >
enum Dune::ACFem::OperatorPartsTraits< LaplacianOperatorParts< FunctionSpace > >::ConstituentFlags

◆ ConstituentFlags [8/14]

template<class FunctionSpace >
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]

template<class FunctionSpace , class Parameter >
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]

template<class FunctionSpace >
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]

template<class FunctionSpace >
enum Dune::ACFem::OperatorPartsTraits< P_MassOperatorParts< FunctionSpace > >::ConstituentFlags

◆ ConstituentFlags [12/14]

template<class FunctionSpace , class Indicator >
enum Dune::ACFem::OperatorPartsTraits< RobinBoundaryOperatorParts< FunctionSpace, Indicator > >::ConstituentFlags

◆ ConstituentFlags [13/14]

template<class FunctionSpace , class Velocity >
enum Dune::ACFem::OperatorPartsTraits< TransportOperatorParts< FunctionSpace, Velocity > >::ConstituentFlags

◆ ConstituentFlags [14/14]

template<class GridFunction >
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]

template<class GridFunction >
enum Dune::ACFem::ModelTraits< BulkForcesFunctionModel< GridFunction > >::StructureFlags
Enumerator
isLinear 

indeed, we define only an offset

isSymmetric 

certainly

isSemiDefinite 

more certanly

◆ StructureFlags [2/17]

template<class FunctionSpace >
enum Dune::ACFem::OperatorPartsTraits< DeformationTensorOperatorParts< FunctionSpace > >::StructureFlags

Static flags for the overall structure of the operator.

◆ StructureFlags [3/17]

template<class GridFunction , class Indicator >
enum Dune::ACFem::ModelTraits< DirichletBoundaryModel< GridFunction, Indicator > >::StructureFlags
Enumerator
isLinear 

indeed, we define only an offset

isSymmetric 

certainly

isSemiDefinite 

more certanly

◆ StructureFlags [4/17]

template<class GridFunction >
enum Dune::ACFem::OperatorPartsTraits< DivergenceOperatorParts< GridFunction > >::StructureFlags

Static flags for the overall structure of the operator.

◆ StructureFlags [5/17]

template<class FunctionSpace >
enum Dune::ACFem::OperatorPartsTraits< FluidSelfTransportOperatorParts< FunctionSpace > >::StructureFlags

Static flags for the overall structure of the operator.

◆ StructureFlags [6/17]

template<class GridFunction >
enum Dune::ACFem::OperatorPartsTraits< GradientOperatorParts< GridFunction > >::StructureFlags

Static flags for the overall structure of the operator.

◆ StructureFlags [7/17]

template<class FunctionSpace >
enum Dune::ACFem::OperatorPartsTraits< IncompressibleSelfTransportOperatorParts< FunctionSpace > >::StructureFlags

Static flags for the overall structure of the operator.

◆ StructureFlags [8/17]

template<class FunctionSpace , class Velocity >
enum Dune::ACFem::OperatorPartsTraits< IncompressibleTransportOperatorParts< FunctionSpace, Velocity > >::StructureFlags

Static flags for the overall structure of the operator.

◆ StructureFlags [9/17]

template<class FunctionSpace >
enum Dune::ACFem::OperatorPartsTraits< LaplacianOperatorParts< FunctionSpace > >::StructureFlags

◆ StructureFlags [10/17]

template<class FunctionSpace >
enum Dune::ACFem::OperatorPartsTraits< MassOperatorParts< FunctionSpace > >::StructureFlags

Static flags for the overall structure of the operator.

◆ StructureFlags [11/17]

template<class FunctionSpace , class Parameter >
enum Dune::ACFem::OperatorPartsTraits< MeanCurvatureOperatorParts< FunctionSpace, Parameter > >::StructureFlags

Static flags for the overall structure of the operator.

◆ StructureFlags [12/17]

template<class GridFunction , class Indicator >
enum Dune::ACFem::ModelTraits< NeumannBoundaryModel< GridFunction, Indicator > >::StructureFlags
Enumerator
isLinear 

indeed, we define only an offset

isSymmetric 

certainly

isSemiDefinite 

more certanly

◆ StructureFlags [13/17]

template<class FunctionSpace >
enum Dune::ACFem::OperatorPartsTraits< P_LaplacianOperatorParts< FunctionSpace > >::StructureFlags

Static flags for the overall structure of the operator.

◆ StructureFlags [14/17]

template<class FunctionSpace >
enum Dune::ACFem::OperatorPartsTraits< P_MassOperatorParts< FunctionSpace > >::StructureFlags

Enumerator
isLinear 

We are non-linear.

isSymmetric 

We still are symmetric.

isSemiDefinite 

We still are non-negative.

◆ StructureFlags [15/17]

template<class FunctionSpace , class Indicator >
enum Dune::ACFem::OperatorPartsTraits< RobinBoundaryOperatorParts< FunctionSpace, Indicator > >::StructureFlags

◆ StructureFlags [16/17]

template<class FunctionSpace , class Velocity >
enum Dune::ACFem::OperatorPartsTraits< TransportOperatorParts< FunctionSpace, Velocity > >::StructureFlags

◆ StructureFlags [17/17]

template<class GridFunction >
enum Dune::ACFem::OperatorPartsTraits< WeakDivergenceOperatorParts< GridFunction > >::StructureFlags

Static flags for the overall structure of the operator.

Function Documentation

◆ bulkForcesModel()

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".

Parameters
[in]fThe L2-function for the RHS.
[in]nameOptional. If left empty some sensible name is built from f.name() for debugging purposes.

◆ deformationTensorModel()

template<class Object >
static OperatorPartsAdapterModel<DeformationTensorOperatorParts<typename Object::FunctionSpaceType>, typename Object::GridPartType> Dune::ACFem::deformationTensorModel ( const Object &  object,
const std::string &  name = "" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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()

template<class Object >
static DeformationTensorOperatorParts<typename Object::FunctionSpaceType> Dune::ACFem::deformationTensorOperatorParts ( const Object &  object,
const std::string &  name = "" 
)
inlinestatic

Generate a deformation tensor model fitting the specified object.

◆ dirichletBoundaryModel()

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.

Parameters
[in]valuesThe Dirichlet boundary values.
[in]whereIndicator which decides which part of the boundary is affected

Referenced by Dune::ACFem::dirichletZeroModel().

◆ dirichletZeroModel()

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.

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]objectSuper-object, the DirichletBoundaryModel generated will be compatible to this object.
[in]whereIndicator 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()

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 = "" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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()

template<class Object >
static OperatorPartsAdapterModel<FluidSelfTransportOperatorParts<typename Object::FunctionSpaceType>, typename Object::GridPartType> Dune::ACFem::fluidSelfTransportModel ( const Object &  object,
const std::string &  name = "" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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()

template<class Object >
static FluidSelfTransportOperatorParts<typename Object::FunctionSpaceType> Dune::ACFem::fluidSelfTransportOperatorParts ( const Object &  object,
const std::string &  name = "" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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]

template<class FunctionSpace >
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
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]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueTo allow integration by parts for first order terms and in preparation for non-linear models.
[in]jacobianThe value of \(\nabla\bar\psi\).
[out]fluxThe 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.

Referenced by Dune::ACFem::FluidSelfTransportOperatorParts< FunctionSpace >::linearizedFlux().

◆ flux() [2/5]

template<class GridFunction >
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
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]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueTo allow integration by parts for first order terms and in preparation for non-linear models.
[in]jacobianThe value of \(\nabla\bar\psi\).
[out]fluxThe 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.

Referenced by Dune::ACFem::GradientOperatorParts< GridFunction >::linearizedFlux().

◆ flux() [3/5]

template<class FunctionSpace , class Parameter = TrivialParameter<typename FunctionSpace::RangeType>>
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
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]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueTo allow integration by parts for first order terms and in preparation for non-linear models.
[in]jacobianThe value of \(\nabla\bar\psi\).
[out]fluxThe 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]

template<class FunctionSpace >
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
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]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueTo allow integration by parts for first order terms and in preparation for non-linear models.
[in]jacobianThe value of \(\nabla\bar\psi\).
[out]fluxThe 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.

Referenced by Dune::ACFem::P_LaplacianOperatorParts< FunctionSpace >::linearizedFlux().

◆ flux() [5/5]

template<class GridFunction >
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
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]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueTo allow integration by parts for first order terms and in preparation for non-linear models.
[in]jacobianThe value of \(\nabla\bar\psi\).
[out]fluxThe 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.

Referenced by Dune::ACFem::WeakDivergenceOperatorParts< GridFunction >::linearizedFlux().

◆ fluxDivergence() [1/8]

template<class FunctionSpace >
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
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]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueIn preparation for non-linear problems.
[in]jacobianThe value of \(\nabla u\).
[in]hessianThe value of \(D^2u\).
[out]resultThe result of the computation.

◆ fluxDivergence() [2/8]

template<class FunctionSpace >
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
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]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueIn preparation for non-linear problems.
[in]jacobianThe value of \(\nabla u\).
[in]hessianThe value of \(D^2u\).
[out]resultThe result of the computation.

◆ fluxDivergence() [3/8]

template<class GridFunction >
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
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]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueIn preparation for non-linear problems.
[in]jacobianThe value of \(\nabla u\).
[in]hessianThe value of \(D^2u\).
[out]resultThe result of the computation.

This is the strong form, i.e. simply the gradient.

References Dune::ACFem::gradient().

◆ fluxDivergence() [4/8]

template<class FunctionSpace >
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
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]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueIn preparation for non-linear problems.
[in]jacobianThe value of \(\nabla u\).
[in]hessianThe value of \(D^2u\).
[out]resultThe result of the computation.

◆ fluxDivergence() [5/8]

template<class FunctionSpace , class Parameter = TrivialParameter<typename FunctionSpace::RangeType>>
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
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]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueIn preparation for non-linear problems.
[in]jacobianThe value of \(\nabla u\).
[in]hessianThe value of \(D^2u\).
[out]resultThe result of the computation.

◆ fluxDivergence() [6/8]

template<class FunctionSpace >
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
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]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueIn preparation for non-linear problems.
[in]jacobianThe value of \(\nabla u\).
[in]hessianThe value of \(D^2u\).
[out]resultThe result of the computation.

◆ fluxDivergence() [7/8]

template<class FunctionSpace , class Velocity >
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
inline

!

The implementation also works for transport-velocities which are not divergence free.

◆ fluxDivergence() [8/8]

template<class GridFunction >
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
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]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueIn preparation for non-linear problems.
[in]jacobianThe value of \(\nabla u\).
[in]hessianThe value of \(D^2u\).
[out]resultThe result of the computation.

This is the strong form, i.e. simply the divergence.

◆ gradientOperatorParts()

template<class GridFunction >
static GradientOperatorParts<GridFunction> Dune::ACFem::gradientOperatorParts ( const Fem::Function< typename GridFunction::FunctionSpaceType, GridFunction > &  f,
const std::string &  name = "" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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()

template<class Object >
static OperatorPartsAdapterModel<IncompressibleSelfTransportOperatorParts<typename Object::FunctionSpaceType>, typename Object::GridPartType> Dune::ACFem::incompressibleSelfTransportModel ( const Object &  object,
const std::string &  name = "" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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()

template<class Object >
static IncompressibleSelfTransportOperatorParts<typename Object::FunctionSpaceType> Dune::ACFem::incompressibleSelfTransportOpertorParts ( const Object &  object,
const std::string &  name = "" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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()

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 = "" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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]velocityThe advection-velocity. This must already be something with a localFunction() method. It is implicitly assumed that the divergence of this object vanishes.

◆ incompressibleTransportOperatorParts()

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 = "" 
)
inlinestatic

Generate an advection-model object.

Parameters
[in]objectSomething with a public FunctionSpaceType typedef.
[in]nameAn optional name for debugging and pretty-printing.
[in]velocityThe advection-velocity. This must already be something with a localFunction() method. It is implicitly assumed that the divergence of this object vanishes.

◆ laplacianModel()

template<class Object >
static OperatorPartsAdapterModel<LaplacianOperatorParts<typename Object::FunctionSpaceType>, typename Object::GridPartType> Dune::ACFem::laplacianModel ( const Object &  object,
const std::string &  name = "" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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()

template<class Object >
static LaplacianOperatorParts<typename Object::FunctionSpaceType> Dune::ACFem::laplacianOperatorParts ( const Object &  object,
const std::string &  name = "" 
)
inlinestatic

Generate OperatorParts for a (weak, of course) Laplacian.

Parameters
[in]objectSomething with a public FunctionSpaceType typedef.
[in]nameAn optional name for debugging and pretty-printing.

◆ linearizedFlux() [1/8]

template<class FunctionSpace >
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
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]uBarPoint of linearization.
[in]DuBarPoint of linearization.
[in]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueTo allow integration by parts for first order terms and in preparation for non-linear models.
[in]jacobianThe value of \(\nabla\bar\psi\).
[out]fluxThe 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]

template<class FunctionSpace >
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
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]uBarPoint of linearization.
[in]DuBarPoint of linearization.
[in]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueTo allow integration by parts for first order terms and in preparation for non-linear models.
[in]jacobianThe value of \(\nabla\bar\psi\).
[out]fluxThe 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]

template<class GridFunction >
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
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]uBarPoint of linearization.
[in]DuBarPoint of linearization.
[in]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueTo allow integration by parts for first order terms and in preparation for non-linear models.
[in]jacobianThe value of \(\nabla\bar\psi\).
[out]fluxThe 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]

template<class FunctionSpace >
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
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]uBarPoint of linearization.
[in]DuBarPoint of linearization.
[in]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueTo allow integration by parts for first order terms and in preparation for non-linear models.
[in]jacobianThe value of \(\nabla\bar\psi\).
[out]fluxThe 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]

template<class FunctionSpace , class Parameter = TrivialParameter<typename FunctionSpace::RangeType>>
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
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]uBarPoint of linearization.
[in]DuBarPoint of linearization.
[in]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueTo allow integration by parts for first order terms and in preparation for non-linear models.
[in]jacobianThe value of \(\nabla\bar\psi\).
[out]fluxThe 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]

template<class FunctionSpace >
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
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]uBarPoint of linearization.
[in]DuBarPoint of linearization.
[in]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueTo allow integration by parts for first order terms and in preparation for non-linear models.
[in]jacobianThe value of \(\nabla\bar\psi\).
[out]fluxThe 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]

template<class FunctionSpace , class Velocity >
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
inline

◆ linearizedFlux() [8/8]

template<class GridFunction >
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
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]uBarPoint of linearization.
[in]DuBarPoint of linearization.
[in]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueTo allow integration by parts for first order terms and in preparation for non-linear models.
[in]jacobianThe value of \(\nabla\bar\psi\).
[out]fluxThe 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]

template<class FunctionSpace , class Indicator = EntireBoundaryIndicatorType>
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
inline

The linearized Robin-type flux term.

Parameters
[in]uBarThe point of linearization.
[in]intersectionThe current intersection.
[in]xThe point of evaluation, local coordinates.
[in]unitOuterNormalThe outer normal (outer with respect to the current entity).
[in]valueThe value of u.
[out]resultThe result of the computation.

◆ linearizedRobinFlux() [2/2]

template<class FunctionSpace , class Velocity >
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
inline

◆ linearizedSource() [1/5]

template<class GridFunction >
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
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]uBarThe point of linearization.
[in]DuBarThe jacobian at the point of linearization.
[in]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueThe value of u.
[in]jacobianThe jacobian of u.
[out]resultThe result of the computation.

◆ linearizedSource() [2/5]

template<class FunctionSpace >
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
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]uBarThe point of linearization.
[in]DuBarThe jacobian at the point of linearization.
[in]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueThe value of u.
[in]jacobianThe jacobian of u.
[out]resultThe result of the computation.

◆ linearizedSource() [3/5]

template<class FunctionSpace , class Velocity >
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
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]uBarThe point of linearization.
[in]DuBarThe jacobian at the point of linearization.
[in]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueThe value of u.
[in]jacobianThe jacobian of u.
[out]resultThe result of the computation.

◆ linearizedSource() [4/5]

template<class FunctionSpace >
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
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]uBarThe point of linearization.
[in]DuBarThe jacobian at the point of linearization.
[in]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueThe value of u.
[in]jacobianThe jacobian of u.
[out]resultThe result of the computation.

◆ linearizedSource() [5/5]

template<class FunctionSpace >
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
inline

◆ massModel()

template<class Object >
static OperatorPartsAdapterModel<MassOperatorParts<typename Object::FunctionSpaceType>, typename Object::GridPartType> Dune::ACFem::massModel ( const Object &  object,
const std::string &  name = "" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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()

template<class Object >
static MassOperatorParts<typename Object::FunctionSpaceType> Dune::ACFem::massOperatorParts ( const Object &  object,
const std::string &  name = "" 
)
inlinestatic

Generate OperatorParts for a (weak, of course) Mass.

Parameters
[in]objectSomething with a public FunctionSpaceType typedef.
[in]nameAn optional name for debugging and pretty-printing.

◆ meanCurvatureModel()

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 &  regularization,
const Object &  object,
const std::string &  name = "" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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()

template<class Object , class Parameter = TrivialParameter<typename Object::FunctionSpaceType::RangeType>>
static MeanCurvatureOperatorParts<typename Object::FunctionSpaceType, Parameter> Dune::ACFem::meanCurvatureOperatorParts ( const Parameter &  regularization,
const Object &  object,
const std::string &  name = "" 
)
inlinestatic

Generate a MeanCurvature-model fitting the specified object.

Parameters
[in]objectSomething with a public FunctionSpaceType typedef.
[in]nameAn 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()

template<class GridFunction , class Indicator = EntireBoundaryIndicatorType>
std::string Dune::ACFem::NeumannBoundaryModel< GridFunction, Indicator >::name ( ) const
inline

Print a descriptive name for debugging and output.

◆ neumannBoundaryFunction()

template<class GridFunction , class Indicator = EntireBoundaryIndicatorType>
NeumannBoundaryFunctionType Dune::ACFem::NeumannBoundaryModel< GridFunction, Indicator >::neumannBoundaryFunction ( const GridPartType &  gridPart) const
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()

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.

Parameters
[in]valuesThe Neumann boundary values.
[in]whereIndicator which decides which part of the boundary is affected

Referenced by Dune::ACFem::neumannZeroModel(), and Dune::ACFem::robinBoundaryModel().

◆ neumannIndicator()

template<class GridFunction , class Indicator = EntireBoundaryIndicatorType>
NeumannIndicatorType Dune::ACFem::NeumannBoundaryModel< GridFunction, Indicator >::neumannIndicator ( ) const
inline

Generate an object to identify parts of the boundary subject to Neumann boundary conditions.

The return value has to obey the BoundaryIndicatorInterface.

◆ neumannZeroModel()

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.

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]objectSuper-object, the NeumannBoundaryModel generated will be compatible to this object.
[in]whereIndicator 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()

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 = "" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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]pThe exponent, see P_LaplacianOperatorParts.

◆ p_LaplacianOperatorParts()

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 = "" 
)
inlinestatic

Generate OperatorParts for a (weak, of course) p-Laplacian.

Parameters
[in]objectSomething with a public FunctionSpaceType typedef.
[in]nameAn optional name for debugging and pretty-printing.

◆ p_MassModel()

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 = "" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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]pThe exponent, see P_MassOperatorParts.

◆ p_MassOperatorParts()

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 = "" 
)
inlinestatic

Generate OperatorParts for a (weak, of course) Mass.

Parameters
[in]objectSomething with a public FunctionSpaceType typedef.
[in]nameAn optional name for debugging and pretty-printing.

◆ robinBoundaryModel()

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.

Parameters
[in]valuesThe Robin boundary values.
[in]whereIndicator 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()

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 = "" 
)
inlinestatic

Generate OperatorParts for (homogeneous) Robin boundary conditions.

Parameters
[in]objectSomething with a public FunctionSpaceType typedef.
[in]whereBoundary indicator which describes on which part of the boundary the Robin conditions apply.
[in]nameAn optional name for debugging and pretty-printing.

◆ robinZeroModel()

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.

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]objectSuper-object, the RobinBoundaryModel generated will be compatible to this object.
[in]whereIndicator 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()

template<class FunctionSpace , class Velocity >
template<class Entity >
void Dune::ACFem::TransportOperatorParts< FunctionSpace, Velocity >::setEntity ( const Entity &  entity) const
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]

template<class FunctionSpace >
template<class Intersection >
bool Dune::ACFem::FluidSelfTransportOperatorParts< FunctionSpace >::setIntersection ( const Intersection &  intersection) const
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]intersectionThe Intersection implementation for the underlying grid.
Returns
The function must return true if Robin-boundary conditions apply for intersection.
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() return false in order for ModelExpressions to work correctly,

◆ setIntersection() [2/3]

template<class FunctionSpace , class Velocity >
template<class Intersection >
bool Dune::ACFem::TransportOperatorParts< FunctionSpace, Velocity >::setIntersection ( const Intersection &  intersection) const
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]intersectionThe Intersection implementation for the underlying grid.
Returns
The function must return true if Robin-boundary conditions apply for intersection.
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() return false in order for ModelExpressions to work correctly,

◆ setIntersection() [3/3]

template<class GridFunction , class Indicator = EntireBoundaryIndicatorType>
bool Dune::ACFem::NeumannBoundaryModel< GridFunction, Indicator >::setIntersection ( const IntersectionType &  intersection) const
inline

◆ source() [1/3]

template<class GridFunction >
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
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]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueThe value of u.
[in]jacobianThe jacobian of u.
[out]resultThe result of the computation.

◆ source() [2/3]

template<class FunctionSpace >
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
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]entityThe mesh element.
[in]xThe point of evaluation, local coordinates.
[in]valueThe value of u.
[in]jacobianThe jacobian of u.
[out]resultThe result of the computation.

◆ source() [3/3]

template<class FunctionSpace >
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
inline

◆ transportModel()

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 = "" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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]velocityThe advection-velocity. This must already be something with a localFunction() method.

◆ transportOperatorParts()

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 = "" 
)
inlinestatic

Generate an advection-model object.

Parameters
[in]objectSomething with a public FunctionSpaceType typedef.
[in]nameAn optional name for debugging and pretty-printing.
[in]velocityThe advection-velocity. This must already be something with a localFunction() method.

◆ weakDivergenceModel()

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 = "" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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()

template<class Object >
static ZeroModel<typename Object::FunctionSpaceType, typename Object::GridPartType> Dune::ACFem::zeroModel ( const Object &  object,
const std::string &  name = "0" 
)
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]objectIgnored. We use only the type to get hold of the FunctionSpaceType and the GridPartType.
[in]nameOptional. 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.

Variable Documentation

◆ DirichletBoundaryFunctionType

template<class GridFunction , class Indicator >
decltype(std::declval<OuterIndicatorType>() * std::declval<GridFunction>()) typedef 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.

◆ NeumannBoundaryFunctionType

template<class GridFunction , class Indicator >
decltype(std::declval<OuterIndicatorType>() * std::declval<GridFunction>()) typedef 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.
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (Apr 24, 22:30, 2024)