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

General Wilson-Dirac dslash. More...

#include <lwldslash_llvm_w.h>

Inheritance diagram for Chroma::LLVMWilsonDslashT< T, P, Q >:
Chroma::WilsonDslashBase< T, P, Q > Chroma::DslashLinearOperator< T, P, Q > Chroma::DiffLinearOperator< T, P, Q > Chroma::LinearOperator< T >

Classes

struct  comms_t
 

Public Member Functions

 LLVMWilsonDslashT ()
 Empty constructor. Must use create later. More...
 
 LLVMWilsonDslashT (Handle< FermState< T, P, Q > > state)
 Full constructor. More...
 
 LLVMWilsonDslashT (Handle< FermState< T, P, Q > > state, const AnisoParam_t &aniso_)
 Full constructor with anisotropy. More...
 
 LLVMWilsonDslashT (Handle< FermState< T, P, Q > > state, const multi1d< Real > &coeffs_)
 Full constructor with general coefficients. More...
 
void create (Handle< FermState< T, P, Q > > state)
 Creation routine. More...
 
void create (Handle< FermState< T, P, Q > > state, const AnisoParam_t &aniso_)
 Creation routine with anisotropy. More...
 
void create (Handle< FermState< T, P, Q > > state, const multi1d< Real > &coeffs_)
 Full constructor with general coefficients. More...
 
 ~LLVMWilsonDslashT ()
 No real need for cleanup here. More...
 
void apply (T &chi, const T &psi, enum PlusMinus isign, int cb) const
 General Wilson-Dirac dslash. More...
 
const FermBC< T, P, Q > & getFermBC () const
 Return the fermion BC object for this linear operator. More...
 
- Public Member Functions inherited from Chroma::WilsonDslashBase< T, P, Q >
virtual ~WilsonDslashBase ()
 No real need for cleanup here. More...
 
const Subset & subset () const
 Subset is all here. More...
 
virtual void deriv (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
 Take deriv of D. More...
 
virtual void deriv (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign, int cb) const
 Take deriv of D. More...
 
unsigned long nFlops () const
 Return flops performed by the operator() More...
 
- Public Member Functions inherited from Chroma::DslashLinearOperator< T, P, Q >
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...
 
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...
 
virtual void derivMultipole (P &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign, int cb) const
 
- 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 Real &epsilon) const
 Apply the derivative of the operator onto a source std::vector to some precision. 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

const multi1d< Real > & getCoeffs () const
 Get the anisotropy parameters. More...
 

Private Member Functions

void comms_setup ()
 
void setup ()
 
void comms_free ()
 
void comms_wait () const
 
void comms_send_receive (int i) const
 

Private Attributes

multi1d< Real > coeffs
 
Handle< FermBC< T, P, Q > > fbc
 
Q u
 
int innerCount [2]
 
int faceCount [2]
 
const int * innerSites [2]
 
const int * faceSites [2]
 
struct comms_t comms [8]
 
double * send_buf [8]
 
double * recv_buf [8]
 
QMP_msgmem_t msg [8][2]
 
QMP_msghandle_t mh_a [8][2]
 
QMP_msghandle_t mh [8]
 
QMP_mem_t * send_buf_mem [8]
 
QMP_mem_t * recv_buf_mem [8]
 
int comm_thread
 

Detailed Description

template<typename T, typename P, typename Q>
class Chroma::LLVMWilsonDslashT< T, P, Q >

General Wilson-Dirac dslash.

DSLASH

This routine is specific to Wilson fermions!

Description:

This routine applies the operator D' to Psi, putting the result in Chi.

      Nd-1
      ---
      \

chi(x) := > U (x) (1 - isign gamma ) psi(x+mu)

/ mu mu

mu=0

  Nd-1
  ---
  \    +
 +    >  U  (x-mu) (1 + isign gamma  ) psi(x-mu)
  /    mu                    mu
  ---
  mu=0

Definition at line 51 of file lwldslash_llvm_w.h.

Constructor & Destructor Documentation

◆ LLVMWilsonDslashT() [1/3]

template<typename T , typename P , typename Q >
Chroma::LLVMWilsonDslashT< T, P, Q >::LLVMWilsonDslashT ( Handle< FermState< T, P, Q > >  state)

Full constructor.

Definition at line 174 of file lwldslash_llvm_w.h.

References Chroma::state.

◆ LLVMWilsonDslashT() [2/3]

template<typename T , typename P , typename Q >
Chroma::LLVMWilsonDslashT< T, P, Q >::LLVMWilsonDslashT ( Handle< FermState< T, P, Q > >  state,
const AnisoParam_t aniso_ 
)

Full constructor with anisotropy.

Definition at line 181 of file lwldslash_llvm_w.h.

References Chroma::state.

◆ LLVMWilsonDslashT() [3/3]

template<typename T , typename P , typename Q >
Chroma::LLVMWilsonDslashT< T, P, Q >::LLVMWilsonDslashT ( Handle< FermState< T, P, Q > >  state,
const multi1d< Real > &  coeffs_ 
)

Full constructor with general coefficients.

Definition at line 189 of file lwldslash_llvm_w.h.

References Chroma::state.

◆ ~LLVMWilsonDslashT()

template<typename T , typename P , typename Q >
Chroma::LLVMWilsonDslashT< T, P, Q >::~LLVMWilsonDslashT ( )
inline

No real need for cleanup here.

Definition at line 81 of file lwldslash_llvm_w.h.

References Chroma::LLVMWilsonDslashT< T, P, Q >::comms_free().

Member Function Documentation

◆ comms_free()

template<typename T , typename P , typename Q >
void Chroma::LLVMWilsonDslashT< T, P, Q >::comms_free
private

Definition at line 300 of file lwldslash_llvm_w.h.

References Chroma::i.

Referenced by Chroma::LLVMWilsonDslashT< T, P, Q >::~LLVMWilsonDslashT().

◆ comms_send_receive()

template<typename T , typename P , typename Q >
void Chroma::LLVMWilsonDslashT< T, P, Q >::comms_send_receive ( int  i) const
private

Definition at line 278 of file lwldslash_llvm_w.h.

References Chroma::i, and Chroma::QDP_error_exit().

◆ comms_setup()

template<typename T , typename P , typename Q >
void Chroma::LLVMWilsonDslashT< T, P, Q >::comms_setup
private

Definition at line 219 of file lwldslash_llvm_w.h.

References Chroma::i, and Chroma::QDP_error_exit().

◆ comms_wait()

template<typename T , typename P , typename Q >
void Chroma::LLVMWilsonDslashT< T, P, Q >::comms_wait
private

Definition at line 286 of file lwldslash_llvm_w.h.

References Chroma::i, and Chroma::QDP_error_exit().

◆ create() [1/3]

template<typename T , typename P , typename Q >
void Chroma::LLVMWilsonDslashT< T, P, Q >::create ( Handle< FermState< T, P, Q > >  state)

Creation routine.

Definition at line 197 of file lwldslash_llvm_w.h.

References Nd, and Chroma::state.

◆ create() [2/3]

template<typename T , typename P , typename Q >
void Chroma::LLVMWilsonDslashT< T, P, Q >::create ( Handle< FermState< T, P, Q > >  state,
const AnisoParam_t aniso_ 
)

Creation routine with anisotropy.

Definition at line 206 of file lwldslash_llvm_w.h.

References Chroma::END_CODE(), Chroma::makeFermCoeffs(), Chroma::START_CODE(), and Chroma::state.

◆ create() [3/3]

template<typename T , typename P , typename Q >
void Chroma::LLVMWilsonDslashT< T, P, Q >::create ( Handle< FermState< T, P, Q > >  state,
const multi1d< Real > &  coeffs_ 
)

Full constructor with general coefficients.

Definition at line 393 of file lwldslash_llvm_w.h.

References mu, Nd, Chroma::state, and Chroma::u.

◆ getCoeffs()

template<typename T , typename P , typename Q >
const multi1d<Real>& Chroma::LLVMWilsonDslashT< T, P, Q >::getCoeffs ( ) const
inlineprotectedvirtual

Get the anisotropy parameters.

Implements Chroma::WilsonDslashBase< T, P, Q >.

Definition at line 100 of file lwldslash_llvm_w.h.

References Chroma::LLVMWilsonDslashT< T, P, Q >::coeffs.

◆ getFermBC()

template<typename T , typename P , typename Q >
const FermBC<T,P,Q>& Chroma::LLVMWilsonDslashT< T, P, Q >::getFermBC ( ) const
inlinevirtual

Return the fermion BC object for this linear operator.

Implements Chroma::DslashLinearOperator< T, P, Q >.

Definition at line 96 of file lwldslash_llvm_w.h.

References Chroma::LLVMWilsonDslashT< T, P, Q >::fbc.

Referenced by Chroma::LLVMWilsonDslashT< T, P, Q >::apply().

◆ setup()

template<typename T , typename P , typename Q >
void Chroma::LLVMWilsonDslashT< T, P, Q >::setup
private

Definition at line 317 of file lwldslash_llvm_w.h.

References Chroma::cb, and Chroma::isign.

Member Data Documentation

◆ coeffs

template<typename T , typename P , typename Q >
multi1d<Real> Chroma::LLVMWilsonDslashT< T, P, Q >::coeffs
private

Nd array of coefficients of terms in the action

Definition at line 109 of file lwldslash_llvm_w.h.

Referenced by Chroma::LLVMWilsonDslashT< T, P, Q >::getCoeffs().

◆ comm_thread

template<typename T , typename P , typename Q >
int Chroma::LLVMWilsonDslashT< T, P, Q >::comm_thread
private

Definition at line 134 of file lwldslash_llvm_w.h.

◆ comms

template<typename T , typename P , typename Q >
struct comms_t Chroma::LLVMWilsonDslashT< T, P, Q >::comms[8]
private

Definition at line 116 of file lwldslash_llvm_w.h.

◆ faceCount

template<typename T , typename P , typename Q >
int Chroma::LLVMWilsonDslashT< T, P, Q >::faceCount[2]
private

Definition at line 114 of file lwldslash_llvm_w.h.

◆ faceSites

template<typename T , typename P , typename Q >
const int* Chroma::LLVMWilsonDslashT< T, P, Q >::faceSites[2]
private

Definition at line 116 of file lwldslash_llvm_w.h.

◆ fbc

template<typename T , typename P , typename Q >
Handle< FermBC<T,P,Q> > Chroma::LLVMWilsonDslashT< T, P, Q >::fbc
private

Definition at line 110 of file lwldslash_llvm_w.h.

Referenced by Chroma::LLVMWilsonDslashT< T, P, Q >::getFermBC().

◆ innerCount

template<typename T , typename P , typename Q >
int Chroma::LLVMWilsonDslashT< T, P, Q >::innerCount[2]
private

Definition at line 113 of file lwldslash_llvm_w.h.

◆ innerSites

template<typename T , typename P , typename Q >
const int* Chroma::LLVMWilsonDslashT< T, P, Q >::innerSites[2]
private

Definition at line 115 of file lwldslash_llvm_w.h.

◆ mh

template<typename T , typename P , typename Q >
QMP_msghandle_t Chroma::LLVMWilsonDslashT< T, P, Q >::mh[8]
private

Definition at line 130 of file lwldslash_llvm_w.h.

◆ mh_a

template<typename T , typename P , typename Q >
QMP_msghandle_t Chroma::LLVMWilsonDslashT< T, P, Q >::mh_a[8][2]
private

Definition at line 130 of file lwldslash_llvm_w.h.

◆ msg

template<typename T , typename P , typename Q >
QMP_msgmem_t Chroma::LLVMWilsonDslashT< T, P, Q >::msg[8][2]
private

Definition at line 129 of file lwldslash_llvm_w.h.

◆ recv_buf

template<typename T , typename P , typename Q >
double* Chroma::LLVMWilsonDslashT< T, P, Q >::recv_buf[8]
private

Definition at line 128 of file lwldslash_llvm_w.h.

◆ recv_buf_mem

template<typename T , typename P , typename Q >
QMP_mem_t* Chroma::LLVMWilsonDslashT< T, P, Q >::recv_buf_mem[8]
private

Definition at line 132 of file lwldslash_llvm_w.h.

◆ send_buf

template<typename T , typename P , typename Q >
double* Chroma::LLVMWilsonDslashT< T, P, Q >::send_buf[8]
private

Definition at line 127 of file lwldslash_llvm_w.h.

◆ send_buf_mem

template<typename T , typename P , typename Q >
QMP_mem_t* Chroma::LLVMWilsonDslashT< T, P, Q >::send_buf_mem[8]
private

Definition at line 131 of file lwldslash_llvm_w.h.

◆ u

template<typename T , typename P , typename Q >
Q Chroma::LLVMWilsonDslashT< T, P, Q >::u
private

Definition at line 111 of file lwldslash_llvm_w.h.


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