DUNE-FEM (unstable)

Dune::Fem::InstationaryFunction< Function, StoragePolicy > Class Template Reference

implementation of a Dune::Fem::Function taking an instationary function More...

#include <dune/fem/function/common/instationary.hh>

Public Types

typedef BaseType::DomainType DomainType
 domain type More...
 
typedef FunctionSpaceImp FunctionSpaceType
 type of function space this function belongs to
 
typedef FunctionImp FunctionType
 type of the implementation (Barton-Nackman)
 
typedef FunctionSpaceType ::DomainFieldType DomainFieldType
 field type of domain
 
typedef FunctionSpaceType ::RangeFieldType RangeFieldType
 field type of range
 
typedef FunctionSpaceType ::RangeType RangeType
 range type
 
typedef FunctionSpaceType ::JacobianRangeType JacobianRangeType
 jacobian type
 
typedef FunctionSpaceType ::HessianRangeType HessianRangeType
 hessian type
 
typedef Mapping< DomainFieldType, RangeFieldType, DomainType, RangeTypeMappingType
 type of mapping base class
 

Public Member Functions

virtual void operator() (const DomainType &arg, RangeType &dest) const
 application operator call evaluate More...
 
void operator() (const DomainType &arg, RangeType &dest) const
 Application operator that applies all operators in the linear combination stack. More...
 
void jacobian (const DomainType &x, JacobianRangeType &jacobian) const
 evaluate the Jacobian of the function More...
 
void hessian (const DomainType &x, HessianRangeType &hessian) const
 evaluate the hessian of the function More...
 
Constructon
 InstationaryFunction (const Function &function, double time)
 
 InstationaryFunction (Function &&function, double time)
 
Public member methods
void evaluate (const DomainType &x, typename BaseType::RangeType &value) const
 evaluate the function More...
 
void jacobian (const DomainType &x, typename BaseType::JacobianRangeType &jacobian) const
 evaluate the Jacobian of the function More...
 
void hessian (const DomainType &x, typename BaseType::HessianRangeType &hessian) const
 evaluate the hessian of the function More...
 
Set time
double setTime (double time)
 set time to give value More...
 
double time () const
 return set time
 

Related Functions

(Note that these are not member functions.)

static Mapping< FunctionSpaceImp ::DomainFieldType, FunctionSpaceImp ::RangeFieldType, FunctionSpaceImp ::DomainType, FunctionSpaceImp ::RangeTypeoperator+ (const Mapping< FunctionSpaceImp ::DomainFieldType, FunctionSpaceImp ::RangeFieldType, FunctionSpaceImp ::DomainType, FunctionSpaceImp ::RangeType > &a, const Mapping< FunctionSpaceImp ::DomainFieldType, FunctionSpaceImp ::RangeFieldType, FunctionSpaceImp ::DomainType, FunctionSpaceImp ::RangeType > &b)
 add two mappings More...
 
static Mapping< FunctionSpaceImp ::DomainFieldType, FunctionSpaceImp ::RangeFieldType, FunctionSpaceImp ::DomainType, FunctionSpaceImp ::RangeTypeoperator- (const Mapping< FunctionSpaceImp ::DomainFieldType, FunctionSpaceImp ::RangeFieldType, FunctionSpaceImp ::DomainType, FunctionSpaceImp ::RangeType > &a, const Mapping< FunctionSpaceImp ::DomainFieldType, FunctionSpaceImp ::RangeFieldType, FunctionSpaceImp ::DomainType, FunctionSpaceImp ::RangeType > &b)
 substract two mappings More...
 
static Mapping< FunctionSpaceImp ::DomainFieldType, FunctionSpaceImp ::RangeFieldType, FunctionSpaceImp ::DomainType, FunctionSpaceImp ::RangeTypeoperator* (const Mapping< FunctionSpaceImp ::DomainFieldType, FunctionSpaceImp ::RangeFieldType, FunctionSpaceImp ::DomainType, FunctionSpaceImp ::RangeType > &mapping, const FunctionSpaceImp ::RangeFieldType &factor)
 scale mapping with factor More...
 
static Mapping< FunctionSpaceImp ::DomainFieldType, FunctionSpaceImp ::RangeFieldType, FunctionSpaceImp ::DomainType, FunctionSpaceImp ::RangeTypeoperator* (const FunctionSpaceImp ::RangeFieldType &factor, const Mapping< FunctionSpaceImp ::DomainFieldType, FunctionSpaceImp ::RangeFieldType, FunctionSpaceImp ::DomainType, FunctionSpaceImp ::RangeType > &mapping)
 scale mapping with factor More...
 
static Mapping< FunctionSpaceImp ::DomainFieldType, FunctionSpaceImp ::RangeFieldType, FunctionSpaceImp ::DomainType, FunctionSpaceImp ::RangeTypeoperator/ (const Mapping< FunctionSpaceImp ::DomainFieldType, FunctionSpaceImp ::RangeFieldType, FunctionSpaceImp ::DomainType, FunctionSpaceImp ::RangeType > &mapping, const FunctionSpaceImp ::RangeFieldType &factor)
 operator / for mappings More...
 
static Mapping< FunctionSpaceImp ::DomainFieldType, FunctionSpaceImp ::RangeFieldType, FunctionSpaceImp ::DomainType, FunctionSpaceImp ::RangeTypeoperator/ (const FunctionSpaceImp ::RangeFieldType &factor, const Mapping< FunctionSpaceImp ::DomainFieldType, FunctionSpaceImp ::RangeFieldType, FunctionSpaceImp ::DomainType, FunctionSpaceImp ::RangeType > &mapping)
 operator / for mappings More...
 

Detailed Description

template<class Function, template< class > class StoragePolicy = __InstationaryFunction::HoldCopy>
class Dune::Fem::InstationaryFunction< Function, StoragePolicy >

implementation of a Dune::Fem::Function taking an instationary function

It is assumed that all evaluation methods are present on the parameter function and have a second parameter for the time:

void Function::evaluate(const DomainType &x, double time, RangeType &value) const;
void Function::jacobian(const DomainType &x, double time, JacobianRangeType &value) const;
void Function::hessian(const DomainType &x, double time, HessianRangeType &value) const;
void evaluate(const DomainType &x, RangeType &value) const
evaluate the function
Definition: function.hh:107
void jacobian(const DomainType &x, JacobianRangeType &jacobian) const
evaluate the Jacobian of the function
Definition: function.hh:117
FunctionSpaceType ::HessianRangeType HessianRangeType
hessian type
Definition: function.hh:72
FunctionSpaceType ::JacobianRangeType JacobianRangeType
jacobian type
Definition: function.hh:70
void hessian(const DomainType &x, HessianRangeType &hessian) const
evaluate the hessian of the function
Definition: function.hh:127

Users may prescribe how the parameter function is stored by providing a second template parameter, the storage policy. The policy is class that must be constructible from a function object or reference and that has a single method:

const Function &Policy::get() const;
Function()=default
default constructor

The default policy is to copy the function parameter. The free-standing method

Dune::Fem::instationaryFunction

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

auto g = instationaryFunction( std::cref( f ), 0. );

to create an instationary function that holds a reference to f instead of a copy.

Template Parameters
Functionan instationary function
StoragePolicystorage policy

Member Typedef Documentation

◆ DomainType

template<class Function , template< class > class StoragePolicy = __InstationaryFunction::HoldCopy>
typedef BaseType::DomainType Dune::Fem::InstationaryFunction< Function, StoragePolicy >::DomainType

domain type

Member Function Documentation

◆ evaluate()

template<class Function , template< class > class StoragePolicy = __InstationaryFunction::HoldCopy>
void Dune::Fem::InstationaryFunction< Function, StoragePolicy >::evaluate ( const DomainType x,
typename BaseType::RangeType value 
) const
inline

evaluate the function

Parameters
[in]xevaluation point
[out]valuevalue of the function in x

References Dune::get(), and Dune::Fem::BasicInstationaryFunction< Function::FunctionSpaceType, InstationaryFunction< Function, __InstationaryFunction::HoldCopy > >::time().

◆ hessian() [1/2]

template<class FunctionSpaceImp , class FunctionImp >
void Dune::Fem::Function< FunctionSpaceImp, FunctionImp >::hessian ( const DomainType x,
HessianRangeType hessian 
) const
inlineinherited

evaluate the hessian of the function

Parameters
[in]xevaluation point
[out]hessianvalue of the hessian in x

References CHECK_AND_CALL_INTERFACE_IMPLEMENTATION.

◆ hessian() [2/2]

template<class Function , template< class > class StoragePolicy = __InstationaryFunction::HoldCopy>
void Dune::Fem::InstationaryFunction< Function, StoragePolicy >::hessian ( const DomainType x,
typename BaseType::HessianRangeType hessian 
) const
inline

evaluate the hessian of the function

Parameters
[in]xevaluation point
[out]hessianvalue of the hessian in x

References Dune::get(), and Dune::Fem::BasicInstationaryFunction< Function::FunctionSpaceType, InstationaryFunction< Function, __InstationaryFunction::HoldCopy > >::time().

◆ jacobian() [1/2]

template<class FunctionSpaceImp , class FunctionImp >
void Dune::Fem::Function< FunctionSpaceImp, FunctionImp >::jacobian ( const DomainType x,
JacobianRangeType jacobian 
) const
inlineinherited

evaluate the Jacobian of the function

Parameters
[in]xevaluation point
[out]jacobianvalue of the Jacobian in x

References CHECK_AND_CALL_INTERFACE_IMPLEMENTATION.

◆ jacobian() [2/2]

template<class Function , template< class > class StoragePolicy = __InstationaryFunction::HoldCopy>
void Dune::Fem::InstationaryFunction< Function, StoragePolicy >::jacobian ( const DomainType x,
typename BaseType::JacobianRangeType jacobian 
) const
inline

evaluate the Jacobian of the function

Parameters
[in]xevaluation point
[out]jacobianvalue of the Jacobian in x

References Dune::get(), and Dune::Fem::BasicInstationaryFunction< Function::FunctionSpaceType, InstationaryFunction< Function, __InstationaryFunction::HoldCopy > >::time().

◆ operator()() [1/2]

template<class FunctionSpaceImp , class FunctionImp >
virtual void Dune::Fem::Function< FunctionSpaceImp, FunctionImp >::operator() ( const DomainType arg,
RangeType dest 
) const
inlinevirtualinherited

application operator call evaluate

Parameters
[in]argargument
[out]destdestination, i.e. f(arg)

References Dune::Fem::Function< FunctionSpaceImp, FunctionImp >::evaluate().

◆ operator()() [2/2]

void Dune::Fem::Mapping< FunctionSpaceImp ::DomainFieldType , FunctionSpaceImp ::RangeFieldType , FunctionSpaceImp ::DomainType , FunctionSpaceImp ::RangeType >::operator() ( const DomainType arg,
RangeType dest 
) const
inlineinherited

Application operator that applies all operators in the linear combination stack.

Parameters
[in]argargument
[out]destdestination

◆ setTime()

double Dune::Fem::BasicInstationaryFunction< Function::FunctionSpaceType , InstationaryFunction< Function, __InstationaryFunction::HoldCopy > >::setTime ( double  time)
inlineinherited

set time to give value

Parameters
[in]timetime to be used
Returns
set time

Friends And Related Function Documentation

◆ operator*() [1/2]

static Mapping< FunctionSpaceImp ::DomainFieldType , FunctionSpaceImp ::RangeFieldType , FunctionSpaceImp ::DomainType , FunctionSpaceImp ::RangeType > operator* ( const RFieldType &  factor,
const Mapping< DFieldType, RFieldType, DType, RType > &  mapping 
)
related

scale mapping with factor

Parameters
[in]factorfactor with which mapping is scaled
[in]mappingMapping which is scaled
Returns
new object mapping

◆ operator*() [2/2]

static Mapping< FunctionSpaceImp ::DomainFieldType , FunctionSpaceImp ::RangeFieldType , FunctionSpaceImp ::DomainType , FunctionSpaceImp ::RangeType > operator* ( const Mapping< DFieldType, RFieldType, DType, RType > &  mapping,
const RFieldType &  factor 
)
related

scale mapping with factor

Parameters
[in]mappingMapping which is scaled
[in]factorfactor with which mapping is scaled
Returns
new object mapping

◆ operator+()

static Mapping< FunctionSpaceImp ::DomainFieldType , FunctionSpaceImp ::RangeFieldType , FunctionSpaceImp ::DomainType , FunctionSpaceImp ::RangeType > operator+ ( const Mapping< DFieldType, RFieldType, DType, RType > &  a,
const Mapping< DFieldType, RFieldType, DType, RType > &  b 
)
related

add two mappings

Parameters
[in]amapping 1
[in]bmapping 2
Returns
new object mapping

◆ operator-()

static Mapping< FunctionSpaceImp ::DomainFieldType , FunctionSpaceImp ::RangeFieldType , FunctionSpaceImp ::DomainType , FunctionSpaceImp ::RangeType > operator- ( const Mapping< DFieldType, RFieldType, DType, RType > &  a,
const Mapping< DFieldType, RFieldType, DType, RType > &  b 
)
related

substract two mappings

Parameters
[in]amapping 1
[in]bmapping 2
Returns
new object mapping

◆ operator/() [1/2]

static Mapping< FunctionSpaceImp ::DomainFieldType , FunctionSpaceImp ::RangeFieldType , FunctionSpaceImp ::DomainType , FunctionSpaceImp ::RangeType > operator/ ( const RFieldType &  factor,
const Mapping< DFieldType, RFieldType, DType, RType > &  mapping 
)
related

operator / for mappings

Parameters
[in]factorby which result of mapping is divided
[in]mappingwhich is divided
Returns
new object mapping

◆ operator/() [2/2]

static Mapping< FunctionSpaceImp ::DomainFieldType , FunctionSpaceImp ::RangeFieldType , FunctionSpaceImp ::DomainType , FunctionSpaceImp ::RangeType > operator/ ( const Mapping< DFieldType, RFieldType, DType, RType > &  mapping,
const RFieldType &  factor 
)
related

operator / for mappings

Parameters
[in]mappingmapping which is divided
[in]factorf factor by which result of mapping is divided
Returns
new object mapping

The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (May 6, 22:30, 2024)