|
| virtual | ~CG ()=default |
| |
| virtual void | setOperator (OperatorF op) |
| |
| virtual void | setPreconditioner (OperatorF &&op, LowerF &&lower, UpperF &&upper, UpperLowerF &&upper_and_lower, InverseDiagF &&inverse_diagonal, DiagF &&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, double omega=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 |
| |
template<typename OperatorRet, typename LowerRet, typename UpperRet, typename UpperLowerRet, typename InverseDiagRet, typename DiagRet, typename FieldLHS, typename FieldRHS = FieldLHS>
class ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >
Definition at line 17 of file PCG.h.
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| using ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::Base = SolverAlgorithm<FieldLHS, FieldRHS> |
|
private |
Definition at line 18 of file PCG.h.
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| using ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::DiagF = std::function<DiagRet(lhs_type)> |
Definition at line 28 of file PCG.h.
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| using ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::InverseDiagF = std::function<InverseDiagRet(lhs_type)> |
Definition at line 27 of file PCG.h.
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| using ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::LowerF = std::function<LowerRet(lhs_type)> |
Definition at line 24 of file PCG.h.
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| using ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::OperatorF = std::function<OperatorRet(lhs_type)> |
Definition at line 23 of file PCG.h.
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| typedef Base::lhs_type::value_type ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::T |
|
private |
Definition at line 19 of file PCG.h.
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| using ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::UpperF = std::function<UpperRet(lhs_type)> |
Definition at line 25 of file PCG.h.
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| using ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::UpperLowerF = std::function<UpperLowerRet(lhs_type)> |
Definition at line 26 of file PCG.h.
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| virtual ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::~CG |
( |
| ) |
|
|
virtualdefault |
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| virtual int ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::getIterationCount |
( |
| ) |
|
|
inlinevirtual |
Query how many iterations were required to obtain the solution the last time this solver was used
- Returns
- Iteration count of last solve
Definition at line 73 of file PCG.h.
References ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::iterations_m.
Referenced by ippl::FEMMaxwellDiffusionSolver< FieldType >::getIterationCount(), ippl::FEMPoissonSolver< FieldLHS, FieldRHS, Order, QuadNumNodes >::getIterationCount(), and ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::getIterationCount().
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| virtual T ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::getResidue |
( |
| ) |
const |
|
inlinevirtual |
Definition at line 151 of file PCG.h.
References ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::residueNorm.
Referenced by ippl::FEMMaxwellDiffusionSolver< FieldType >::getResidue(), ippl::FEMPoissonSolver< FieldLHS, FieldRHS, Order, QuadNumNodes >::getResidue(), and ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::getResidue().
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| virtual void ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::operator() |
( |
lhs_type & |
lhs, |
|
|
rhs_type & |
rhs, |
|
|
const ParameterList & |
params |
|
) |
| |
|
inlineoverridevirtual |
Reimplemented in ippl::PCG< lhs_type, lhs_type, lhs_type, lhs_type, lhs_type, FieldLHS, FieldLHS >.
Definition at line 75 of file PCG.h.
References Physics::alpha, ippl::CONSTANT_FACE, Dim, 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::PERIODIC_FACE, and ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::residueNorm.
Solve the problem described by Op(lhs) = rhs, where Op is an unspecified differential operator (handled by derived classes)
- Parameters
-
| lhs | The problem's LHS |
| rhs | The problem's RHS |
| params | A set of parameters for the solver algorithm |
Implemented in ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldLHS >, ippl::CG< lhs_type, lhs_type, lhs_type, lhs_type, lhs_type, FieldLHS, FieldLHS >, ippl::CG< lhs_type, lhs_type, lhs_type, lhs_type, lhs_type, FieldLHS, FieldLHS, FieldLHS >, and ippl::PCG< lhs_type, lhs_type, lhs_type, lhs_type, lhs_type, FieldLHS, FieldLHS >.
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| virtual void ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::setOperator |
( |
OperatorF |
op | ) |
|
|
inlinevirtual |
Sets the differential operator for the conjugate gradient algorithm
- Parameters
-
| op | A function that returns OpRet and takes a field of the LHS type |
Definition at line 36 of file PCG.h.
References ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::op_m.
Referenced by ippl::FEMMaxwellDiffusionSolver< FieldType >::solve(), ippl::FEMPoissonSolver< FieldLHS, FieldRHS, Order, QuadNumNodes >::solve(), and ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::solve().
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| virtual void ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::setPreconditioner |
( |
OperatorF && |
op, |
|
|
LowerF && |
lower, |
|
|
UpperF && |
upper, |
|
|
UpperLowerF && |
upper_and_lower, |
|
|
InverseDiagF && |
inverse_diagonal, |
|
|
DiagF && |
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, |
|
|
double |
omega = 1 |
|
) |
| |
|
inlinevirtual |
Reimplemented in ippl::PCG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >, and ippl::PCG< lhs_type, lhs_type, lhs_type, lhs_type, lhs_type, FieldLHS, FieldLHS >.
Definition at line 37 of file PCG.h.
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| int ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::iterations_m = 0 |
|
protected |
Definition at line 156 of file PCG.h.
Referenced by ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::getIterationCount(), ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::getIterationCount(), ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::operator()(), and ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::operator()().
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| OperatorF ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::op_m |
|
protected |
Definition at line 154 of file PCG.h.
Referenced by ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::operator()(), ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::operator()(), ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::setOperator(), and ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::setOperator().
template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename DiagRet , typename FieldLHS , typename FieldRHS = FieldLHS>
| T ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::residueNorm = 0 |
|
protected |
Definition at line 155 of file PCG.h.
Referenced by ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::getResidue(), ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::getResidue(), ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::operator()(), and ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::operator()().