OPALX (Object Oriented Parallel Accelerator Library for Exascale) MINIorX
OPALX
ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > > Class Template Reference

#include <PCG.h>

Inheritance diagram for ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >:
Inheritance graph
Collaboration diagram for ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >:
Collaboration graph

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 &params) 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 > >
 

Detailed Description

template<typename OperatorRet, typename LowerRet, typename UpperRet, typename UpperLowerRet, typename InverseDiagRet, typename T>
class ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >

Definition at line 162 of file PCG.h.

Member Typedef Documentation

◆ Base

template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename T >
using ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::Base = SolverAlgorithm<FEMVector<T>, FEMVector<T> >
private

Definition at line 164 of file PCG.h.

◆ InverseDiagF

template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename T >
using ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::InverseDiagF = std::function<InverseDiagRet(lhs_type)>

Definition at line 172 of file PCG.h.

◆ lhs_type

using ippl::SolverAlgorithm< FEMVector< T > , FEMVector< T > >::lhs_type = FEMVector< T >
inherited

Definition at line 18 of file SolverAlgorithm.h.

◆ LowerF

template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename T >
using ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::LowerF = std::function<LowerRet(lhs_type)>

Definition at line 169 of file PCG.h.

◆ OperatorF

template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename T >
using ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::OperatorF = std::function<OperatorRet(lhs_type)>

Definition at line 168 of file PCG.h.

◆ rhs_type

using ippl::SolverAlgorithm< FEMVector< T > , FEMVector< T > >::rhs_type = FEMVector< T >
inherited

Definition at line 19 of file SolverAlgorithm.h.

◆ UpperF

template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename T >
using ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::UpperF = std::function<UpperRet(lhs_type)>

Definition at line 170 of file PCG.h.

◆ UpperLowerF

template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename T >
using ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::UpperLowerF = std::function<UpperLowerRet(lhs_type)>

Definition at line 171 of file PCG.h.

Constructor & Destructor Documentation

◆ ~CG()

template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename T >
virtual ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::~CG ( )
virtualdefault

Member Function Documentation

◆ getIterationCount()

template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename T >
virtual int ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::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 213 of file PCG.h.

References ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::iterations_m.

◆ getResidue()

template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename T >
virtual T ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::getResidue ( ) const
inlinevirtual

◆ operator()()

template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename T >
virtual void ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::operator() ( lhs_type lhs,
rhs_type rhs,
const ParameterList params 
)
inlineoverridevirtual

◆ setOperator()

template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename T >
virtual void ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::setOperator ( OperatorF  op)
inlinevirtual

Sets the differential operator for the conjugate gradient algorithm

Parameters
opA function that returns OpRet and takes a field of the LHS type

Definition at line 180 of file PCG.h.

References ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::op_m.

◆ setPreconditioner()

template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename T >
virtual void ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::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 
)
inlinevirtual

Definition at line 181 of file PCG.h.

Member Data Documentation

◆ iterations_m

template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename T >
int ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::iterations_m = 0
protected

Definition at line 278 of file PCG.h.

◆ op_m

template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename T >
OperatorF ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::op_m
protected

Definition at line 276 of file PCG.h.

◆ residueNorm

template<typename OperatorRet , typename LowerRet , typename UpperRet , typename UpperLowerRet , typename InverseDiagRet , typename T >
T ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::residueNorm = 0
protected

Definition at line 277 of file PCG.h.


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