|
| LocalFunctionAdapter (const std::string &name, LocalFunctionImplType &localFunctionImpl, const GridPartType &gridPart, unsigned int order=DiscreteFunctionSpaceType::polynomialOrder) |
|
| LocalFunctionAdapter (const std::string &name, const LocalFunctionImplType &localFunctionImpl, const GridPartType &gridPart, unsigned int order=DiscreteFunctionSpaceType::polynomialOrder) |
| constructor taking a const reference instance of the local function class
|
|
| LocalFunctionAdapter (const std::string &name, LocalFunctionImplType &&localFunctionImpl, const GridPartType &gridPart, unsigned int order=DiscreteFunctionSpaceType::polynomialOrder) |
| constructor taking a r-value reference instance of the local function class
|
|
template<class ... Args> |
| LocalFunctionAdapter (const std::string &name, const GridPartType &gridPart, unsigned int order, Args &... args) |
|
template<class ... Args> |
| LocalFunctionAdapter (const std::string &name, const GridPartType &gridPart, const std::tuple< Args &... > &args, unsigned int order=DiscreteFunctionSpaceType::polynomialOrder) |
|
| LocalFunctionAdapter (const ThisType &other) |
|
unsigned int | order () const |
| return the order of the space
|
|
bool | continuous () const |
| return true, probably
|
|
const LocalFuncStorageType & | localFunctionImpl () const |
| return local function implementation
|
|
LocalFuncStorageType & | localFunctionImpl () |
| return local function implementation
|
|
void | evaluate (const DomainType &global, RangeType &result) const |
| evaluate function on local coordinate local
|
|
LocalFunctionType | localFunction (const EntityType &entity) |
|
const LocalFunctionType | localFunction (const EntityType &entity) const |
|
const std::string & | name () const |
| obtain the name of the discrete function
|
|
const DiscreteFunctionSpaceType & | space () const |
|
const GridPartType & | gridPart () const |
|
template<class DFType > |
DiscreteFunctionType & | operator+= (const DFType &g) |
|
template<class DFType > |
DiscreteFunctionType & | operator-= (const DFType &g) |
| substract all degrees of freedom from given discrete function using the dof iterators
|
|
DiscreteFunctionType & | operator*= (const RangeFieldType &scalar) |
| multiply all DoFs with a scalar factor
|
|
DiscreteFunctionType & | operator/= (const RangeFieldType &scalar) |
| devide all DoFs by a scalar factor
|
|
template<class ArgumentType > |
void | initialize (const ArgumentType &arg, double time) |
| initialize local function with argument and time
|
|
void | registerLocalFunction (LocalFunctionType *lf) const |
| add LocalFunction to list of local functions
|
|
void | deleteLocalFunction (LocalFunctionType *lf) const |
| remove LocalFunction to list of local functions
|
|
virtual void | operator() (const DomainType &arg, RangeType &dest) const |
| application operator call evaluate
|
|
void | operator() (const DomainType &arg, RangeType &dest) const |
| Application operator that applies all operators in the linear combination stack.
|
|
void | jacobian (const DomainType &x, JacobianRangeType &jacobian) const |
| evaluate the Jacobian of the function
|
|
void | hessian (const DomainType &x, HessianRangeType &hessian) const |
| evaluate the hessian of the function
|
|
|
(Note that these are not member functions.)
|
template<class DFieldType , class RFieldType , class DType , class RType > |
static Mapping< DFieldType, RFieldType, DType, RType > | operator+ (const Mapping< DFieldType, RFieldType, DType, RType > &a, const Mapping< DFieldType, RFieldType, DType, RType > &b) |
| add two mappings
|
|
template<class DFieldType , class RFieldType , class DType , class RType > |
static Mapping< DFieldType, RFieldType, DType, RType > | operator- (const Mapping< DFieldType, RFieldType, DType, RType > &a, const Mapping< DFieldType, RFieldType, DType, RType > &b) |
| substract two mappings
|
|
template<class DFieldType , class RFieldType , class DType , class RType > |
static Mapping< DFieldType, RFieldType, DType, RType > | operator* (const Mapping< DFieldType, RFieldType, DType, RType > &mapping, const RFieldType &factor) |
| scale mapping with factor
|
|
template<class DFieldType , class RFieldType , class DType , class RType > |
static Mapping< DFieldType, RFieldType, DType, RType > | operator* (const RFieldType &factor, const Mapping< DFieldType, RFieldType, DType, RType > &mapping) |
| scale mapping with factor
|
|
template<class DFieldType , class RFieldType , class DType , class RType > |
static Mapping< DFieldType, RFieldType, DType, RType > | operator/ (const Mapping< DFieldType, RFieldType, DType, RType > &mapping, const RFieldType &factor) |
| operator / for mappings
|
|
template<class DFieldType , class RFieldType , class DType , class RType > |
static Mapping< DFieldType, RFieldType, DType, RType > | operator/ (const RFieldType &factor, const Mapping< DFieldType, RFieldType, DType, RType > &mapping) |
| operator / for mappings
|
|
template<class LocalFunctionImpl>
class Dune::Fem::LocalFunctionAdapter< LocalFunctionImpl >
LocalFunctionAdapter wrapped a class with a local evaluate method into a grid function.
The class takes one template argument LocalFunctionImpl which holds the method evaluate(...) to evaluate the local function
template<class PointType> LocalFunctionImpl::evaluate(const PointType& x,RangeType& val)
and a method init(...)
LocalFunctionImpl::init(const EntityType& entity)
to set the entity.
It is important to know that the point x it is not necessary of type DomainType. More precisely, if the evaluate(...) is used with a caching quadrature point the type is different. Indeed floating point coordinates are not very well suited to address the cache therefore quadrature[i] return a QuadraturePointWrapper (which simply stores a reference to the quadrature and the index i).
In order to be sure that the point x is of type DomainType, you can use the function coordinate(x) which can be also called with a DomainType.
Therefore, the local implementation should be something like
template<class PointType> LocalFunctionImpl::evaluate(const PointType& x,RangeType& val) { const DomainType xDomain(coordiante(x)); // do stuff with xDomain }
to avoid type conflicts.
Required type in LocalFunctionImpl are:
FunctionSpaceType GridPartType EntityType DomainType RangeType
An instance of the LocalFunctionImpl class is passed to the constructor.
In order to adapt a lambda or a plain C++ function, you can directly use the LocalAnalyticalFunctionBinder which provides all the necessary types and methods.