KASKADE 7 development version
Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
Kaskade::Bridge::KaskadeLinearization< Functional > Class Template Referenceabstract

Bridge::Linearization class that uses a VariationalFunctionalAssembler to create linear systems. More...

#include <kaskadeBridge.hh>

Detailed Description

template<class Functional>
class Kaskade::Bridge::KaskadeLinearization< Functional >

Bridge::Linearization class that uses a VariationalFunctionalAssembler to create linear systems.

Implements AbstractLinearization

Definition at line 55 of file kaskadeBridge.hh.

Inheritance diagram for Kaskade::Bridge::KaskadeLinearization< Functional >:
Kaskade::AbstractLinearization Kaskade::SparseLinearSystem

Public Types

typedef Functional::AnsatzVars::VariableSet DomainElement
 
typedef Functional::TestVars::VariableSet ImageElement
 
typedef Functional::Scalar Scalar
 
typedef LinearizationAt< FunctionalImplementation
 
typedef VariationalFunctionalAssembler< ImplementationAssembler
 
typedef DomainElement::Descriptions::template CoefficientVectorRepresentation ::type CoefficientVector
 
typedef Dune::LinearOperator< CoefficientVector, CoefficientVectorOperatorType
 
typedef OperatorType Operator
 

Public Member Functions

 KaskadeLinearization (Functional const &fu_, DomainElement const &x_)
 Creation of a linearization for a functional fu at x_. More...
 
 KaskadeLinearization (Functional const &fu_, DomainElement const &x_, std::shared_ptr< Assembler > const &ass_)
 Creation of a linearization for a functional fu at x_. More...
 
 KaskadeLinearization (KaskadeLinearization const &other)
 
virtual ~KaskadeLinearization ()
 
int cols (int cbegin=0, int cend=-1) const
 Number of columns of components [cbegin, cend) More...
 
int rows (int rbegin=0, int rend=-1) const
 Number of rows of components [rbegin, rend) More...
 
void precompute ()
 
void getMatrixBlocks (MatrixAsTriplet< Scalar > &mat, int rbegin, int rend, int cbegin, int cend) const
 write blocks of the hessian matrix into mat More...
 
void getRHSBlocks (std::vector< Scalar > &rhs, int rbegin, int rend) const
 write components of the gradient into rhs More...
 
int nColBlocks () const
 return number of columns More...
 
int nRowBlocks () const
 return number of rows More...
 
AbstractFunctionSpaceElement const & getOrigin () const
 return point of linearization More...
 
void setOrigin (AbstractFunctionSpaceElement const &x_)
 
Implementation const & getLinImpl () const
 return the implementation More...
 
void flush ()
 flush all data, gathered so far More...
 
bool inDomain (DomainElement const &x)
 return whether x is in the domain of definition More...
 
double eval () const
 return the current value Functional(Origin) More...
 
double getValue () const
 value of function More...
 
void evald (AbstractFunctionSpaceElement &v, int rbegin, int rend) const
 Evaluate derivative. More...
 
void ddxpy (AbstractFunctionSpaceElement &y, AbstractFunctionSpaceElement const &x, int rbegin=0, int rend=-1, int cbegin=0, int cend=-1) const
 
void d2axpy (double a, AbstractFunctionSpaceElement &y, AbstractFunctionSpaceElement const &x, int rbegin=0, int rend=-1, int cbegin=0, int cend=-1) const
 Evaluate hessian times second argument: y = y+a*ddf*x. More...
 
void ddtxpy (AbstractFunctionSpaceElement &y, AbstractFunctionSpaceElement const &x, int rbegin=0, int rend=-1, int cbegin=0, int cend=-1) const
 
void d2taxpy (double a, AbstractFunctionSpaceElement &y, AbstractFunctionSpaceElement const &x, int rbegin=0, int rend=-1, int cbegin=0, int cend=-1) const
 Evaluate hessian times second argument: y = y+a*ddf*x. More...
 
double evalL1norm () const
 Evaluate L1 norm of integrand. More...
 
Assembler const & getValidAssembler () const
 
Functional const & getFunctional () const
 
virtual void getMatrixBlocks (MatrixAsTriplet< double > &mat, int rbegin=0, int rend=-1, int cbegin=0, int cend=-1) const =0
 Access matrix representation if available. More...
 
virtual void getMatrix (MatrixAsTriplet< double > &mat) const
 Return the matrix of the linear system in triplet format. More...
 
virtual void getRHS (std::vector< double > &rhs) const
 Return the right hand side of the linear system. More...
 
virtual int size () const
 Return the number of variables of the linear system. More...
 
virtual void getMatrixBlocks (MatrixAsTriplet< double > &mat, int rbegin, int rend, int colbegin, int colend) const =0
 Return matrix blocks of the linear system in triplet format. More...
 
virtual void getRHSBlocks (std::vector< double > &rhs, int rbegin, int rend) const =0
 Return components of the right hand side of the linear system. More...
 

Static Public Attributes

static const int nThreads = 32
 

Protected Member Functions

void addDiscreteRHSBlocks (std::vector< Scalar > &rhs, int rbegin, int rend) const
 
void getDiscreteMatrixBlocks (MatrixAsTriplet< Scalar > &mat, int rbegin, int rend, int cbegin, int cend) const
 
void doAssemble (int flags) const
 

Protected Attributes

DomainElement x
 
Functional const * fu
 
Implementation lin
 
std::shared_ptr< Assemblerass
 
std::unique_ptr< Vector< DomainElement > > xptr
 

Member Typedef Documentation

◆ Assembler

Definition at line 65 of file kaskadeBridge.hh.

◆ CoefficientVector

template<class Functional >
typedef DomainElement::Descriptions::template CoefficientVectorRepresentation ::type Kaskade::Bridge::KaskadeLinearization< Functional >::CoefficientVector

Definition at line 66 of file kaskadeBridge.hh.

◆ DomainElement

template<class Functional >
typedef Functional::AnsatzVars::VariableSet Kaskade::Bridge::KaskadeLinearization< Functional >::DomainElement

Definition at line 61 of file kaskadeBridge.hh.

◆ ImageElement

template<class Functional >
typedef Functional::TestVars::VariableSet Kaskade::Bridge::KaskadeLinearization< Functional >::ImageElement

Definition at line 62 of file kaskadeBridge.hh.

◆ Implementation

Definition at line 64 of file kaskadeBridge.hh.

◆ Operator

Definition at line 68 of file kaskadeBridge.hh.

◆ OperatorType

template<class Functional >
typedef Dune::LinearOperator<CoefficientVector, CoefficientVector> Kaskade::Bridge::KaskadeLinearization< Functional >::OperatorType

Definition at line 67 of file kaskadeBridge.hh.

◆ Scalar

Definition at line 63 of file kaskadeBridge.hh.

Constructor & Destructor Documentation

◆ KaskadeLinearization() [1/3]

template<class Functional >
Kaskade::Bridge::KaskadeLinearization< Functional >::KaskadeLinearization ( Functional const &  fu_,
DomainElement const &  x_ 
)
inline

Creation of a linearization for a functional fu at x_.

Definition at line 84 of file kaskadeBridge.hh.

◆ KaskadeLinearization() [2/3]

template<class Functional >
Kaskade::Bridge::KaskadeLinearization< Functional >::KaskadeLinearization ( Functional const &  fu_,
DomainElement const &  x_,
std::shared_ptr< Assembler > const &  ass_ 
)
inline

Creation of a linearization for a functional fu at x_.

Definition at line 91 of file kaskadeBridge.hh.

◆ KaskadeLinearization() [3/3]

template<class Functional >
Kaskade::Bridge::KaskadeLinearization< Functional >::KaskadeLinearization ( KaskadeLinearization< Functional > const &  other)
inline

Definition at line 97 of file kaskadeBridge.hh.

◆ ~KaskadeLinearization()

template<class Functional >
virtual Kaskade::Bridge::KaskadeLinearization< Functional >::~KaskadeLinearization ( )
inlinevirtual

Definition at line 102 of file kaskadeBridge.hh.

Member Function Documentation

◆ addDiscreteRHSBlocks()

template<class Functional >
void Kaskade::Bridge::KaskadeLinearization< Functional >::addDiscreteRHSBlocks ( std::vector< Scalar > &  rhs,
int  rbegin,
int  rend 
) const
inlineprotected

◆ cols()

template<class Functional >
int Kaskade::Bridge::KaskadeLinearization< Functional >::cols ( int  cbegin = 0,
int  cend = -1 
) const
inlinevirtual

Number of columns of components [cbegin, cend)

Implements Kaskade::SparseLinearSystem.

Definition at line 105 of file kaskadeBridge.hh.

Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::getDiscreteMatrixBlocks().

◆ d2axpy()

template<class Functional >
void Kaskade::Bridge::KaskadeLinearization< Functional >::d2axpy ( double  a,
AbstractFunctionSpaceElement y,
AbstractFunctionSpaceElement const &  x,
int  rbegin = 0,
int  rend = -1,
int  cbegin = 0,
int  cend = -1 
) const
inlinevirtual

Evaluate hessian times second argument: y = y+a*ddf*x.

Implements Kaskade::AbstractLinearization.

Definition at line 211 of file kaskadeBridge.hh.

Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::ddxpy().

◆ d2taxpy()

template<class Functional >
void Kaskade::Bridge::KaskadeLinearization< Functional >::d2taxpy ( double  a,
AbstractFunctionSpaceElement y,
AbstractFunctionSpaceElement const &  x,
int  rbegin = 0,
int  rend = -1,
int  cbegin = 0,
int  cend = -1 
) const
inlinevirtual

Evaluate hessian times second argument: y = y+a*ddf*x.

Implements Kaskade::AbstractLinearization.

Definition at line 233 of file kaskadeBridge.hh.

Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::ddtxpy().

◆ ddtxpy()

template<class Functional >
void Kaskade::Bridge::KaskadeLinearization< Functional >::ddtxpy ( AbstractFunctionSpaceElement y,
AbstractFunctionSpaceElement const &  x,
int  rbegin = 0,
int  rend = -1,
int  cbegin = 0,
int  cend = -1 
) const
inline

Definition at line 226 of file kaskadeBridge.hh.

◆ ddxpy()

template<class Functional >
void Kaskade::Bridge::KaskadeLinearization< Functional >::ddxpy ( AbstractFunctionSpaceElement y,
AbstractFunctionSpaceElement const &  x,
int  rbegin = 0,
int  rend = -1,
int  cbegin = 0,
int  cend = -1 
) const
inline

Definition at line 204 of file kaskadeBridge.hh.

◆ doAssemble()

template<class Functional >
void Kaskade::Bridge::KaskadeLinearization< Functional >::doAssemble ( int  flags) const
inlineprotected

◆ eval()

template<class Functional >
double Kaskade::Bridge::KaskadeLinearization< Functional >::eval ( ) const
inlinevirtual

return the current value Functional(Origin)

Implements Kaskade::AbstractLinearization.

Definition at line 184 of file kaskadeBridge.hh.

Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::getValue().

◆ evald()

template<class Functional >
void Kaskade::Bridge::KaskadeLinearization< Functional >::evald ( AbstractFunctionSpaceElement g,
int  rbegin,
int  rend 
) const
inlinevirtual

Evaluate derivative.

Implements Kaskade::AbstractLinearization.

Definition at line 195 of file kaskadeBridge.hh.

◆ evalL1norm()

template<class Functional >
double Kaskade::Bridge::KaskadeLinearization< Functional >::evalL1norm ( ) const
inlinevirtual

Evaluate L1 norm of integrand.

Implements Kaskade::AbstractLinearization.

Definition at line 249 of file kaskadeBridge.hh.

◆ flush()

template<class Functional >
void Kaskade::Bridge::KaskadeLinearization< Functional >::flush ( )
inlinevirtual

flush all data, gathered so far

Implements Kaskade::AbstractLinearization.

Definition at line 178 of file kaskadeBridge.hh.

Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::KaskadeLinearization().

◆ getDiscreteMatrixBlocks()

template<class Functional >
void Kaskade::Bridge::KaskadeLinearization< Functional >::getDiscreteMatrixBlocks ( MatrixAsTriplet< Scalar > &  mat,
int  rbegin,
int  rend,
int  cbegin,
int  cend 
) const
inlineprotected

◆ getFunctional()

template<class Functional >
Functional const & Kaskade::Bridge::KaskadeLinearization< Functional >::getFunctional ( ) const
inline

Definition at line 264 of file kaskadeBridge.hh.

◆ getLinImpl()

template<class Functional >
Implementation const & Kaskade::Bridge::KaskadeLinearization< Functional >::getLinImpl ( ) const
inline

return the implementation

Definition at line 175 of file kaskadeBridge.hh.

◆ getMatrix()

virtual void Kaskade::SparseLinearSystem::getMatrix ( MatrixAsTriplet< double > &  mat) const
inlinevirtualinherited

Return the matrix of the linear system in triplet format.

Definition at line 33 of file linearsystem.hh.

Referenced by Kaskade::DirectLinearSolver< Scalar, SparseInt >::solve(), and Kaskade::Bridge::DirectInnerSolver< DirectSolver >::solveAdjAndNormal().

◆ getMatrixBlocks() [1/3]

virtual void Kaskade::SparseLinearSystem::getMatrixBlocks ( MatrixAsTriplet< double > &  mat,
int  rbegin,
int  rend,
int  colbegin,
int  colend 
) const
pure virtualinherited

◆ getMatrixBlocks() [2/3]

virtual void Kaskade::AbstractLinearization::getMatrixBlocks ( MatrixAsTriplet< double > &  mat,
int  rbegin = 0,
int  rend = -1,
int  cbegin = 0,
int  cend = -1 
) const
pure virtualinherited

Access matrix representation if available.

Implemented in Kaskade::LagrangeLinearization.

◆ getMatrixBlocks() [3/3]

template<class Functional >
void Kaskade::Bridge::KaskadeLinearization< Functional >::getMatrixBlocks ( MatrixAsTriplet< Scalar > &  mat,
int  rbegin,
int  rend,
int  cbegin,
int  cend 
) const
inline

write blocks of the hessian matrix into mat

Definition at line 125 of file kaskadeBridge.hh.

Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::d2axpy(), and Kaskade::Bridge::KaskadeLinearization< Functional >::d2taxpy().

◆ getOrigin()

template<class Functional >
AbstractFunctionSpaceElement const & Kaskade::Bridge::KaskadeLinearization< Functional >::getOrigin ( ) const
inlinevirtual

return point of linearization

Implements Kaskade::AbstractLinearization.

Definition at line 158 of file kaskadeBridge.hh.

◆ getRHS()

virtual void Kaskade::SparseLinearSystem::getRHS ( std::vector< double > &  rhs) const
inlinevirtualinherited

Return the right hand side of the linear system.

Definition at line 36 of file linearsystem.hh.

Referenced by Kaskade::DirectLinearSolver< Scalar, SparseInt >::resolve().

◆ getRHSBlocks() [1/2]

virtual void Kaskade::SparseLinearSystem::getRHSBlocks ( std::vector< double > &  rhs,
int  rbegin,
int  rend 
) const
pure virtualinherited

◆ getRHSBlocks() [2/2]

template<class Functional >
void Kaskade::Bridge::KaskadeLinearization< Functional >::getRHSBlocks ( std::vector< Scalar > &  rhs,
int  rbegin,
int  rend 
) const
inline

write components of the gradient into rhs

Definition at line 139 of file kaskadeBridge.hh.

Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::evald().

◆ getValidAssembler()

template<class Functional >
Assembler const & Kaskade::Bridge::KaskadeLinearization< Functional >::getValidAssembler ( ) const
inline

Definition at line 258 of file kaskadeBridge.hh.

◆ getValue()

template<class Functional >
double Kaskade::Bridge::KaskadeLinearization< Functional >::getValue ( ) const
inlinevirtual

value of function

Implements Kaskade::SparseLinearSystem.

Definition at line 193 of file kaskadeBridge.hh.

◆ inDomain()

template<class Functional >
bool Kaskade::Bridge::KaskadeLinearization< Functional >::inDomain ( DomainElement const &  x)
inline

return whether x is in the domain of definition

Definition at line 181 of file kaskadeBridge.hh.

◆ nColBlocks()

template<class Functional >
int Kaskade::Bridge::KaskadeLinearization< Functional >::nColBlocks ( ) const
inlinevirtual

◆ nRowBlocks()

template<class Functional >
int Kaskade::Bridge::KaskadeLinearization< Functional >::nRowBlocks ( ) const
inlinevirtual

◆ precompute()

template<class Functional >
void Kaskade::Bridge::KaskadeLinearization< Functional >::precompute ( )
inlinevirtual

Implements Kaskade::AbstractLinearization.

Definition at line 120 of file kaskadeBridge.hh.

◆ rows()

template<class Functional >
int Kaskade::Bridge::KaskadeLinearization< Functional >::rows ( int  rbegin = 0,
int  rend = -1 
) const
inlinevirtual

◆ setOrigin()

template<class Functional >
void Kaskade::Bridge::KaskadeLinearization< Functional >::setOrigin ( AbstractFunctionSpaceElement const &  x_)
inline

Definition at line 163 of file kaskadeBridge.hh.

◆ size()

virtual int Kaskade::SparseLinearSystem::size ( ) const
inlinevirtualinherited

Return the number of variables of the linear system.

Definition at line 39 of file linearsystem.hh.

Referenced by Kaskade::Bridge::DirectInnerSolver< DirectSolver >::solveAdjAndNormal().

Member Data Documentation

◆ ass

template<class Functional >
std::shared_ptr<Assembler> Kaskade::Bridge::KaskadeLinearization< Functional >::ass
mutableprotected

◆ fu

template<class Functional >
Functional const* Kaskade::Bridge::KaskadeLinearization< Functional >::fu
protected

◆ lin

◆ nThreads

template<class Functional >
const int Kaskade::Bridge::KaskadeLinearization< Functional >::nThreads = 32
static

◆ x

◆ xptr

template<class Functional >
std::unique_ptr<Vector<DomainElement> > Kaskade::Bridge::KaskadeLinearization< Functional >::xptr
protected

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