dune-fem  2.4.1-rc
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 </local/tomalk/somewhere/tmp/dune-fem/dune/fem/function/localfunction/converter.hh>

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

Public Types

typedef ToNewDimRangeFunctionSpace< typename HostLocalFunction::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 >
void jacobian (const Point &p, JacobianRangeType &jac) const
 
template<class Point >
void hessian (const Point &p, HessianRangeType &hes) const
 
template<class Quadrature , class Vector >
void evaluateQuadrature (const Quadrature &quad, Vector &vector) const
 
int order () const
 
const EntityTypeentity () 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
 

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 );

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

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

auto g = localFunctionConverter( GF.localFunction( entity ), Converter )

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

template<class HostLocalFunction, class Converter, template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef FunctionSpaceType::DomainFieldType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::DomainFieldType
template<class HostLocalFunction, class Converter, template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef FunctionSpaceType::DomainType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::DomainType
template<class HostLocalFunction, class Converter, template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef HostLocalFunction::EntityType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::EntityType
template<class HostLocalFunction, class Converter, template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef ToNewDimRangeFunctionSpace< typename HostLocalFunction::FunctionSpaceType, dimRange >::Type Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::FunctionSpaceType
template<class HostLocalFunction, class Converter, template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef FunctionSpaceType::HessianRangeType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::HessianRangeType
template<class HostLocalFunction, class Converter, template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef FunctionSpaceType::JacobianRangeType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::JacobianRangeType
template<class HostLocalFunction, class Converter, template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef FunctionSpaceType::RangeFieldType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::RangeFieldType
template<class HostLocalFunction, class Converter, template< class > class Storage = __InstationaryFunction::HoldCopy>
typedef FunctionSpaceType::RangeType Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::RangeType

Constructor & Destructor Documentation

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

template<class HostLocalFunction, class Converter, template< class > class Storage = __InstationaryFunction::HoldCopy>
const EntityType& Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::entity ( ) const
inline
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
template<class HostLocalFunction, class Converter, template< class > class Storage = __InstationaryFunction::HoldCopy>
template<class Quadrature , class Vector >
void Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::evaluateQuadrature ( const Quadrature quad,
Vector &  vector 
) const
inline
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
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
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
template<class HostLocalFunction, class Converter, template< class > class Storage = __InstationaryFunction::HoldCopy>
void Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::init ( const EntityType entity)
inline
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
template<class HostLocalFunction, class Converter, template< class > class Storage = __InstationaryFunction::HoldCopy>
int Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::order ( ) const
inline

Member Data Documentation

template<class HostLocalFunction, class Converter, template< class > class Storage = __InstationaryFunction::HoldCopy>
Converter Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::converter_
protected
template<class HostLocalFunction, class Converter, template< class > class Storage = __InstationaryFunction::HoldCopy>
const int Dune::Fem::LocalFunctionConverter< HostLocalFunction, Converter, Storage >::dimDomain = FunctionSpaceType::dimDomain
static
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: