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

#include <dirac_quda.h>

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

Public Member Functions

 Dirac (const DiracParam &param)
 
 Dirac (const Dirac &dirac)
 
virtual ~Dirac ()
 
Diracoperator= (const Dirac &dirac)
 
virtual void checkParitySpinor (const ColorSpinorField &, const ColorSpinorField &) const
 
virtual void checkFullSpinor (const ColorSpinorField &, const ColorSpinorField &) const
 
void checkSpinorAlias (const ColorSpinorField &, const ColorSpinorField &) const
 
virtual void Dslash (ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const =0
 
virtual void DslashXpay (ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const =0
 
virtual void M (ColorSpinorField &out, const ColorSpinorField &in) const =0
 
virtual void MdagM (ColorSpinorField &out, const ColorSpinorField &in) const =0
 
void Mdag (ColorSpinorField &out, const ColorSpinorField &in) const
 
void MMdag (ColorSpinorField &out, const ColorSpinorField &in) const
 
virtual void prepare (ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const =0
 
virtual void reconstruct (ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const =0
 
void setMass (double mass)
 
double Kappa () const
 
virtual double Mu () const
 
virtual double MuFactor () const
 
unsigned long long Flops () const
 
QudaMatPCType getMatPCType () const
 
int getStencilSteps () const
 
void Dagger (QudaDagType dag) const
 
virtual void createCoarseOp (GaugeField &Y, GaugeField &X, GaugeField &Xinv, GaugeField &Yhat, const Transfer &T, double kappa, double mu=0., double mu_factor=0.) const
 Create the coarse operator (virtual parent) More...
 
- Public Member Functions inherited from quda::Object
 Object ()
 
virtual ~Object ()
 

Static Public Member Functions

static Diraccreate (const DiracParam &param)
 
- Static Public Member Functions inherited from quda::Object
static void * operator new (std::size_t size)
 
static void operator delete (void *p)
 
static void * operator new[] (std::size_t size)
 
static void operator delete[] (void *p)
 

Protected Member Functions

bool newTmp (ColorSpinorField **, const ColorSpinorField &) const
 
void deleteTmp (ColorSpinorField **, const bool &reset) const
 

Protected Attributes

cudaGaugeFieldgauge
 
double kappa
 
double mass
 
QudaMatPCType matpcType
 
QudaDagType dagger
 
unsigned long long flops
 
ColorSpinorFieldtmp1
 
ColorSpinorFieldtmp2
 
QudaDiracType type
 
QudaTune tune
 
int commDim [QUDA_MAX_DIM]
 
TimeProfile profile
 

Friends

class DiracMatrix
 
class DiracM
 
class DiracMdagM
 
class DiracMMdag
 
class DiracMdag
 

Detailed Description

Definition at line 86 of file dirac_quda.h.

Constructor & Destructor Documentation

◆ Dirac() [1/2]

quda::Dirac::Dirac ( const DiracParam param)

Definition at line 12 of file dirac.cpp.

References commDim, fused_exterior_ndeg_tm_dslash_cuda_gen::i, and param.

◆ Dirac() [2/2]

quda::Dirac::Dirac ( const Dirac dirac)

Definition at line 20 of file dirac.cpp.

References commDim, dirac, and fused_exterior_ndeg_tm_dslash_cuda_gen::i.

◆ ~Dirac()

quda::Dirac::~Dirac ( )
virtual

Definition at line 28 of file dirac.cpp.

References getVerbosity(), quda::TimeProfile::Print(), profile, and QUDA_VERBOSE.

Here is the call graph for this function:

Member Function Documentation

◆ checkFullSpinor()

void quda::Dirac::checkFullSpinor ( const ColorSpinorField out,
const ColorSpinorField in 
) const
virtual

◆ checkParitySpinor()

void quda::Dirac::checkParitySpinor ( const ColorSpinorField out,
const ColorSpinorField in 
) const
virtual

◆ checkSpinorAlias()

void quda::Dirac::checkSpinorAlias ( const ColorSpinorField a,
const ColorSpinorField b 
) const

◆ create()

Dirac * quda::Dirac::create ( const DiracParam param)
static

◆ createCoarseOp()

virtual void quda::Dirac::createCoarseOp ( GaugeField Y,
GaugeField X,
GaugeField Xinv,
GaugeField Yhat,
const Transfer T,
double  kappa,
double  mu = 0.,
double  mu_factor = 0. 
) const
inlinevirtual

Create the coarse operator (virtual parent)

Parameters
Y[out]Coarse link field
X[out]Coarse clover field
Xinv[out]Coarse clover inverse field
Yhat[out]Coarse preconditioned link field
T[in]Transfer operator defining the coarse grid
kappaKappa parameter for the coarse operator
muTM mu parameter for the coarse operator
mu_factormultiplicative factor for the mu parameter

Reimplemented in quda::DiracCoarsePC, quda::DiracCoarse, quda::DiracTwistedCloverPC, quda::DiracTwistedClover, quda::DiracTwistedMassPC, quda::DiracTwistedMass, quda::DiracCloverPC, quda::DiracClover, and quda::DiracWilson.

Definition at line 167 of file dirac_quda.h.

References errorQuda.

Referenced by quda::DiracCoarse::initializeCoarse().

Here is the caller graph for this function:

◆ Dagger()

void quda::Dirac::Dagger ( QudaDagType  dag) const
inline

Definition at line 153 of file dirac_quda.h.

References dagger.

Referenced by computeCloverForceQuda().

Here is the caller graph for this function:

◆ deleteTmp()

void quda::Dirac::deleteTmp ( ColorSpinorField **  a,
const bool &  reset 
) const
protected

Definition at line 64 of file dirac.cpp.

References a.

Referenced by quda::DiracTwistedMassPC::Dslash(), quda::DiracTwistedMassPC::DslashXpay(), quda::DiracWilsonPC::M(), quda::DiracCloverPC::M(), quda::DiracDomainWallPC::M(), quda::DiracDomainWall4DPC::M(), quda::DiracMobius::M(), quda::DiracMobiusPC::M(), quda::DiracTwistedMass::M(), quda::DiracTwistedMassPC::M(), quda::DiracTwistedClover::M(), quda::DiracTwistedCloverPC::M(), quda::DiracCoarsePC::M(), quda::GaugeLaplacePC::M(), quda::DiracWilson::MdagM(), quda::DiracWilsonPC::MdagM(), quda::DiracClover::MdagM(), quda::DiracCloverPC::MdagM(), quda::DiracDomainWall::MdagM(), quda::DiracDomainWallPC::MdagM(), quda::DiracDomainWall4DPC::MdagM(), quda::DiracMobius::MdagM(), quda::DiracMobiusPC::MdagM(), quda::DiracTwistedMass::MdagM(), quda::DiracTwistedMassPC::MdagM(), quda::DiracTwistedClover::MdagM(), quda::DiracTwistedCloverPC::MdagM(), quda::DiracStaggered::MdagM(), quda::DiracStaggeredPC::MdagM(), quda::DiracImprovedStaggered::MdagM(), quda::DiracImprovedStaggeredPC::MdagM(), quda::DiracCoarse::MdagM(), quda::DiracCoarsePC::MdagM(), quda::GaugeLaplace::MdagM(), quda::GaugeLaplacePC::MdagM(), quda::GaugeCovDev::MdagMCD(), quda::DiracCloverPC::prepare(), quda::DiracDomainWall4DPC::prepare(), quda::DiracMobiusPC::prepare(), quda::DiracTwistedMassPC::prepare(), quda::DiracTwistedCloverPC::prepare(), quda::DiracCoarsePC::prepare(), quda::DiracCloverPC::reconstruct(), quda::DiracDomainWall4DPC::reconstruct(), quda::DiracMobiusPC::reconstruct(), quda::DiracTwistedMassPC::reconstruct(), quda::DiracTwistedCloverPC::reconstruct(), and quda::DiracCoarsePC::reconstruct().

Here is the caller graph for this function:

◆ Dslash()

virtual void quda::Dirac::Dslash ( ColorSpinorField out,
const ColorSpinorField in,
const QudaParity  parity 
) const
pure virtual

◆ DslashXpay()

virtual void quda::Dirac::DslashXpay ( ColorSpinorField out,
const ColorSpinorField in,
const QudaParity  parity,
const ColorSpinorField x,
const double k 
) const
pure virtual

◆ Flops()

unsigned long long quda::Dirac::Flops ( ) const
inline

Definition at line 148 of file dirac_quda.h.

References flops.

Referenced by dslashTest(), quda::DiracMatrix::flops(), main(), and TEST_P().

Here is the caller graph for this function:

◆ getMatPCType()

QudaMatPCType quda::Dirac::getMatPCType ( ) const
inline

Definition at line 151 of file dirac_quda.h.

References matpcType.

Referenced by quda::DiracMatrix::getMatPCType().

Here is the caller graph for this function:

◆ getStencilSteps()

int quda::Dirac::getStencilSteps ( ) const

◆ Kappa()

double quda::Dirac::Kappa ( ) const
inline

Definition at line 144 of file dirac_quda.h.

References kappa.

Referenced by quda::MG::MG(), and quda::MG::verify().

Here is the caller graph for this function:

◆ M()

virtual void quda::Dirac::M ( ColorSpinorField out,
const ColorSpinorField in 
) const
pure virtual

◆ Mdag()

void quda::Dirac::Mdag ( ColorSpinorField out,
const ColorSpinorField in 
) const

◆ MdagM()

virtual void quda::Dirac::MdagM ( ColorSpinorField out,
const ColorSpinorField in 
) const
pure virtual

◆ MMdag()

void quda::Dirac::MMdag ( ColorSpinorField out,
const ColorSpinorField in 
) const

Definition at line 80 of file dirac.cpp.

References dagger, flip, in, MdagM(), and out.

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

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Mu()

virtual double quda::Dirac::Mu ( ) const
inlinevirtual

Reimplemented in quda::DiracCoarse, quda::DiracTwistedClover, and quda::DiracTwistedMass.

Definition at line 145 of file dirac_quda.h.

Referenced by quda::MG::MG(), and quda::MG::verify().

Here is the caller graph for this function:

◆ MuFactor()

virtual double quda::Dirac::MuFactor ( ) const
inlinevirtual

Reimplemented in quda::DiracCoarse.

Definition at line 146 of file dirac_quda.h.

◆ newTmp()

bool quda::Dirac::newTmp ( ColorSpinorField **  tmp,
const ColorSpinorField a 
) const
protected

Definition at line 53 of file dirac.cpp.

References a, param, QUDA_ZERO_FIELD_CREATE, and tmp.

Referenced by quda::DiracTwistedMassPC::Dslash(), quda::DiracTwistedMassPC::DslashXpay(), quda::DiracWilsonPC::M(), quda::DiracCloverPC::M(), quda::DiracDomainWallPC::M(), quda::DiracDomainWall4DPC::M(), quda::DiracMobius::M(), quda::DiracMobiusPC::M(), quda::DiracTwistedMass::M(), quda::DiracTwistedMassPC::M(), quda::DiracTwistedClover::M(), quda::DiracTwistedCloverPC::M(), quda::DiracCoarsePC::M(), quda::GaugeLaplacePC::M(), quda::DiracWilson::MdagM(), quda::DiracWilsonPC::MdagM(), quda::DiracClover::MdagM(), quda::DiracCloverPC::MdagM(), quda::DiracDomainWall::MdagM(), quda::DiracDomainWallPC::MdagM(), quda::DiracDomainWall4DPC::MdagM(), quda::DiracMobius::MdagM(), quda::DiracMobiusPC::MdagM(), quda::DiracTwistedMass::MdagM(), quda::DiracTwistedMassPC::MdagM(), quda::DiracTwistedClover::MdagM(), quda::DiracTwistedCloverPC::MdagM(), quda::DiracStaggered::MdagM(), quda::DiracStaggeredPC::MdagM(), quda::DiracImprovedStaggered::MdagM(), quda::DiracImprovedStaggeredPC::MdagM(), quda::DiracCoarse::MdagM(), quda::DiracCoarsePC::MdagM(), quda::GaugeLaplace::MdagM(), quda::GaugeLaplacePC::MdagM(), quda::GaugeCovDev::MdagMCD(), quda::DiracCloverPC::prepare(), quda::DiracDomainWall4DPC::prepare(), quda::DiracMobiusPC::prepare(), quda::DiracTwistedMassPC::prepare(), quda::DiracTwistedCloverPC::prepare(), quda::DiracCoarsePC::prepare(), quda::DiracCloverPC::reconstruct(), quda::DiracDomainWall4DPC::reconstruct(), quda::DiracMobiusPC::reconstruct(), quda::DiracTwistedMassPC::reconstruct(), quda::DiracTwistedCloverPC::reconstruct(), and quda::DiracCoarsePC::reconstruct().

Here is the caller graph for this function:

◆ operator=()

Dirac & quda::Dirac::operator= ( const Dirac dirac)

◆ prepare()

virtual void quda::Dirac::prepare ( ColorSpinorField *&  src,
ColorSpinorField *&  sol,
ColorSpinorField x,
ColorSpinorField b,
const QudaSolutionType   
) const
pure virtual

◆ reconstruct()

virtual void quda::Dirac::reconstruct ( ColorSpinorField x,
const ColorSpinorField b,
const QudaSolutionType   
) const
pure virtual

◆ setMass()

void quda::Dirac::setMass ( double  mass)
inline

Definition at line 140 of file dirac_quda.h.

References mass.

Referenced by invertMultiShiftQuda().

Here is the caller graph for this function:

Friends And Related Function Documentation

◆ DiracM

friend class DiracM
friend

Definition at line 89 of file dirac_quda.h.

◆ DiracMatrix

friend class DiracMatrix
friend

Definition at line 88 of file dirac_quda.h.

◆ DiracMdag

friend class DiracMdag
friend

Definition at line 92 of file dirac_quda.h.

◆ DiracMdagM

friend class DiracMdagM
friend

Definition at line 90 of file dirac_quda.h.

◆ DiracMMdag

friend class DiracMMdag
friend

Definition at line 91 of file dirac_quda.h.

Member Data Documentation

◆ commDim

int quda::Dirac::commDim[QUDA_MAX_DIM]
protected

◆ dagger

QudaDagType quda::Dirac::dagger
mutableprotected

Definition at line 99 of file dirac_quda.h.

Referenced by quda::DiracCoarse::Clover(), quda::DiracCoarse::CloverInv(), Dagger(), quda::DiracWilson::Dslash(), quda::DiracCloverPC::Dslash(), quda::DiracDomainWall::Dslash(), quda::DiracTwistedMassPC::Dslash(), quda::DiracStaggered::Dslash(), quda::DiracImprovedStaggered::Dslash(), quda::DiracCoarse::Dslash(), quda::DiracCoarsePC::Dslash(), quda::DiracDomainWall4DPC::Dslash4(), quda::DiracMobius::Dslash4(), quda::DiracMobius::Dslash4pre(), quda::DiracMobius::Dslash4preXpay(), quda::DiracDomainWall4DPC::Dslash4Xpay(), quda::DiracMobius::Dslash4Xpay(), quda::DiracDomainWall4DPC::Dslash5(), quda::DiracMobius::Dslash5(), quda::DiracDomainWall4DPC::Dslash5inv(), quda::DiracMobiusPC::Dslash5inv(), quda::DiracDomainWall4DPC::Dslash5invXpay(), quda::DiracMobiusPC::Dslash5invXpay(), quda::DiracDomainWall4DPC::Dslash5Xpay(), quda::DiracMobius::Dslash5Xpay(), quda::DiracWilson::DslashXpay(), quda::DiracClover::DslashXpay(), quda::DiracCloverPC::DslashXpay(), quda::DiracDomainWall::DslashXpay(), quda::DiracTwistedMassPC::DslashXpay(), quda::DiracStaggered::DslashXpay(), quda::DiracImprovedStaggered::DslashXpay(), quda::DiracCoarse::DslashXpay(), quda::DiracCloverPC::M(), quda::DiracDomainWall4DPC::M(), quda::DiracMobiusPC::M(), quda::DiracTwistedClover::M(), quda::DiracTwistedCloverPC::M(), quda::DiracCoarse::M(), Mdag(), MMdag(), quda::DiracTwistedMass::NdegTwistedDslash(), quda::DiracTwistedMass::NdegTwistedDslashXpay(), operator=(), quda::DiracTwistedMass::twistedApply(), quda::DiracTwistedClover::twistedCloverApply(), quda::DiracTwistedMass::TwistedDslash(), and quda::DiracTwistedMass::TwistedDslashXpay().

◆ flops

unsigned long long quda::Dirac::flops
mutableprotected

Definition at line 100 of file dirac_quda.h.

Referenced by quda::DiracClover::Clover(), quda::DiracCoarse::Clover(), quda::DiracCloverPC::CloverInv(), quda::DiracCoarse::CloverInv(), quda::DiracWilson::Dslash(), quda::DiracCloverPC::Dslash(), quda::DiracDomainWall::Dslash(), quda::DiracStaggered::Dslash(), quda::DiracImprovedStaggered::Dslash(), quda::DiracCoarse::Dslash(), quda::DiracCoarsePC::Dslash(), quda::GaugeLaplace::Dslash(), quda::DiracDomainWall4DPC::Dslash4(), quda::DiracMobius::Dslash4(), quda::DiracMobius::Dslash4pre(), quda::DiracMobius::Dslash4preXpay(), quda::DiracDomainWall4DPC::Dslash4Xpay(), quda::DiracMobius::Dslash4Xpay(), quda::DiracDomainWall4DPC::Dslash5(), quda::DiracMobius::Dslash5(), quda::DiracDomainWall4DPC::Dslash5inv(), quda::DiracMobiusPC::Dslash5inv(), quda::DiracDomainWall4DPC::Dslash5invXpay(), quda::DiracMobiusPC::Dslash5invXpay(), quda::DiracDomainWall4DPC::Dslash5Xpay(), quda::DiracMobius::Dslash5Xpay(), quda::GaugeCovDev::DslashCD(), quda::DiracWilson::DslashXpay(), quda::DiracClover::DslashXpay(), quda::DiracCloverPC::DslashXpay(), quda::DiracDomainWall::DslashXpay(), quda::DiracStaggered::DslashXpay(), quda::DiracImprovedStaggered::DslashXpay(), quda::DiracCoarse::DslashXpay(), quda::DiracCoarsePC::DslashXpay(), quda::GaugeLaplace::DslashXpay(), Flops(), quda::DiracTwistedClover::M(), quda::DiracTwistedCloverPC::M(), quda::DiracCoarse::M(), quda::DiracTwistedMass::NdegTwistedDslash(), quda::DiracTwistedMass::NdegTwistedDslashXpay(), operator=(), quda::DiracTwistedMass::twistedApply(), quda::DiracTwistedClover::twistedCloverApply(), quda::DiracTwistedMass::TwistedDslash(), and quda::DiracTwistedMass::TwistedDslashXpay().

◆ gauge

cudaGaugeField* quda::Dirac::gauge
protected

Definition at line 95 of file dirac_quda.h.

Referenced by checkParitySpinor(), quda::DiracStaggered::checkParitySpinor(), quda::DiracWilson::createCoarseOp(), quda::DiracClover::createCoarseOp(), quda::DiracCloverPC::createCoarseOp(), quda::DiracTwistedMass::createCoarseOp(), quda::DiracTwistedMassPC::createCoarseOp(), quda::DiracTwistedClover::createCoarseOp(), quda::DiracTwistedCloverPC::createCoarseOp(), quda::DiracWilson::Dslash(), quda::DiracCloverPC::Dslash(), quda::DiracDomainWall::Dslash(), quda::DiracStaggered::Dslash(), quda::GaugeLaplace::Dslash(), quda::DiracDomainWall4DPC::Dslash4(), quda::DiracMobius::Dslash4(), quda::DiracMobius::Dslash4pre(), quda::DiracMobius::Dslash4preXpay(), quda::DiracDomainWall4DPC::Dslash4Xpay(), quda::DiracMobius::Dslash4Xpay(), quda::DiracDomainWall4DPC::Dslash5(), quda::DiracMobius::Dslash5(), quda::DiracDomainWall4DPC::Dslash5inv(), quda::DiracMobiusPC::Dslash5inv(), quda::DiracDomainWall4DPC::Dslash5invXpay(), quda::DiracMobiusPC::Dslash5invXpay(), quda::DiracDomainWall4DPC::Dslash5Xpay(), quda::DiracMobius::Dslash5Xpay(), quda::GaugeCovDev::DslashCD(), quda::DiracWilson::DslashXpay(), quda::DiracClover::DslashXpay(), quda::DiracCloverPC::DslashXpay(), quda::DiracDomainWall::DslashXpay(), quda::DiracStaggered::DslashXpay(), quda::GaugeLaplace::DslashXpay(), quda::DiracTwistedClover::M(), quda::DiracTwistedCloverPC::M(), quda::DiracTwistedMass::NdegTwistedDslash(), quda::DiracTwistedMass::NdegTwistedDslashXpay(), operator=(), quda::DiracTwistedMass::TwistedDslash(), and quda::DiracTwistedMass::TwistedDslashXpay().

◆ kappa

double quda::Dirac::kappa
protected

◆ mass

double quda::Dirac::mass
protected

◆ matpcType

QudaMatPCType quda::Dirac::matpcType
protected

◆ profile

TimeProfile quda::Dirac::profile
mutableprotected

◆ tmp1

ColorSpinorField* quda::Dirac::tmp1
mutableprotected

◆ tmp2

ColorSpinorField* quda::Dirac::tmp2
mutableprotected

◆ tune

QudaTune quda::Dirac::tune
protected

Definition at line 108 of file dirac_quda.h.

Referenced by operator=().

◆ type

QudaDiracType quda::Dirac::type
protected

Definition at line 103 of file dirac_quda.h.

Referenced by getStencilSteps(), and operator=().


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