|
IPPL (Independent Parallel Particle Layer)
IPPL
|
#include <PCG.h>
Public Types | |
| using | OperatorF = std::function<OperatorRet(lhs_type)> |
| using | LowerF = std::function<LowerRet(lhs_type)> |
| using | UpperF = std::function<UpperRet(lhs_type)> |
| using | UpperLowerF = std::function<UpperLowerRet(lhs_type)> |
| using | InverseDiagF = std::function<InverseDiagRet(lhs_type)> |
| typedef FEMVector< T > | lhs_type |
| typedef FEMVector< T > | rhs_type |
| using | DiagF |
Public Member Functions | |
| virtual | ~CG ()=default |
| virtual void | setOperator (OperatorF op) |
| virtual void | setPreconditioner (OperatorF &&op, LowerF &&lower, UpperF &&upper, UpperLowerF &&upper_and_lower, InverseDiagF &&inverse_diagonal, double alpha, double beta, std::string preconditioner_type="", int level=5, int degree=31, int richardson_iterations=1, int inner=5, int outer=1) |
| virtual int | getIterationCount () |
| virtual void | operator() (lhs_type &lhs, rhs_type &rhs, const ParameterList ¶ms) override |
| virtual T | getResidue () const |
| virtual void | operator() (lhs_type &lhs, rhs_type &rhs, const ParameterList ¶ms)=0 |
Protected Attributes | |
| OperatorF | op_m |
| T | residueNorm = 0 |
| int | iterations_m = 0 |
Private Types | |
| using | Base = SolverAlgorithm<FEMVector<T>, FEMVector<T>> |
| typedef Base::lhs_type::value_type | T |
|
private |
|
virtualdefault |
|
inlinevirtual |
Query how many iterations were required to obtain the solution the last time this solver was used
Definition at line 213 of file PCG.h.
References iterations_m.
|
inlinevirtual |
Definition at line 273 of file PCG.h.
References residueNorm.
|
inlineoverridevirtual |
Solve the problem described by Op(lhs) = rhs, where Op is an unspecified differential operator (handled by derived classes)
| lhs | The problem's LHS |
| rhs | The problem's RHS |
| params | A set of parameters for the solver algorithm |
Implements ippl::SolverAlgorithm< FEMVector< T >, FEMVector< T > >.
Definition at line 215 of file PCG.h.
References ippl::FEMVector< T >::deepCopy(), ippl::ParameterList::get(), ippl::innerProduct(), ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::iterations_m, iterations_m, ippl::norm(), ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::op_m, residueNorm, and ippl::FEMVector< T >::setHalo().
|
pure virtual |
Solve the problem described by Op(lhs) = rhs, where Op is an unspecified differential operator (handled by derived classes)
| lhs | The problem's LHS |
| rhs | The problem's RHS |
| params | A set of parameters for the solver algorithm |
|
inlinevirtual |
|
protected |
Definition at line 278 of file PCG.h.
Referenced by getIterationCount(), and operator()().
|
protected |
Definition at line 276 of file PCG.h.
Referenced by setOperator().
|
protected |
Definition at line 277 of file PCG.h.
Referenced by getResidue(), and operator()().