CHROMA
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members

Solve a M*psi=chi linear system using the external QDP multigrid inverter. More...

#include <syssolver_linop_qop_mg_w.h>

Inheritance diagram for Chroma::LinOpSysSolverQOPMG:
Chroma::LinOpSystemSolver< LatticeFermion > Chroma::SystemSolver< LatticeFermion >

Public Types

typedef LatticeFermion T
 
typedef LatticeColorMatrix U
 
typedef multi1d< LatticeColorMatrix > Q
 
typedef void WilsonMGSubspace
 

Public Member Functions

 LinOpSysSolverQOPMG (Handle< LinearOperator< T > > A_, Handle< FermState< T, Q, Q > > state_, const SysSolverQOPMGParams &invParam_)
 Constructor. More...
 
 ~LinOpSysSolverQOPMG ()
 Destructor finalizes the QDP environment. More...
 
const Subset & subset () const
 Return the subset on which the operator acts. More...
 
SystemSolverResults_t operator() (T &psi, const T &chi) const
 Solver the linear system. More...
 
void eraseSubspace ()
 Erasee the subspace. More...
 
WilsonMGSubspacegetSubspace () const
 Get the subspace to use. More...
 
- Public Member Functions inherited from Chroma::SystemSolver< LatticeFermion >
virtual ~SystemSolver ()
 Virtual destructor to help with cleanup;. More...
 

Private Member Functions

 LinOpSysSolverQOPMG ()
 

Private Attributes

Handle< FermState< T, Q, Q > > state
 
Handle< LinearOperator< T > > A
 
SysSolverQOPMGParams invParam
 
WilsonMGSubspacesubspace
 

Detailed Description

Solve a M*psi=chi linear system using the external QDP multigrid inverter.

Definition at line 31 of file syssolver_linop_qop_mg_w.h.

Member Typedef Documentation

◆ Q

typedef multi1d<LatticeColorMatrix> Chroma::LinOpSysSolverQOPMG::Q

Definition at line 36 of file syssolver_linop_qop_mg_w.h.

◆ T

typedef LatticeFermion Chroma::LinOpSysSolverQOPMG::T

Definition at line 34 of file syssolver_linop_qop_mg_w.h.

◆ U

typedef LatticeColorMatrix Chroma::LinOpSysSolverQOPMG::U

Definition at line 35 of file syssolver_linop_qop_mg_w.h.

◆ WilsonMGSubspace

Definition at line 39 of file syssolver_linop_qop_mg_w.h.

Constructor & Destructor Documentation

◆ LinOpSysSolverQOPMG() [1/2]

Chroma::LinOpSysSolverQOPMG::LinOpSysSolverQOPMG ( Handle< LinearOperator< T > >  A_,
Handle< FermState< T, Q, Q > >  state_,
const SysSolverQOPMGParams invParam_ 
)

Constructor.

Parameters
A_Linear operator ( Read )
state_The ferm State (Read)
invParaminverter parameters ( Read )

◆ ~LinOpSysSolverQOPMG()

Chroma::LinOpSysSolverQOPMG::~LinOpSysSolverQOPMG ( )

Destructor finalizes the QDP environment.

Definition at line 140 of file syssolver_linop_qop_mg_w.cc.

References Chroma::finalize(), and MGP().

◆ LinOpSysSolverQOPMG() [2/2]

Chroma::LinOpSysSolverQOPMG::LinOpSysSolverQOPMG ( )
inlineprivate

Definition at line 80 of file syssolver_linop_qop_mg_w.h.

Member Function Documentation

◆ eraseSubspace()

void Chroma::LinOpSysSolverQOPMG::eraseSubspace ( )

Erasee the subspace.

Definition at line 362 of file syssolver_linop_qop_mg_w.cc.

References MGP().

◆ getSubspace()

LinOpSysSolverQOPMG::WilsonMGSubspace * Chroma::LinOpSysSolverQOPMG::getSubspace ( ) const

Get the subspace to use.

If the subspace is internal this creates it if needed and returns the pointer if it is external, this will look it up in the map and return the pointer. If the entry in the map does not exist, it will create and add the space to the map. so there is no need to separately save.. NB: External subspace creation allocates memory. Which may persist beyond the life of an object (that's the point actually). There is an ERASE_MG_SUBSPACE measurement that can erase this space later

Definition at line 314 of file syssolver_linop_qop_mg_w.cc.

References Chroma::QUDAMGUtils::create_subspace(), Chroma::d, MGP(), pop(), push(), and Chroma::write().

◆ operator()()

SystemSolverResults_t Chroma::LinOpSysSolverQOPMG::operator() ( T psi,
const T chi 
) const
virtual

Solver the linear system.

Solve the linear system.

Parameters
psisolution ( Modify )
chisource ( Read )
Returns
syssolver results

Implements Chroma::SystemSolver< LatticeFermion >.

Definition at line 245 of file syssolver_linop_qop_mg_w.cc.

References Chroma::A(), chi, Chroma::d, END_CODE, Chroma::fermionsol, Chroma::fermionsrc, MGP(), Chroma::SystemSolverResults_t::n_count, Chroma::PLUS, psi, r(), Chroma::SystemSolverResults_t::resid, START_CODE, and tmp.

◆ subset()

const Subset& Chroma::LinOpSysSolverQOPMG::subset ( void  ) const
inlinevirtual

Return the subset on which the operator acts.

Implements Chroma::SystemSolver< LatticeFermion >.

Definition at line 55 of file syssolver_linop_qop_mg_w.h.

References A.

Member Data Documentation

◆ A

Handle< LinearOperator<T> > Chroma::LinOpSysSolverQOPMG::A
private

Definition at line 82 of file syssolver_linop_qop_mg_w.h.

Referenced by subset().

◆ invParam

SysSolverQOPMGParams Chroma::LinOpSysSolverQOPMG::invParam
private

Definition at line 83 of file syssolver_linop_qop_mg_w.h.

◆ state

Handle< FermState<T,Q,Q> > Chroma::LinOpSysSolverQOPMG::state
private

Definition at line 81 of file syssolver_linop_qop_mg_w.h.

◆ subspace

WilsonMGSubspace* Chroma::LinOpSysSolverQOPMG::subspace
mutableprivate

Definition at line 84 of file syssolver_linop_qop_mg_w.h.


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