KASKADE 7 development version
Public Types | Public Member Functions | Protected Attributes | List of all members
Kaskade::Bridge::Functional< FunctionalImpl, DomainImpl, ImageImpl > Class Template Reference

Object that represents the linearization of a nonlinear functional, implements AbstractLineariztion. More...

#include <newton_bridge.hh>

Detailed Description

template<typename FunctionalImpl, typename DomainImpl = typename FunctionalImpl::AnsatzVars::VariableSet, typename ImageImpl = DomainImpl>
class Kaskade::Bridge::Functional< FunctionalImpl, DomainImpl, ImageImpl >

Object that represents the linearization of a nonlinear functional, implements AbstractLineariztion.

Can be connected to an AdaptiveGrid to be able to know, when the grid changes Emits a signal if it is invalidated. This can be used by a solver to flush data

Currently there are two implementations available with an automatic switch depending on the type of vector used. This switch is implemented via LinearizationTraits:

The first implementation is used in case of a Dune::BlockVector<T>. Then the creation of a linear system is forwarded to the functional

The second implementation is used in case of a VariableSet. Here a VariationalFunctionalAssembler is used to create the linear system.

Implementations have to provide the following routines Example: DuneLinearization

Linearizations can be defined to set the right hand side to 0 everywhere, except in [rhsstart,rhsfinal) this is useful on the optimization context Linear Solver. Can get a signal from Linearization in order to flush its data, implements AbstractLinearSolver Implementation must support the following member functions:

There is one pure virtual function to be overloaded Bridge class for Functionals. Its most prominent task is to create linearizations, implements AbstractFunctional

Definition at line 652 of file newton_bridge.hh.

Inheritance diagram for Kaskade::Bridge::Functional< FunctionalImpl, DomainImpl, ImageImpl >:
Kaskade::AbstractFunctional

Public Types

typedef FunctionalImpl::Scalar Scalar
 

Public Member Functions

 Functional (FunctionalImpl *impl)
 
 Functional (std::unique_ptr< FunctionalImpl > &&imp)
 
template<typename... ConstructorArguments>
 Functional (const ConstructorArguments &... args)
 
std::unique_ptr< AbstractLinearizationgetLinearization (AbstractFunctionSpaceElement const &x) const
 
virtual std::unique_ptr< AbstractFunctionSpaceElementgetImageVector (AbstractFunctionSpaceElement const &x) const
 
virtual bool inDomain (AbstractFunctionSpaceElement const &x) const
 
virtual double evaluate (AbstractFunctionSpaceElement const &x) const
 

Protected Attributes

std::unique_ptr< FunctionalImpl > myImplementation
 

Member Typedef Documentation

◆ Scalar

template<typename FunctionalImpl , typename DomainImpl = typename FunctionalImpl::AnsatzVars::VariableSet, typename ImageImpl = DomainImpl>
typedef FunctionalImpl::Scalar Kaskade::Bridge::Functional< FunctionalImpl, DomainImpl, ImageImpl >::Scalar

Definition at line 655 of file newton_bridge.hh.

Constructor & Destructor Documentation

◆ Functional() [1/3]

template<typename FunctionalImpl , typename DomainImpl = typename FunctionalImpl::AnsatzVars::VariableSet, typename ImageImpl = DomainImpl>
Kaskade::Bridge::Functional< FunctionalImpl, DomainImpl, ImageImpl >::Functional ( FunctionalImpl *  impl)
inlineexplicit

Definition at line 658 of file newton_bridge.hh.

◆ Functional() [2/3]

template<typename FunctionalImpl , typename DomainImpl = typename FunctionalImpl::AnsatzVars::VariableSet, typename ImageImpl = DomainImpl>
Kaskade::Bridge::Functional< FunctionalImpl, DomainImpl, ImageImpl >::Functional ( std::unique_ptr< FunctionalImpl > &&  imp)
inlineexplicit

Definition at line 660 of file newton_bridge.hh.

◆ Functional() [3/3]

template<typename FunctionalImpl , typename DomainImpl = typename FunctionalImpl::AnsatzVars::VariableSet, typename ImageImpl = DomainImpl>
template<typename... ConstructorArguments>
Kaskade::Bridge::Functional< FunctionalImpl, DomainImpl, ImageImpl >::Functional ( const ConstructorArguments &...  args)
inlineexplicit

Definition at line 663 of file newton_bridge.hh.

Member Function Documentation

◆ evaluate()

virtual double Kaskade::AbstractFunctional::evaluate ( AbstractFunctionSpaceElement const &  x) const
inlinevirtualinherited

Definition at line 226 of file abstract_interface.hh.

◆ getImageVector()

template<typename FunctionalImpl , typename DomainImpl = typename FunctionalImpl::AnsatzVars::VariableSet, typename ImageImpl = DomainImpl>
virtual std::unique_ptr< AbstractFunctionSpaceElement > Kaskade::Bridge::Functional< FunctionalImpl, DomainImpl, ImageImpl >::getImageVector ( AbstractFunctionSpaceElement const &  x) const
inlinevirtual

Implements Kaskade::AbstractFunctional.

Definition at line 671 of file newton_bridge.hh.

◆ getLinearization()

template<typename FunctionalImpl , typename DomainImpl = typename FunctionalImpl::AnsatzVars::VariableSet, typename ImageImpl = DomainImpl>
std::unique_ptr< AbstractLinearization > Kaskade::Bridge::Functional< FunctionalImpl, DomainImpl, ImageImpl >::getLinearization ( AbstractFunctionSpaceElement const &  x) const
inlinevirtual

Implements Kaskade::AbstractFunctional.

Definition at line 665 of file newton_bridge.hh.

◆ inDomain()

template<typename FunctionalImpl , typename DomainImpl = typename FunctionalImpl::AnsatzVars::VariableSet, typename ImageImpl = DomainImpl>
virtual bool Kaskade::Bridge::Functional< FunctionalImpl, DomainImpl, ImageImpl >::inDomain ( AbstractFunctionSpaceElement const &  x) const
inlinevirtual

Reimplemented from Kaskade::AbstractFunctional.

Definition at line 677 of file newton_bridge.hh.

Member Data Documentation

◆ myImplementation

template<typename FunctionalImpl , typename DomainImpl = typename FunctionalImpl::AnsatzVars::VariableSet, typename ImageImpl = DomainImpl>
std::unique_ptr<FunctionalImpl> Kaskade::Bridge::Functional< FunctionalImpl, DomainImpl, ImageImpl >::myImplementation
protected

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