dune-fem 2.8.0
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage > Class Template Reference

implementation of a Dune::Fem::LocalFunction on a FunctionSpace V restircted/prolongated from an other function space W. More...

#include <dune/fem/function/localfunction/converter.hh>

Inheritance diagram for Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >:
Inheritance graph

Classes

struct  Traits
 

Public Types

typedef ToNewDimRangeFunctionSpace< typenameHostLocalFunction::FunctionSpaceType, dimRange >::Type FunctionSpaceType
 
typedef HostLocalFunction::EntityType EntityType
 
typedef FunctionSpaceType::DomainType DomainType
 
typedef FunctionSpaceType::RangeType RangeType
 
typedef FunctionSpaceType::JacobianRangeType JacobianRangeType
 
typedef FunctionSpaceType::HessianRangeType HessianRangeType
 
typedef FunctionSpaceType::DomainFieldType DomainFieldType
 
typedef FunctionSpaceType::RangeFieldType RangeFieldType
 

Public Member Functions

 LocalFunctionConverter (const HostLocalFunction &hostLocalFunction, const Converter &converter=Converter())
 
 LocalFunctionConverter (HostLocalFunction &&hostLocalFunction, const Converter &converter=Converter())
 
template<class Point >
void evaluate (const Point &p, RangeType &ret) const
 
template<class Point >
RangeType operator() (const Point &p) const
 
template<class Point >
void jacobian (const Point &p, JacobianRangeType &jac) const
 
template<class Point >
void hessian (const Point &p, HessianRangeType &hes) const
 
template<class Quadrature , class ... Vectors>
void evaluateQuadrature (const Quadrature &quad, Vectors &... vector) const
 
int order () const
 
EntityType entity () const
 
void init (const EntityType &entity)
 

Static Public Attributes

static const int dimRange = decltype( std::declval< Converter >() ( std::declval< HostRangeType >() ) ) ::dimension
 
static const int dimDomain = FunctionSpaceType::dimDomain
 

Protected Member Functions

template<class QuadratureType , class VectorType >
void evaluateQuadratureImp (const QuadratureType &quadrature, VectorType &values, const RangeType &) const
 
template<class QuadratureType , class VectorType >
void evaluateQuadratureImp (const QuadratureType &quadrature, VectorType &values, const JacobianRangeType &) const
 
template<class QuadratureType , class VectorType >
void evaluateQuadratureImp (const QuadratureType &quadrature, VectorType &values, const HessianRangeType &) const
 

Protected Attributes

Converter converter_
 

Detailed Description

template<class HostLocalFunction, class Converter, template< class > class Storage = __InstationaryFunction::HoldCopy>
class Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >

implementation of a Dune::Fem::LocalFunction on a FunctionSpace V restircted/prolongated from an other function space W.

The HostLocalFunction is assumed to fulfill the LocalFunctioninterface. Basically the following functions are implemented on the HostLocalFunction:

template< class Point >
void evaluate ( const Point &x, RangeType &ret ) const;
template< class Point >
void jacobian ( const Point &x, JacobianRangeType &jac ) const;
tempalte< class Point >
void hessian ( const Point &x, HessianRangeType &hess ) const;
const EntityType &entity () const;
int size() const;
void init ( const EntityType & entity );
FunctionSpaceType::RangeType RangeType
Definition: converter.hh:94
void init(const EntityType &entity)
Definition: converter.hh:162
HostLocalFunction::EntityType EntityType
Definition: converter.hh:90
void hessian(const Point &p, HessianRangeType &hes) const
Definition: converter.hh:144
EntityType entity() const
Definition: converter.hh:160
FunctionSpaceType::JacobianRangeType JacobianRangeType
Definition: converter.hh:95
FunctionSpaceType::HessianRangeType HessianRangeType
Definition: converter.hh:96
void jacobian(const Point &p, JacobianRangeType &jac) const
Definition: converter.hh:136
void evaluate(const Point &p, RangeType &ret) const
Definition: converter.hh:121

The template paramter Converter, is used to get the restriction/prolongation onto the space V. Converter is expected to provide the method {Hessian,Jacobian,.}RangeType converter( Host{Hessian,Jacobian,. }RangeType ); which does the acctual mapping onto V. The dimension of the new Range is obtained from the method Convertor::operator( HostRangeType )::dimension.

Users may prescribe how the parameter localFunction is stored by providing a fourth template parameter, the storage policy. Further informations on the storage policy can be found in the file dune/fem/function/common/instationary.hh.

The free-standing function

LocalFunctionConverter< HostLocalFunction, Converter, __InstationaryFunction::HoldCopy > localFunctionConverter(HostLocalFunction hostLocalFunction, const Converter &converter=Converter())
Definition: converter.hh:199

may be used to conveniently create a new instance of a LocalFunctionConverter. Use

auto g = localFunctionConverter( localFunction, Converter )
static GridFunctionView< GF > localFunction(const GF &gf)
Definition: gridfunctionview.hh:118

to create an converted local function.

Template Parameters
HostLocalFunctionoriginal local function
Converterstructure which provides the restirction/prolongation from W to V
StoragePolicystorage policy

Member Typedef Documentation

◆ DomainFieldType

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef FunctionSpaceType::DomainFieldType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::DomainFieldType

◆ DomainType

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef FunctionSpaceType::DomainType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::DomainType

◆ EntityType

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef HostLocalFunction::EntityType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::EntityType

◆ FunctionSpaceType

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef ToNewDimRangeFunctionSpace<typenameHostLocalFunction::FunctionSpaceType,dimRange>::Type Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::FunctionSpaceType

◆ HessianRangeType

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef FunctionSpaceType::HessianRangeType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::HessianRangeType

◆ JacobianRangeType

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef FunctionSpaceType::JacobianRangeType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::JacobianRangeType

◆ RangeFieldType

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef FunctionSpaceType::RangeFieldType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::RangeFieldType

◆ RangeType

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef FunctionSpaceType::RangeType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::RangeType

Constructor & Destructor Documentation

◆ LocalFunctionConverter() [1/2]

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::LocalFunctionConverter ( const HostLocalFunction &  hostLocalFunction,
const Converter &  converter = Converter() 
)
inline

◆ LocalFunctionConverter() [2/2]

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::LocalFunctionConverter ( HostLocalFunction &&  hostLocalFunction,
const Converter &  converter = Converter() 
)
inline

Member Function Documentation

◆ entity()

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
EntityType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::entity ( ) const
inline

◆ evaluate()

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
template<class Point >
void Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::evaluate ( const Point &  p,
RangeType ret 
) const
inline

◆ evaluateQuadrature()

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
template<class Quadrature , class ... Vectors>
void Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::evaluateQuadrature ( const Quadrature quad,
Vectors &...  vector 
) const
inline

◆ evaluateQuadratureImp() [1/3]

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
template<class QuadratureType , class VectorType >
void Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::evaluateQuadratureImp ( const QuadratureType &  quadrature,
VectorType &  values,
const HessianRangeType  
) const
inlineprotected

◆ evaluateQuadratureImp() [2/3]

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
template<class QuadratureType , class VectorType >
void Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::evaluateQuadratureImp ( const QuadratureType &  quadrature,
VectorType &  values,
const JacobianRangeType  
) const
inlineprotected

◆ evaluateQuadratureImp() [3/3]

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
template<class QuadratureType , class VectorType >
void Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::evaluateQuadratureImp ( const QuadratureType &  quadrature,
VectorType &  values,
const RangeType  
) const
inlineprotected

◆ hessian()

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
template<class Point >
void Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::hessian ( const Point &  p,
HessianRangeType hes 
) const
inline

◆ init()

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
void Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::init ( const EntityType entity)
inline

◆ jacobian()

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
template<class Point >
void Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::jacobian ( const Point &  p,
JacobianRangeType jac 
) const
inline

◆ operator()()

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
template<class Point >
RangeType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::operator() ( const Point &  p) const
inline

◆ order()

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
int Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::order ( ) const
inline

Member Data Documentation

◆ converter_

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
Converter Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::converter_
protected

◆ dimDomain

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
const int Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::dimDomain = FunctionSpaceType::dimDomain
static

◆ dimRange

template<class HostLocalFunction , class Converter , template< class > class Storage = __InstationaryFunction::HoldCopy>
const int Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::dimRange = decltype( std::declval< Converter >() ( std::declval< HostRangeType >() ) ) ::dimension
static

The documentation for this class was generated from the following file: