So-Bogus
A c++ sparse block matrix library aimed at Second Order cone problems
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
bogus::ConstrainedSolverBase< Derived, BlockMatrixType > Class Template Reference
Inheritance diagram for bogus::ConstrainedSolverBase< Derived, BlockMatrixType >:
bogus::BlockSolverBase< BlockMatrixType >

Public Types

typedef Base::GlobalProblemTraits GlobalProblemTraits
 
typedef GlobalProblemTraits::Scalar Scalar
 
typedef BlockMatrixTraits
< BlockMatrixType >::Index 
Index
 
typedef LocalProblemTraits
< Base::BlockTraits::RowsPerBlock,
Scalar > 
BlockProblemTraits
 
typedef BlockMatrixTraits
< BlockMatrixType > 
BlockTraits
 
typedef Signal< unsigned, Scalar > CallBackType
 

Public Member Functions

void useInfinityNorm (bool useInfNorm)
 Sets whether the solver will use the infinity norm instead of the l1 one to compute the global residual from the local ones.
 
bool usesInfinityNorm () const
 
template<typename NSLaw , typename RhsT , typename ResT >
Scalar eval (const NSLaw &law, const ResT &y, const RhsT &x) const
 Eval the current global residual as a function of the local ones. More...
 
template<typename NSLaw , typename VectorT >
void projectOnConstraints (const NSLaw &projector, VectorT &x) const
 Projects the variable x on the constraints defined by projector.
 
template<typename NSLaw , typename RhsT , typename ResT >
void dualityCOV (const NSLaw &law, const RhsT &b, ResT &x) const
 Compute associated change of variable (see NSLaw)
 
template<typename NSLaw , typename RhsT , typename ResT >
Scalar solve (const NSLaw &law, const RhsT &b, ResT &x) const
 
Derived & setMatrix (const BlockObjectBase< BlockMatrixType > &matrix)
 Sets the system matrix and initializes internal structures. More...
 
void setMaxIters (unsigned maxIters)
 For iterative solvers: sets the maximum number of iterations.
 
unsigned maxIters () const
 
void setTol (Scalar tol)
 For iterative solvers: sets the solver tolerance.
 
Scalar tol () const
 
CallBackTypecallback ()
 Callback hook; will be triggered every N iterations, depending on the solver. More...
 
const CallBackTypecallback () const
 
const BlockObjectBase
< BlockMatrixType > & 
matrix () const
 

Protected Member Functions

void updateScalings ()
 

Protected Attributes

GlobalProblemTraits::DynVector m_scaling
 
bool m_useInfinityNorm
 See useInfinityNorm(). Defaults to false.
 
const BlockObjectBase
< BlockMatrixType > * 
m_matrix
 Pointer to the matrix of the system.
 
unsigned m_maxIters
 See setMaxIters()
 
Scalar m_tol
 See setTol()
 
CallBackType m_callback
 

Member Function Documentation

template<typename BlockMatrixType >
CallBackType& bogus::BlockSolverBase< BlockMatrixType >::callback ( )
inherited

Callback hook; will be triggered every N iterations, depending on the solver.

Useful to monitor the convergence of the solver. Can be connected to a function that takes an unsigned and a Scalar as parameters. The first argument will be the current iteration number, and the second the current residual.

See Also
Signal< unsigned, Scalar >
template<typename Derived, typename BlockMatrixType>
template<typename NSLaw , typename RhsT , typename ResT >
Scalar bogus::ConstrainedSolverBase< Derived, BlockMatrixType >::eval ( const NSLaw &  law,
const ResT &  y,
const RhsT &  x 
) const

Eval the current global residual as a function of the local ones.

y should be such that y = m_matrix * x + rhs

Returns
the current residual err defined as follow :
template<typename Derived, typename BlockMatrixType>
Derived& bogus::ConstrainedSolverBase< Derived, BlockMatrixType >::setMatrix ( const BlockObjectBase< BlockMatrixType > &  matrix)

Sets the system matrix and initializes internal structures.

Note
Derived classes should re-implement this function and call updateScalings()

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