KASKADE 7 development version
|
Bridge::Linearization class that uses a VariationalFunctionalAssembler to create linear systems. More...
#include <kaskadeBridge.hh>
Bridge::Linearization class that uses a VariationalFunctionalAssembler to create linear systems.
Implements AbstractLinearization
Definition at line 55 of file kaskadeBridge.hh.
Public Types | |
typedef Functional::AnsatzVars::VariableSet | DomainElement |
typedef Functional::TestVars::VariableSet | ImageElement |
typedef Functional::Scalar | Scalar |
typedef LinearizationAt< Functional > | Implementation |
typedef VariationalFunctionalAssembler< Implementation > | Assembler |
typedef DomainElement::Descriptions::template CoefficientVectorRepresentation ::type | CoefficientVector |
typedef Dune::LinearOperator< CoefficientVector, CoefficientVector > | OperatorType |
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< Assembler > | ass |
std::unique_ptr< Vector< DomainElement > > | xptr |
typedef VariationalFunctionalAssembler<Implementation> Kaskade::Bridge::KaskadeLinearization< Functional >::Assembler |
Definition at line 65 of file kaskadeBridge.hh.
typedef DomainElement::Descriptions::template CoefficientVectorRepresentation ::type Kaskade::Bridge::KaskadeLinearization< Functional >::CoefficientVector |
Definition at line 66 of file kaskadeBridge.hh.
typedef Functional::AnsatzVars::VariableSet Kaskade::Bridge::KaskadeLinearization< Functional >::DomainElement |
Definition at line 61 of file kaskadeBridge.hh.
typedef Functional::TestVars::VariableSet Kaskade::Bridge::KaskadeLinearization< Functional >::ImageElement |
Definition at line 62 of file kaskadeBridge.hh.
typedef LinearizationAt<Functional> Kaskade::Bridge::KaskadeLinearization< Functional >::Implementation |
Definition at line 64 of file kaskadeBridge.hh.
typedef OperatorType Kaskade::Bridge::KaskadeLinearization< Functional >::Operator |
Definition at line 68 of file kaskadeBridge.hh.
typedef Dune::LinearOperator<CoefficientVector, CoefficientVector> Kaskade::Bridge::KaskadeLinearization< Functional >::OperatorType |
Definition at line 67 of file kaskadeBridge.hh.
typedef Functional::Scalar Kaskade::Bridge::KaskadeLinearization< Functional >::Scalar |
Definition at line 63 of file kaskadeBridge.hh.
|
inline |
Creation of a linearization for a functional fu at x_.
Definition at line 84 of file kaskadeBridge.hh.
|
inline |
Creation of a linearization for a functional fu at x_.
Definition at line 91 of file kaskadeBridge.hh.
|
inline |
Definition at line 97 of file kaskadeBridge.hh.
|
inlinevirtual |
Definition at line 102 of file kaskadeBridge.hh.
|
inlineprotected |
Definition at line 270 of file kaskadeBridge.hh.
Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::getRHSBlocks().
|
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().
|
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().
|
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().
|
inline |
Definition at line 226 of file kaskadeBridge.hh.
|
inline |
Definition at line 204 of file kaskadeBridge.hh.
|
inlineprotected |
Definition at line 297 of file kaskadeBridge.hh.
Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::eval(), Kaskade::Bridge::KaskadeLinearization< Functional >::evalL1norm(), Kaskade::Bridge::KaskadeLinearization< Functional >::getMatrixBlocks(), Kaskade::Bridge::KaskadeLinearization< Functional >::getRHSBlocks(), Kaskade::Bridge::KaskadeLinearization< Functional >::getValidAssembler(), and Kaskade::Bridge::KaskadeLinearization< Functional >::precompute().
|
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().
|
inlinevirtual |
Evaluate derivative.
Implements Kaskade::AbstractLinearization.
Definition at line 195 of file kaskadeBridge.hh.
|
inlinevirtual |
Evaluate L1 norm of integrand.
Implements Kaskade::AbstractLinearization.
Definition at line 249 of file kaskadeBridge.hh.
|
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().
|
inlineprotected |
Definition at line 285 of file kaskadeBridge.hh.
Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::getMatrixBlocks().
|
inline |
Definition at line 264 of file kaskadeBridge.hh.
|
inline |
return the implementation
Definition at line 175 of file kaskadeBridge.hh.
|
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().
|
pure virtualinherited |
Return matrix blocks of the linear system in triplet format.
Implemented in Kaskade::SimpleSparseLinearSystem.
Referenced by Kaskade::SparseLinearSystem::getMatrix(), Kaskade::EnergyScalarProduct< X >::setOrigin(), and Kaskade::Bridge::DirectInnerSolver< DirectSolver >::solveAdjAndNormal().
|
pure virtualinherited |
Access matrix representation if available.
Implemented in Kaskade::LagrangeLinearization.
|
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().
|
inlinevirtual |
return point of linearization
Implements Kaskade::AbstractLinearization.
Definition at line 158 of file kaskadeBridge.hh.
|
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().
|
pure virtualinherited |
Return components of the right hand side of the linear system.
Implemented in Kaskade::SimpleSparseLinearSystem.
Referenced by Kaskade::DirectBlockSchurSolver< Factorization, VariableSet >::computeCorrectionAndAdjointCorrection(), Kaskade::DirectBlockSchurSolver< Factorization, VariableSet >::computeSimplifiedCorrection(), Kaskade::SparseLinearSystem::getRHS(), Kaskade::Bridge::DirectInnerSolver< DirectSolver >::resolveNormal(), and Kaskade::Bridge::DirectInnerSolver< DirectSolver >::solveAdjAndNormal().
|
inline |
write components of the gradient into rhs
Definition at line 139 of file kaskadeBridge.hh.
Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::evald().
|
inline |
Definition at line 258 of file kaskadeBridge.hh.
|
inlinevirtual |
value of function
Implements Kaskade::SparseLinearSystem.
Definition at line 193 of file kaskadeBridge.hh.
|
inline |
return whether x is in the domain of definition
Definition at line 181 of file kaskadeBridge.hh.
|
inlinevirtual |
return number of columns
Implements Kaskade::SparseLinearSystem.
Definition at line 152 of file kaskadeBridge.hh.
Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::cols(), Kaskade::Bridge::KaskadeLinearization< Functional >::d2axpy(), Kaskade::Bridge::KaskadeLinearization< Functional >::d2taxpy(), Kaskade::Bridge::KaskadeLinearization< Functional >::ddtxpy(), and Kaskade::Bridge::KaskadeLinearization< Functional >::ddxpy().
|
inlinevirtual |
return number of rows
Implements Kaskade::SparseLinearSystem.
Definition at line 155 of file kaskadeBridge.hh.
Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::d2axpy(), Kaskade::Bridge::KaskadeLinearization< Functional >::d2taxpy(), Kaskade::Bridge::KaskadeLinearization< Functional >::ddtxpy(), Kaskade::Bridge::KaskadeLinearization< Functional >::ddxpy(), Kaskade::Bridge::KaskadeLinearization< Functional >::evald(), and Kaskade::Bridge::KaskadeLinearization< Functional >::rows().
|
inlinevirtual |
Implements Kaskade::AbstractLinearization.
Definition at line 120 of file kaskadeBridge.hh.
|
inlinevirtual |
Number of rows of components [rbegin, rend)
Implements Kaskade::SparseLinearSystem.
Definition at line 113 of file kaskadeBridge.hh.
Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::addDiscreteRHSBlocks(), Kaskade::Bridge::KaskadeLinearization< Functional >::evald(), Kaskade::Bridge::KaskadeLinearization< Functional >::getDiscreteMatrixBlocks(), and Kaskade::Bridge::KaskadeLinearization< Functional >::getRHSBlocks().
|
inline |
Definition at line 163 of file kaskadeBridge.hh.
|
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().
|
mutableprotected |
Definition at line 307 of file kaskadeBridge.hh.
Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::doAssemble(), Kaskade::Bridge::KaskadeLinearization< Functional >::flush(), Kaskade::Bridge::KaskadeLinearization< Functional >::getMatrixBlocks(), Kaskade::Bridge::KaskadeLinearization< Functional >::getRHSBlocks(), Kaskade::Bridge::KaskadeLinearization< Functional >::getValidAssembler(), and Kaskade::Bridge::KaskadeLinearization< Functional >::setOrigin().
|
protected |
|
protected |
Definition at line 306 of file kaskadeBridge.hh.
Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::doAssemble(), and Kaskade::Bridge::KaskadeLinearization< Functional >::getLinImpl().
|
static |
Definition at line 59 of file kaskadeBridge.hh.
Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::doAssemble().
|
protected |
Definition at line 304 of file kaskadeBridge.hh.
Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::addDiscreteRHSBlocks(), Kaskade::Bridge::KaskadeLinearization< Functional >::cols(), Kaskade::Bridge::KaskadeLinearization< Functional >::d2axpy(), Kaskade::Bridge::KaskadeLinearization< Functional >::d2taxpy(), Kaskade::Bridge::KaskadeLinearization< Functional >::ddtxpy(), Kaskade::Bridge::KaskadeLinearization< Functional >::ddxpy(), Kaskade::Bridge::KaskadeLinearization< Functional >::getDiscreteMatrixBlocks(), Kaskade::Bridge::KaskadeLinearization< Functional >::inDomain(), Kaskade::Bridge::KaskadeLinearization< Functional >::rows(), and Kaskade::Bridge::KaskadeLinearization< Functional >::setOrigin().
|
protected |
Definition at line 308 of file kaskadeBridge.hh.
Referenced by Kaskade::Bridge::KaskadeLinearization< Functional >::getOrigin(), and Kaskade::Bridge::KaskadeLinearization< Functional >::setOrigin().