|
OPALX (Object Oriented Parallel Accelerator Library for Exascale) MINIorX
OPALX
|
#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)> |
| using | lhs_type = FEMVector< T > |
| using | rhs_type = FEMVector< T > |
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 |
Protected Attributes | |
| OperatorF | op_m |
| T | residueNorm = 0 |
| int | iterations_m = 0 |
Private Types | |
| using | Base = SolverAlgorithm< FEMVector< T >, FEMVector< T > > |
|
private |
| using ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::InverseDiagF = std::function<InverseDiagRet(lhs_type)> |
Definition at line 18 of file SolverAlgorithm.h.
Definition at line 19 of file SolverAlgorithm.h.
| using ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::UpperLowerF = std::function<UpperLowerRet(lhs_type)> |
|
virtualdefault |
|
inlinevirtual |
|
inlinevirtual |
|
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 Physics::alpha, ippl::FEMVector< T >::deepCopy(), ippl::ParameterList::get(), ippl::innerProduct(), ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::iterations_m, ippl::norm(), ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::op_m, ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::residueNorm, and ippl::FEMVector< T >::setHalo().

|
inlinevirtual |
|
inlinevirtual |