QUDA  0.9.0
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
quda::Solver Class Referenceabstract

#include <invert_quda.h>

Inheritance diagram for quda::Solver:
Inheritance graph
[legend]
Collaboration diagram for quda::Solver:
Collaboration graph
[legend]

Public Member Functions

 Solver (SolverParam &param, TimeProfile &profile)
 
virtual ~Solver ()
 
virtual void operator() (ColorSpinorField &out, ColorSpinorField &in)=0
 
virtual void solve (ColorSpinorField &out, ColorSpinorField &in)
 
bool convergence (const double &r2, const double &hq2, const double &r2_tol, const double &hq_tol)
 
bool convergenceHQ (const double &r2, const double &hq2, const double &r2_tol, const double &hq_tol)
 
bool convergenceL2 (const double &r2, const double &hq2, const double &r2_tol, const double &hq_tol)
 
void PrintStats (const char *, int k, const double &r2, const double &b2, const double &hq2)
 
void PrintSummary (const char *name, int k, const double &r2, const double &b2)
 
virtual double flops () const
 

Static Public Member Functions

static Solvercreate (SolverParam &param, DiracMatrix &mat, DiracMatrix &matSloppy, DiracMatrix &matPrecon, TimeProfile &profile)
 
static double stopping (const double &tol, const double &b2, QudaResidualType residual_type)
 

Protected Attributes

SolverParamparam
 
TimeProfileprofile
 

Detailed Description

Definition at line 325 of file invert_quda.h.

Constructor & Destructor Documentation

◆ Solver()

quda::Solver::Solver ( SolverParam param,
TimeProfile profile 
)
inline

Definition at line 332 of file invert_quda.h.

◆ ~Solver()

virtual quda::Solver::~Solver ( )
inlinevirtual

Definition at line 333 of file invert_quda.h.

Member Function Documentation

◆ convergence()

bool quda::Solver::convergence ( const double r2,
const double hq2,
const double r2_tol,
const double hq_tol 
)

Test for solver convergence

Parameters
r2L2 norm squared of the residual
hq2Heavy quark residual
r2_tolSolver L2 tolerance
hq_tolSolver heavy-quark tolerance

Definition at line 139 of file solver.cpp.

References param, QUDA_HEAVY_QUARK_RESIDUAL, QUDA_L2_ABSOLUTE_RESIDUAL, QUDA_L2_RELATIVE_RESIDUAL, and quda::SolverParam::residual_type.

Referenced by quda::IncEigCG::eigCGsolve(), quda::CG::operator()(), quda::MPCG::operator()(), quda::PreconCG::operator()(), quda::BiCGstab::operator()(), quda::SimpleBiCGstab::operator()(), quda::MPBiCGstab::operator()(), quda::BiCGstabL::operator()(), quda::GCR::operator()(), quda::GMResDR::operator()(), and quda::CG::solve().

Here is the caller graph for this function:

◆ convergenceHQ()

bool quda::Solver::convergenceHQ ( const double r2,
const double hq2,
const double r2_tol,
const double hq_tol 
)

Test for HQ solver convergence – ignore L2 residual

Parameters
r2L2 norm squared of the residual
hq2Heavy quark residual
r2_tolSolver L2 tolerance
hq_tolSolver heavy-quark tolerance

Definition at line 156 of file solver.cpp.

References param, QUDA_HEAVY_QUARK_RESIDUAL, and quda::SolverParam::residual_type.

Referenced by quda::CG::operator()().

Here is the caller graph for this function:

◆ convergenceL2()

bool quda::Solver::convergenceL2 ( const double r2,
const double hq2,
const double r2_tol,
const double hq_tol 
)

Test for L2 solver convergence – ignore HQ residual

Parameters
r2L2 norm squared of the residual
hq2Heavy quark residual
r2_tolSolver L2 tolerance
hq_tolSolver heavy-quark tolerance

Definition at line 167 of file solver.cpp.

References param, QUDA_L2_ABSOLUTE_RESIDUAL, QUDA_L2_RELATIVE_RESIDUAL, and quda::SolverParam::residual_type.

Referenced by quda::CG::operator()().

Here is the caller graph for this function:

◆ create()

Solver * quda::Solver::create ( SolverParam param,
DiracMatrix mat,
DiracMatrix matSloppy,
DiracMatrix matPrecon,
TimeProfile profile 
)
static

◆ flops()

virtual double quda::Solver::flops ( ) const
inlinevirtual

Return flops

Returns
flops expended by this operator

Reimplemented in quda::MG.

Definition at line 399 of file invert_quda.h.

Referenced by quda::GCR::operator()().

Here is the caller graph for this function:

◆ operator()()

virtual void quda::Solver::operator() ( ColorSpinorField out,
ColorSpinorField in 
)
pure virtual

◆ PrintStats()

void quda::Solver::PrintStats ( const char *  name,
int  k,
const double r2,
const double b2,
const double hq2 
)

◆ PrintSummary()

void quda::Solver::PrintSummary ( const char *  name,
int  k,
const double r2,
const double b2 
)

◆ solve()

void quda::Solver::solve ( ColorSpinorField out,
ColorSpinorField in 
)
virtual

◆ stopping()

double quda::Solver::stopping ( const double tol,
const double b2,
QudaResidualType  residual_type 
)
static

Member Data Documentation

◆ param

SolverParam& quda::Solver::param
protected

◆ profile

TimeProfile& quda::Solver::profile
protected

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