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

Clover term. More...

#include <clover_term_qdp_w.h>

Inheritance diagram for Chroma::QDPCloverTermT< T, U >:
Chroma::CloverTermBase< T, U > Chroma::DslashLinearOperator< T, multi1d< U >, multi1d< U > > Chroma::DiffLinearOperator< T, P, Q > Chroma::LinearOperator< T >

Public Types

typedef WordType< T >::Type_t REALT
 
typedef OLattice< PScalar< PScalar< RScalar< typename WordType< T >::Type_t > > > > LatticeREAL
 
typedef OScalar< PScalar< PScalar< RScalar< REALT > > > > RealT
 

Public Member Functions

 QDPCloverTermT ()
 Empty constructor. Must use create later. More...
 
 ~QDPCloverTermT ()
 No real need for cleanup here. More...
 
void create (Handle< FermState< T, multi1d< U >, multi1d< U > > > fs, const CloverFermActParams &param_)
 Creation routine. More...
 
virtual void create (Handle< FermState< T, multi1d< U >, multi1d< U > > > fs, const CloverFermActParams &param_, const QDPCloverTermT< T, U > &from_)
 
void choles (int cb)
 Computes the inverse of the term on cb using Cholesky. More...
 
Double cholesDet (int cb) const
 Computes the inverse of the term on cb using Cholesky. More...
 
void apply (T &chi, const T &psi, enum PlusMinus isign, int cb) const
 
void applySite (T &chi, const T &psi, enum PlusMinus isign, int site) const
 
void triacntr (U &B, int mat, int cb) const
 Calculates Tr_D ( Gamma_mat L ) More...
 
const FermBC< T, multi1d< U >, multi1d< U > > & getFermBC () const
 Return the fermion BC object for this linear operator. More...
 
void packForQUDA (multi1d< QUDAPackedClovSite< REALT > > &quda_pack, int cb) const
 PACK UP the Clover term for QUDA library: More...
 
- Public Member Functions inherited from Chroma::CloverTermBase< T, U >
virtual ~CloverTermBase ()
 No real need for cleanup here. More...
 
const Subset & subset () const
 Subset is all here. More...
 
void deriv (multi1d< U > &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
 Take deriv of D. More...
 
void deriv (multi1d< U > &ds_u, const T &chi, const T &psi, enum PlusMinus isign, int cb) const
 Take deriv of D. More...
 
void derivMultipole (multi1d< U > &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign) const
 Take deriv of D. More...
 
void derivMultipole (multi1d< U > &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign, int cb) const
 Take deriv of D. More...
 
void derivTrLn (multi1d< U > &ds_u, enum PlusMinus isign, int cb) const
 Take derivative of TrLn D. More...
 
void deriv_loops (const int u, const int mu, const int cb, U &ds_u_mu, U &ds_u_nu, const U &Lambda) const
 
unsigned long nFlops () const
 Return flops performed by the operator() More...
 
- Public Member Functions inherited from Chroma::DslashLinearOperator< T, multi1d< U >, multi1d< U > >
virtual ~DslashLinearOperator ()
 Virtual destructor to help in cleanup. More...
 
virtual void operator() (T &d, const T &psi, enum PlusMinus isign) const
 Apply operator on both checkerboards (entire lattice) More...
 
- Public Member Functions inherited from Chroma::DiffLinearOperator< T, P, Q >
virtual ~DiffLinearOperator ()
 Virtual destructor to help with cleanup;. More...
 
virtual void deriv (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
 Apply the derivative of the operator onto a source std::vector. More...
 
virtual void deriv (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign, const Real &epsilon) const
 Apply the derivative of the operator onto a source std::vector to some precision. More...
 
virtual void derivMultipole (P &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign) const
 Return the force for multiple poles. More...
 
- Public Member Functions inherited from Chroma::LinearOperator< T >
virtual ~LinearOperator ()
 Virtual destructor to help with cleanup;. More...
 
virtual void operator() (T &chi, const T &psi, enum PlusMinus isign, Real epsilon) const
 Apply the operator onto a source std::vector to some precision. More...
 

Protected Member Functions

void makeClov (const multi1d< U > &f, const RealT &diag_mass)
 Create the clover term on cb. More...
 
void chlclovms (LatticeREAL &log_diag, int cb)
 Invert the clover term on cb. More...
 
void ldagdlinv (LatticeREAL &tr_log_diag, int cb)
 
const multi1d< U > & getU () const
 Get the u field. More...
 
Real getCloverCoeff (int mu, int nu) const
 Calculates Tr_D ( Gamma_mat L ) More...
 

Private Attributes

Handle< FermBC< T, multi1d< U >, multi1d< U > > > fbc
 
multi1d< Uu
 
CloverFermActParams param
 
LatticeREAL tr_log_diag_
 
multi1d< bool > choles_done
 
PrimitiveClovTriang< REALT > * tri
 

Detailed Description

template<typename T, typename U>
class Chroma::QDPCloverTermT< T, U >

Clover term.

Definition at line 49 of file clover_term_qdp_w.h.

Member Typedef Documentation

◆ LatticeREAL

template<typename T , typename U >
typedef OLattice< PScalar< PScalar< RScalar< typename WordType<T>::Type_t> > > > Chroma::QDPCloverTermT< T, U >::LatticeREAL

Definition at line 55 of file clover_term_qdp_w.h.

◆ REALT

template<typename T , typename U >
typedef WordType<T>::Type_t Chroma::QDPCloverTermT< T, U >::REALT

Definition at line 53 of file clover_term_qdp_w.h.

◆ RealT

template<typename T , typename U >
typedef OScalar< PScalar< PScalar< RScalar<REALT> > > > Chroma::QDPCloverTermT< T, U >::RealT

Definition at line 56 of file clover_term_qdp_w.h.

Constructor & Destructor Documentation

◆ QDPCloverTermT()

template<typename T , typename U >
Chroma::QDPCloverTermT< T, U >::QDPCloverTermT

Empty constructor. Must use create later.

Definition at line 163 of file clover_term_qdp_w.h.

References Chroma::DEFAULT.

◆ ~QDPCloverTermT()

template<typename T , typename U >
Chroma::QDPCloverTermT< T, U >::~QDPCloverTermT ( )
inline

No real need for cleanup here.

Definition at line 62 of file clover_term_qdp_w.h.

References Chroma::QDPCloverTermT< T, U >::tri.

Member Function Documentation

◆ apply()

template<typename T , typename U >
void Chroma::QDPCloverTermT< T, U >::apply ( T chi,
const T psi,
enum PlusMinus  isign,
int  cb 
) const
virtual

Apply a dslash

Performs the operation

chi <- (L + D + L^dag) . psi

where L is a lower triangular matrix D is the real diagonal. (stored together in type TRIANG)

Arguments:

Parameters
chiresult (Write)
psisource (Read)
isignD'^dag or D' ( MINUS | PLUS ) resp. (Read)
cbCheckerboard of OUTPUT std::vector (Read)

Implements Chroma::DslashLinearOperator< T, multi1d< U >, multi1d< U > >.

Definition at line 2141 of file clover_term_qdp_w.h.

References Chroma::cb, Chroma::chi(), Chroma::END_CODE(), Chroma::psi, and Chroma::START_CODE().

Referenced by Chroma::EvenOddPrecSLICLinOp::evenEvenInvLinOp(), Chroma::EvenOddPrecSLICLinOp::evenEvenLinOp(), main(), Chroma::EvenOddPrecSLICLinOp::oddOddLinOp(), Chroma::EvenOddPrecSLICLinOp::operator()(), Chroma::EvenOddPrecDumbCloverFLinOp::operator()(), and Chroma::EvenOddPrecDumbCloverDLinOp::operator()().

◆ applySite()

template<typename T , typename U >
void Chroma::QDPCloverTermT< T, U >::applySite ( T chi,
const T psi,
enum PlusMinus  isign,
int  site 
) const
virtual

Apply a dslash

Performs the operation

chi <- (L + D + L^dag) . psi

where L is a lower triangular matrix D is the real diagonal. (stored together in type TRIANG)

Arguments:

Parameters
chiresult (Write)
psisource (Read)
isignD'^dag or D' ( MINUS | PLUS ) resp. (Read)
cbCheckerboard of OUTPUT std::vector (Read)

Implements Chroma::CloverTermBase< T, U >.

Definition at line 1057 of file clover_term_qdp_w.h.

References Chroma::chi(), Chroma::END_CODE(), n, Chroma::psi, and Chroma::START_CODE().

◆ chlclovms()

template<typename T , typename U >
void Chroma::QDPCloverTermT< T, U >::chlclovms ( LatticeREAL log_diag,
int  cb 
)
protected

Invert the clover term on cb.

Definition at line 1017 of file clover_term_qdp_w.h.

References Chroma::a, Chroma::cb, Chroma::END_CODE(), Chroma::START_CODE(), and Chroma::zero.

◆ choles()

template<typename T , typename U >
void Chroma::QDPCloverTermT< T, U >::choles ( int  cb)
virtual

Computes the inverse of the term on cb using Cholesky.

Invert.

Parameters
cbcheckerboard of work (Read)

Computes the inverse of the term on cb using Cholesky

Implements Chroma::CloverTermBase< T, U >.

Definition at line 561 of file clover_term_qdp_w.h.

References Chroma::cb, Chroma::END_CODE(), and Chroma::START_CODE().

Referenced by Chroma::EvenOddPrecDumbCloverFLinOp::create(), Chroma::EvenOddPrecDumbCloverDLinOp::create(), and Chroma::EvenOddPrecSLICLinOp::create().

◆ cholesDet()

template<typename T , typename U >
Double Chroma::QDPCloverTermT< T, U >::cholesDet ( int  cb) const
virtual

Computes the inverse of the term on cb using Cholesky.

Invert.

Parameters
cbcheckerboard of work (Read)
Returns
logarithm of the determinant

Computes the inverse of the term on cb using Cholesky

Returns
logarithm of the determinant

Implements Chroma::CloverTermBase< T, U >.

Definition at line 581 of file clover_term_qdp_w.h.

References Chroma::cb, Chroma::END_CODE(), Chroma::START_CODE(), and sum.

Referenced by Chroma::EvenOddPrecSLICLinOp::logDetEvenEvenLinOp().

◆ create() [1/2]

template<typename T , typename U >
void Chroma::QDPCloverTermT< T, U >::create ( Handle< FermState< T, multi1d< U >, multi1d< U > > >  fs,
const CloverFermActParams param_ 
)

◆ create() [2/2]

template<typename T , typename U >
void Chroma::QDPCloverTermT< T, U >::create ( Handle< FermState< T, multi1d< U >, multi1d< U > > >  fs,
const CloverFermActParams param_,
const QDPCloverTermT< T, U > &  from_ 
)
virtual

◆ getCloverCoeff()

template<typename T , typename U >
Real Chroma::QDPCloverTermT< T, U >::getCloverCoeff ( int  mu,
int  nu 
) const
protectedvirtual

Calculates Tr_D ( Gamma_mat L )

Returns the appropriate clover coefficient for indices mu and nu.

Implements Chroma::CloverTermBase< T, U >.

Definition at line 1527 of file clover_term_qdp_w.h.

References Chroma::END_CODE(), mu, nu, and Chroma::START_CODE().

◆ getFermBC()

template<typename T , typename U >
const FermBC<T, multi1d<U>, multi1d<U> >& Chroma::QDPCloverTermT< T, U >::getFermBC ( ) const
inlinevirtual

Return the fermion BC object for this linear operator.

Implements Chroma::DslashLinearOperator< T, multi1d< U >, multi1d< U > >.

Definition at line 122 of file clover_term_qdp_w.h.

References Chroma::QDPCloverTermT< T, U >::fbc.

Referenced by Chroma::UnprecW12LinOp::getFermBC().

◆ getU()

template<typename T , typename U >
const multi1d<U>& Chroma::QDPCloverTermT< T, U >::getU ( ) const
inlineprotectedvirtual

Get the u field.

Implements Chroma::CloverTermBase< T, U >.

Definition at line 142 of file clover_term_qdp_w.h.

References Chroma::QDPCloverTermT< T, U >::u.

◆ ldagdlinv()

template<typename T , typename U >
void Chroma::QDPCloverTermT< T, U >::ldagdlinv ( LatticeREAL tr_log_diag,
int  cb 
)
protected

An LDL^\dag decomposition and inversion?

Definition at line 822 of file clover_term_qdp_w.h.

References Chroma::a, Chroma::cb, Chroma::END_CODE(), Chroma::START_CODE(), and Chroma::zero.

◆ makeClov()

template<typename T , typename U >
void Chroma::QDPCloverTermT< T, U >::makeClov ( const multi1d< U > &  f,
const RealT diag_mass 
)
protected

Create the clover term on cb.

Parameters
ffield strength tensor F(mu,nu) (Read)
cbcheckerboard (Read)

Definition at line 526 of file clover_term_qdp_w.h.

References Chroma::END_CODE(), std::tr1::f1, std::tr1::f2, std::tr1::f3, std::tr1::f4, std::tr1::f5, Nd, and Chroma::START_CODE().

◆ packForQUDA()

template<typename T , typename U >
void Chroma::QDPCloverTermT< T, U >::packForQUDA ( multi1d< QUDAPackedClovSite< REALT > > &  quda_pack,
int  cb 
) const

PACK UP the Clover term for QUDA library:

Definition at line 2222 of file clover_term_qdp_w.h.

References Chroma::cb.

◆ triacntr()

template<typename T , typename U >
void Chroma::QDPCloverTermT< T, U >::triacntr ( U B,
int  mat,
int  cb 
) const
virtual

Calculates Tr_D ( Gamma_mat L )

Implements Chroma::CloverTermBase< T, U >.

Definition at line 1503 of file clover_term_qdp_w.h.

References Chroma::a, Chroma::cb, Chroma::END_CODE(), Chroma::START_CODE(), and Chroma::zero.

Member Data Documentation

◆ choles_done

template<typename T , typename U >
multi1d<bool> Chroma::QDPCloverTermT< T, U >::choles_done
private

Definition at line 153 of file clover_term_qdp_w.h.

Referenced by Chroma::QDPCloverTermT< T, U >::create().

◆ fbc

template<typename T , typename U >
Handle< FermBC<T,multi1d<U>,multi1d<U> > > Chroma::QDPCloverTermT< T, U >::fbc
private

Definition at line 148 of file clover_term_qdp_w.h.

Referenced by Chroma::QDPCloverTermT< T, U >::getFermBC().

◆ param

template<typename T , typename U >
CloverFermActParams Chroma::QDPCloverTermT< T, U >::param
private

Definition at line 150 of file clover_term_qdp_w.h.

◆ tr_log_diag_

template<typename T , typename U >
LatticeREAL Chroma::QDPCloverTermT< T, U >::tr_log_diag_
private

Definition at line 151 of file clover_term_qdp_w.h.

Referenced by Chroma::QDPCloverTermT< T, U >::create().

◆ tri

template<typename T , typename U >
PrimitiveClovTriang<REALT>* Chroma::QDPCloverTermT< T, U >::tri
private

◆ u

template<typename T , typename U >
multi1d<U> Chroma::QDPCloverTermT< T, U >::u
private

Definition at line 149 of file clover_term_qdp_w.h.

Referenced by Chroma::QDPCloverTermT< T, U >::getU().


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