PRISMS-PF Manual
Loading...
Searching...
No Matches
CGSolver< number > Class Template Reference

This class exists as a hack to get access to the residual vector for the custom convergence criterion because dealii doesn't provide it for some reason. The function print_vectors gets called before the convergence check in the same scope and is overridable. Be careful, because the pointers are only valid during the linear solve, so they shouldn't be called outside of that context. More...

#include <linear_helper.h>

Inheritance diagram for CGSolver< number >:
[legend]
Collaboration diagram for CGSolver< number >:
[legend]

Public Types

using AddData = dealii::SolverCG< BlockVector< number > >::AdditionalData
 
using BaseClass = dealii::SolverCG< BlockVector< number > >
 

Public Member Functions

 CGSolver (dealii::SolverControl &cn, dealii::VectorMemory< BlockVector< number > > &mem, const AddData &data=AddData())
 Constructor.
 
 CGSolver (dealii::SolverControl &cn, const AddData &data=AddData())
 Constructor. Use an object of type GrowingVectorMemory as a default to allocate memory.
 
template<typename MatrixType , typename PreconditionerType >
void solve_better (const MatrixType &A, BlockVector< number > &x, const BlockVector< number > &b, const PreconditionerType &preconditioner)
 Solve method we are replacing in prisms-pf because we need access to the residual.
 

Detailed Description

template<typename number>
class CGSolver< number >

This class exists as a hack to get access to the residual vector for the custom convergence criterion because dealii doesn't provide it for some reason. The function print_vectors gets called before the convergence check in the same scope and is overridable. Be careful, because the pointers are only valid during the linear solve, so they shouldn't be called outside of that context.

Member Typedef Documentation

◆ AddData

template<typename number >
using CGSolver< number >::AddData = dealii::SolverCG<BlockVector<number> >::AdditionalData

◆ BaseClass

template<typename number >
using CGSolver< number >::BaseClass = dealii::SolverCG<BlockVector<number> >

Constructor & Destructor Documentation

◆ CGSolver() [1/2]

template<typename number >
CGSolver< number >::CGSolver ( dealii::SolverControl &  cn,
dealii::VectorMemory< BlockVector< number > > &  mem,
const AddData data = AddData() 
)
inline

Constructor.

◆ CGSolver() [2/2]

template<typename number >
CGSolver< number >::CGSolver ( dealii::SolverControl &  cn,
const AddData data = AddData() 
)
inlineexplicit

Constructor. Use an object of type GrowingVectorMemory as a default to allocate memory.

Member Function Documentation

◆ solve_better()

template<typename number >
void CGSolver< number >::solve_better ( const MatrixType A,
BlockVector< number > &  x,
const BlockVector< number > &  b,
const PreconditionerType preconditioner 
)
inline

Solve method we are replacing in prisms-pf because we need access to the residual.


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