|
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().