QUDA
1.0.0
|
#include <multigrid.h>
Public Member Functions | |
MGParam (QudaMultigridParam ¶m, std::vector< ColorSpinorField *> &B, DiracMatrix *matResidual, DiracMatrix *matSmooth, DiracMatrix *matSmoothSloppy, int level=0) | |
MGParam (const MGParam ¶m, std::vector< ColorSpinorField *> &B, std::vector< Complex > evals, DiracMatrix *matResidual, DiracMatrix *matSmooth, DiracMatrix *matSmoothSloppy, int level=0) | |
![]() | |
SolverParam () | |
SolverParam (const QudaInvertParam ¶m) | |
SolverParam (const SolverParam ¶m) | |
~SolverParam () | |
void | updateInvertParam (QudaInvertParam ¶m, int offset=-1) |
void | updateRhsIndex (QudaInvertParam ¶m) |
This struct contains all the metadata required to define the multigrid solver. For each level of multigrid we will have an instance of MGParam describing all the meta data appropriate for given level.
Definition at line 26 of file multigrid.h.
|
inline |
This is top level instantiation done when we start creating the multigrid operator.
Definition at line 108 of file multigrid.h.
References QudaMultigridParam_s::geo_block_size, quda::SolverParam::omega, QudaMultigridParam_s::omega, and QUDA_MAX_DIM.
|
inline |
Definition at line 139 of file multigrid.h.
References QudaMultigridParam_s::geo_block_size, mg_global, quda::SolverParam::omega, QudaMultigridParam_s::omega, and QUDA_MAX_DIM.
std::vector<ColorSpinorField*>& quda::MGParam::B |
The null space vectors
Definition at line 57 of file multigrid.h.
Referenced by quda::MG::dumpNullVectors(), quda::MG::generateEigenVectors(), quda::MG::generateNullVectors(), quda::MG::MG(), quda::MG::reset(), and quda::MG::verify().
MG* quda::MGParam::coarse |
This is the next lower level
Definition at line 51 of file multigrid.h.
QudaSolutionType quda::MGParam::coarse_grid_solution_type |
The type of residual to send to the next coarse grid, and thus the type of solution to receive back from this coarse grid
Definition at line 91 of file multigrid.h.
Referenced by quda::MG::createCoarseDirac(), quda::MG::MG(), quda::MG::operator()(), and quda::MG::verify().
QudaMultigridCycleType quda::MGParam::cycle_type |
Multigrid cycle type
Definition at line 72 of file multigrid.h.
Referenced by quda::MG::createCoarseSolver(), quda::MG::destroyCoarseSolver(), and quda::MG::~MG().
std::vector<Complex> quda::MGParam::evals |
The eigenvalue array
Definition at line 60 of file multigrid.h.
Referenced by quda::MG::MG(), and quda::MG::reset().
char quda::MGParam::filename[100] |
Filename for where to load/store the null space
Definition at line 103 of file multigrid.h.
MG* quda::MGParam::fine |
This is the immediate finer level
Definition at line 54 of file multigrid.h.
Referenced by quda::MG::reset().
int quda::MGParam::geoBlockSize[QUDA_MAX_DIM] |
Geometric block size
Definition at line 39 of file multigrid.h.
Referenced by quda::MG::reset(), and quda::MG::verify().
QudaBoolean quda::MGParam::global_reduction |
Whether to use global or local (node) reductions
Definition at line 75 of file multigrid.h.
Referenced by quda::MG::createSmoother().
int quda::MGParam::level |
What is the level of this instance
Definition at line 33 of file multigrid.h.
Referenced by quda::MG::buildFreeVectors(), quda::MG::createCoarseDirac(), quda::MG::createCoarseSolver(), quda::MG::createSmoother(), quda::MG::destroyCoarseSolver(), quda::MG::destroySmoother(), quda::MG::dumpNullVectors(), quda::MG::flops(), quda::MG::generateEigenVectors(), quda::MG::generateNullVectors(), quda::MG::loadVectors(), quda::MG::MG(), quda::MG::operator()(), quda::MG::reset(), quda::MG::saveVectors(), quda::MG::verify(), and quda::MG::~MG().
QudaFieldLocation quda::MGParam::location |
Where to compute this level of multigrid
Definition at line 97 of file multigrid.h.
Referenced by quda::MG::MG(), and quda::MG::verify().
DiracMatrix* quda::MGParam::matResidual |
The Dirac operator to use for residual computation
Definition at line 78 of file multigrid.h.
Referenced by quda::MG::operator()(), quda::MG::reset(), and quda::MG::verify().
DiracMatrix* quda::MGParam::matSmooth |
The Dirac operator to use for smoothing
Definition at line 81 of file multigrid.h.
Referenced by quda::MG::createCoarseDirac(), quda::MG::createSmoother(), quda::MG::generateNullVectors(), and quda::MG::reset().
DiracMatrix* quda::MGParam::matSmoothSloppy |
The sloppy Dirac operator to use for smoothing
Definition at line 84 of file multigrid.h.
Referenced by quda::MG::createSmoother(), quda::MG::generateNullVectors(), and quda::MG::reset().
QudaMultigridParam& quda::MGParam::mg_global |
This points to the parameter struct that is passed into QUDA. We use this to set per-level parameters
Definition at line 30 of file multigrid.h.
Referenced by quda::MG::buildFreeVectors(), quda::MG::createCoarseDirac(), quda::MG::createCoarseSolver(), quda::MG::createSmoother(), quda::MG::generateEigenVectors(), quda::MG::generateNullVectors(), quda::MG::loadVectors(), quda::MG::MG(), MGParam(), quda::MG::operator()(), quda::MG::pushLevel(), quda::MG::reset(), quda::MG::saveVectors(), quda::MG::verify(), and quda::MG::~MG().
int quda::MGParam::NblockOrtho |
Number of times to apply Gram-Schmidt within a block
Definition at line 48 of file multigrid.h.
Referenced by quda::MG::reset().
int quda::MGParam::Nlevel |
Number of levels in the solver
Definition at line 36 of file multigrid.h.
Referenced by quda::MG::createCoarseSolver(), quda::MG::createSmoother(), quda::MG::destroyCoarseSolver(), quda::MG::dumpNullVectors(), quda::MG::flops(), quda::MG::generateNullVectors(), quda::MG::MG(), quda::MG::operator()(), quda::MG::reset(), quda::MG::verify(), and quda::MG::~MG().
int quda::MGParam::nu_post |
Number of pre-smoothing applications to perform
Definition at line 66 of file multigrid.h.
Referenced by quda::MG::createSmoother().
int quda::MGParam::nu_pre |
Number of pre-smoothing applications to perform
Definition at line 63 of file multigrid.h.
Referenced by quda::MG::createSmoother().
int quda::MGParam::Nvec |
Number of vectors used to define coarse space
Definition at line 45 of file multigrid.h.
Referenced by quda::MG::createCoarseDirac(), quda::MG::generateNullVectors(), quda::MG::reset(), quda::MG::verify(), and quda::MG::~MG().
QudaFieldLocation quda::MGParam::setup_location |
Where to compute this level of the multigrid setup
Definition at line 100 of file multigrid.h.
Referenced by quda::MG::createCoarseDirac().
QudaInverterType quda::MGParam::smoother |
What type of smoother to use
Definition at line 87 of file multigrid.h.
Referenced by quda::MG::createSmoother().
QudaSolveType quda::MGParam::smoother_solve_type |
The type of smoother solve to do on each grid (e/o preconditioning or not)
Definition at line 94 of file multigrid.h.
Referenced by quda::MG::createCoarseDirac(), quda::MG::MG(), quda::MG::operator()(), quda::MG::verify(), and quda::MG::~MG().
double quda::MGParam::smoother_tol |
Tolerance to use for the solver / smoother (if applicable)
Definition at line 69 of file multigrid.h.
Referenced by quda::MG::createSmoother().
int quda::MGParam::spinBlockSize |
Spin block size
Definition at line 42 of file multigrid.h.
Referenced by quda::MG::reset(), and quda::MG::verify().