CHROMA
|
#include <clover_term_nvvm_w.h>
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 ¶m_) |
Creation routine. More... | |
virtual void | create (Handle< FermState< T, multi1d< U >, multi1d< U > > > fs, const CloverFermActParams ¶m_, 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 |
![]() | |
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... | |
![]() | |
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 | ~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... | |
![]() | |
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< U > | u |
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 |
Definition at line 298 of file clover_term_nvvm_w.h.
typedef OLattice< PScalar< PScalar< RScalar< Word< REALT> > > > > Chroma::NVVMCloverTermT< T, U >::LatticeREAL |
Definition at line 304 of file clover_term_nvvm_w.h.
typedef WordType<T>::Type_t Chroma::NVVMCloverTermT< T, U >::REALT |
Definition at line 302 of file clover_term_nvvm_w.h.
typedef OScalar< PScalar< PScalar< RScalar< Word< REALT> > > > > Chroma::NVVMCloverTermT< T, U >::RealT |
Definition at line 305 of file clover_term_nvvm_w.h.
Chroma::NVVMCloverTermT< T, U >::NVVMCloverTermT |
Empty constructor. Must use create later.
Definition at line 405 of file clover_term_nvvm_w.h.
|
inline |
No real need for cleanup here.
Definition at line 311 of file clover_term_nvvm_w.h.
|
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:
chi | result (Write) |
psi | source (Read) |
isign | D'^dag or D' ( MINUS | PLUS ) resp. (Read) |
cb | Checkerboard 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().
|
virtual |
Implements Chroma::CloverTermBase< T, U >.
Definition at line 1953 of file clover_term_nvvm_w.h.
References Chroma::QDP_error_exit().
|
virtual |
Computes the inverse of the term on cb using Cholesky.
Invert.
cb | checkerboard 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().
|
virtual |
Computes the inverse of the term on cb using Cholesky.
Invert.
cb | checkerboard of work (Read) |
Computes the inverse of the term on cb using Cholesky
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.
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.
|
virtual |
Definition at line 409 of file clover_term_nvvm_w.h.
References Chroma::NVVMCloverTermT< T, U >::choles_done, Chroma::END_CODE(), Chroma::i, Nd, Chroma::START_CODE(), Chroma::NVVMCloverTermT< T, U >::tr_log_diag_, Chroma::NVVMCloverTermT< T, U >::tri_dia, Chroma::NVVMCloverTermT< T, U >::tri_off, and Chroma::u.
|
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().
|
inline |
Definition at line 365 of file clover_term_nvvm_w.h.
References Chroma::NVVMCloverTermT< T, U >::tri_dia.
|
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.
|
inline |
Definition at line 366 of file clover_term_nvvm_w.h.
References Chroma::NVVMCloverTermT< T, U >::tri_off.
|
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.
|
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.
|
protected |
Create the clover term on cb.
f | field strength tensor F(mu,nu) (Read) |
cb | checkerboard (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().
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().
|
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.
|
private |
Definition at line 394 of file clover_term_nvvm_w.h.
Referenced by Chroma::NVVMCloverTermT< T, U >::create().
|
private |
Definition at line 389 of file clover_term_nvvm_w.h.
Referenced by Chroma::NVVMCloverTermT< T, U >::getFermBC().
|
private |
Definition at line 391 of file clover_term_nvvm_w.h.
|
private |
Definition at line 392 of file clover_term_nvvm_w.h.
Referenced by Chroma::NVVMCloverTermT< T, U >::create().
|
private |
Definition at line 397 of file clover_term_nvvm_w.h.
Referenced by Chroma::NVVMCloverTermT< T, U >::create(), and Chroma::NVVMCloverTermT< T, U >::getDiaId().
|
private |
Definition at line 398 of file clover_term_nvvm_w.h.
Referenced by Chroma::NVVMCloverTermT< T, U >::create(), and Chroma::NVVMCloverTermT< T, U >::getOffId().
|
private |
Definition at line 390 of file clover_term_nvvm_w.h.
Referenced by Chroma::NVVMCloverTermT< T, U >::getU().