CHROMA
|
Clover term. More...
#include <clover_term_qdp_w.h>
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 ¶m_) |
Creation routine. More... | |
virtual void | create (Handle< FermState< T, multi1d< U >, multi1d< U > > > fs, const CloverFermActParams ¶m_, 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< U > | u |
CloverFermActParams | param |
LatticeREAL | tr_log_diag_ |
multi1d< bool > | choles_done |
PrimitiveClovTriang< REALT > * | tri |
Clover term.
Definition at line 49 of file clover_term_qdp_w.h.
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.
typedef WordType<T>::Type_t Chroma::QDPCloverTermT< T, U >::REALT |
Definition at line 53 of file clover_term_qdp_w.h.
typedef OScalar< PScalar< PScalar< RScalar<REALT> > > > Chroma::QDPCloverTermT< T, U >::RealT |
Definition at line 56 of file clover_term_qdp_w.h.
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.
|
inline |
No real need for cleanup here.
Definition at line 62 of file clover_term_qdp_w.h.
References Chroma::QDPCloverTermT< T, U >::tri.
|
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 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()().
|
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::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().
|
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.
|
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 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().
|
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 581 of file clover_term_qdp_w.h.
References Chroma::cb, Chroma::END_CODE(), Chroma::START_CODE(), and sum.
Referenced by Chroma::EvenOddPrecSLICLinOp::logDetEvenEvenLinOp().
void Chroma::QDPCloverTermT< T, U >::create | ( | Handle< FermState< T, multi1d< U >, multi1d< U > > > | fs, |
const CloverFermActParams & | param_ | ||
) |
Creation routine.
Definition at line 245 of file clover_term_qdp_w.h.
References Chroma::END_CODE(), Chroma::i, Chroma::mesField(), Nd, Chroma::START_CODE(), and Chroma::u.
Referenced by Chroma::EvenOddPrecDumbCloverFLinOp::create(), Chroma::EvenOddPrecDumbCloverDLinOp::create(), Chroma::EvenOddPrecSLICLinOp::create(), and main().
|
virtual |
Definition at line 173 of file clover_term_qdp_w.h.
References Chroma::block(), Chroma::QDPCloverTermT< T, U >::choles_done, Chroma::d, Chroma::PrimitiveClovTriang< R >::diag, Chroma::END_CODE(), Chroma::i, Nd, Chroma::PrimitiveClovTriang< R >::offd, Chroma::START_CODE(), Chroma::QDPCloverTermT< T, U >::tr_log_diag_, Chroma::QDPCloverTermT< T, U >::tri, 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 1527 of file clover_term_qdp_w.h.
References Chroma::END_CODE(), mu, nu, and Chroma::START_CODE().
|
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().
|
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.
|
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.
|
protected |
Create the clover term on cb.
f | field strength tensor F(mu,nu) (Read) |
cb | checkerboard (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().
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.
|
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.
|
private |
Definition at line 153 of file clover_term_qdp_w.h.
Referenced by Chroma::QDPCloverTermT< T, U >::create().
|
private |
Definition at line 148 of file clover_term_qdp_w.h.
Referenced by Chroma::QDPCloverTermT< T, U >::getFermBC().
|
private |
Definition at line 150 of file clover_term_qdp_w.h.
|
private |
Definition at line 151 of file clover_term_qdp_w.h.
Referenced by Chroma::QDPCloverTermT< T, U >::create().
|
private |
Definition at line 156 of file clover_term_qdp_w.h.
Referenced by Chroma::QDPCloverTermT< T, U >::create(), and Chroma::QDPCloverTermT< T, U >::~QDPCloverTermT().
|
private |
Definition at line 149 of file clover_term_qdp_w.h.
Referenced by Chroma::QDPCloverTermT< T, U >::getU().