CHROMA
Public Types | Public Member Functions | Protected Member Functions | Private Attributes | List of all members
Chroma::NVVMCloverTermT< T, U > Class Template Reference

#include <clover_term_nvvm_w.h>

Inheritance diagram for Chroma::NVVMCloverTermT< 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< Word< REALT > > > > > LatticeREAL
 
typedef OScalar< PScalar< PScalar< RScalar< Word< REALT > > > > > RealT
 

Public Member Functions

 NVVMCloverTermT ()
 Empty constructor. Must use create later. More...
 
 ~NVVMCloverTermT ()
 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 NVVMCloverTermT< 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...
 
int getDiaId () const
 
int getOffId () const
 
- 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 ldagdlinv (LatticeREAL &tr_log_diag, int cb)
 Invert the clover term on cb. More...
 
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
 
OLattice< PComp< PTriDia< RScalar< Word< REALT > > > > > tri_dia
 
OLattice< PComp< PTriOff< RComplex< Word< REALT > > > > > tri_off
 

Detailed Description

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

Definition at line 298 of file clover_term_nvvm_w.h.

Member Typedef Documentation

◆ LatticeREAL

template<typename T , typename U >
typedef OLattice< PScalar< PScalar< RScalar< Word< REALT> > > > > Chroma::NVVMCloverTermT< T, U >::LatticeREAL

Definition at line 304 of file clover_term_nvvm_w.h.

◆ REALT

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

Definition at line 302 of file clover_term_nvvm_w.h.

◆ RealT

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

Definition at line 305 of file clover_term_nvvm_w.h.

Constructor & Destructor Documentation

◆ NVVMCloverTermT()

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

Empty constructor. Must use create later.

Definition at line 405 of file clover_term_nvvm_w.h.

◆ ~NVVMCloverTermT()

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

No real need for cleanup here.

Definition at line 311 of file clover_term_nvvm_w.h.

Member Function Documentation

◆ apply()

template<typename T , typename U >
void Chroma::NVVMCloverTermT< 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 1841 of file clover_term_nvvm_w.h.

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

◆ applySite()

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

Implements Chroma::CloverTermBase< T, U >.

Definition at line 1953 of file clover_term_nvvm_w.h.

References Chroma::QDP_error_exit().

◆ choles()

template<typename T , typename U >
void Chroma::NVVMCloverTermT< 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 845 of file clover_term_nvvm_w.h.

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

◆ cholesDet()

template<typename T , typename U >
Double Chroma::NVVMCloverTermT< 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 865 of file clover_term_nvvm_w.h.

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

◆ create() [1/2]

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

Creation routine.

Definition at line 468 of file clover_term_nvvm_w.h.

References Chroma::END_CODE(), Chroma::i, Chroma::mesField(), Nd, Chroma::START_CODE(), and Chroma::u.

◆ create() [2/2]

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

◆ getCloverCoeff()

template<typename T , typename U >
Real Chroma::NVVMCloverTermT< 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 1647 of file clover_term_nvvm_w.h.

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

◆ getDiaId()

template<typename T , typename U >
int Chroma::NVVMCloverTermT< T, U >::getDiaId ( ) const
inline

Definition at line 365 of file clover_term_nvvm_w.h.

References Chroma::NVVMCloverTermT< T, U >::tri_dia.

◆ getFermBC()

template<typename T , typename U >
const FermBC<T, multi1d<U>, multi1d<U> >& Chroma::NVVMCloverTermT< 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 360 of file clover_term_nvvm_w.h.

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

◆ getOffId()

template<typename T , typename U >
int Chroma::NVVMCloverTermT< T, U >::getOffId ( ) const
inline

Definition at line 366 of file clover_term_nvvm_w.h.

References Chroma::NVVMCloverTermT< T, U >::tri_off.

◆ getU()

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

Get the u field.

Implements Chroma::CloverTermBase< T, U >.

Definition at line 382 of file clover_term_nvvm_w.h.

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

◆ ldagdlinv()

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

Invert the clover term on cb.

An LDL^\dag decomposition and inversion?

Definition at line 1139 of file clover_term_nvvm_w.h.

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

◆ makeClov()

template<typename T , typename U >
void Chroma::NVVMCloverTermT< 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 805 of file clover_term_nvvm_w.h.

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

◆ packForQUDA()

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

PACK UP the Clover term for QUDA library:

Definition at line 1932 of file clover_term_nvvm_w.h.

References Chroma::cb, QDP::PackForQUDATimer::get(), and QDP::PackForQUDATimer::Instance().

◆ triacntr()

template<typename T , typename U >
void Chroma::NVVMCloverTermT< 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 1619 of file clover_term_nvvm_w.h.

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

Member Data Documentation

◆ choles_done

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

Definition at line 394 of file clover_term_nvvm_w.h.

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

◆ fbc

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

Definition at line 389 of file clover_term_nvvm_w.h.

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

◆ param

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

Definition at line 391 of file clover_term_nvvm_w.h.

◆ tr_log_diag_

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

Definition at line 392 of file clover_term_nvvm_w.h.

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

◆ tri_dia

template<typename T , typename U >
OLattice<PComp<PTriDia<RScalar <Word<REALT> > > > > Chroma::NVVMCloverTermT< T, U >::tri_dia
private

◆ tri_off

template<typename T , typename U >
OLattice<PComp<PTriOff<RComplex<Word<REALT> > > > > Chroma::NVVMCloverTermT< T, U >::tri_off
private

◆ u

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

Definition at line 390 of file clover_term_nvvm_w.h.

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


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