CHROMA
Public Member Functions | Protected Member Functions | List of all members

Clover term. More...

#include <clover_term_base_w.h>

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

Public Member Functions

virtual ~CloverTermBase ()
 No real need for cleanup here. More...
 
const Subset & subset () const
 Subset is all here. More...
 
virtual void applySite (T &chi, const T &psi, enum PlusMinus isign, int site) const =0
 
virtual void choles (int cb)=0
 Invert. More...
 
virtual Double cholesDet (int cb) const =0
 Invert. 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 void triacntr (U &B, int mat, int cb) const =0
 Calculates Tr_D ( Gamma_mat L ) More...
 
- Public Member Functions inherited from Chroma::DslashLinearOperator< T, multi1d< U >, multi1d< U > >
virtual ~DslashLinearOperator ()
 Virtual destructor to help in cleanup. More...
 
virtual const FermBC< T, multi1d< U >, multi1d< U > > & getFermBC () const=0
 Return the fermion BC object for this linear operator. More...
 
virtual void operator() (T &d, const T &psi, enum PlusMinus isign) const
 Apply operator on both checkerboards (entire lattice) More...
 
virtual void apply (T &chi, const T &psi, enum PlusMinus isign, int cb) const=0
 Apply checkerboarded linear operator. 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

virtual const multi1d< U > & getU () const =0
 Get the u field. More...
 
virtual Real getCloverCoeff (int mu, int nu) const =0
 get the clover coefficient More...
 

Detailed Description

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

Clover term.

Definition at line 22 of file clover_term_base_w.h.

Constructor & Destructor Documentation

◆ ~CloverTermBase()

template<typename T , typename U >
virtual Chroma::CloverTermBase< T, U >::~CloverTermBase ( )
inlinevirtual

No real need for cleanup here.

Definition at line 28 of file clover_term_base_w.h.

Member Function Documentation

◆ applySite()

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

◆ choles()

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

◆ cholesDet()

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

Invert.

Computes the determinant of the term

Returns
logarithm of the determinant

Implemented in Chroma::SSEDCloverTerm, Chroma::QDPCloverTermT< T, U >, Chroma::PTXCloverTermT< T, U >, Chroma::NVVMCloverTermT< T, U >, Chroma::LLVMCloverTermT< T, U >, and Chroma::BAGELCloverTerm.

◆ deriv() [1/2]

template<typename T , typename U >
void Chroma::CloverTermBase< T, U >::deriv ( multi1d< U > &  ds_u,
const T chi,
const T psi,
enum PlusMinus  isign 
) const
virtual

Take deriv of D.

Parameters
chileft std::vector (Read)
psiright std::vector (Read)
isignD'^dag or D' ( MINUS | PLUS ) resp. (Read)
Returns
Computes $chi^\dag * \dot(D} * psi$
Parameters
chileft std::vector (Read)
psiright std::vector (Read)
isignD'^dag or D' ( MINUS | PLUS ) resp. (Read)
Returns
Computes $\chi^\dag * \dot(D} * \psi$

Reimplemented from Chroma::DslashLinearOperator< T, multi1d< U >, multi1d< U > >.

Definition at line 144 of file clover_term_base_w.h.

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

Referenced by Chroma::EvenOddPrecSLICLinOp::derivEvenEvenLinOp(), and Chroma::EvenOddPrecSLICLinOp::derivOddOddLinOp().

◆ deriv() [2/2]

template<typename T , typename U >
void Chroma::CloverTermBase< T, U >::deriv ( multi1d< U > &  ds_u,
const T chi,
const T psi,
enum PlusMinus  isign,
int  cb 
) const
virtual

Take deriv of D.

Parameters
chileft std::vector on cb (Read)
psiright std::vector on 1-cb (Read)
isignD'^dag or D' ( MINUS | PLUS ) resp. (Read)
cbCheckerboard of chi std::vector (Read)
Returns
Computes $chi^\dag * \dot(D} * psi$
Parameters
chileft std::vector on cb (Read)
psiright std::vector on 1-cb (Read)
isignD'^dag or D' ( MINUS | PLUS ) resp. (Read)
cbCheckerboard of chi std::vector (Read)
Returns
Computes $\chi^\dag * \dot(D} * \psi$

Reimplemented from Chroma::DslashLinearOperator< T, multi1d< U >, multi1d< U > >.

Definition at line 691 of file clover_term_base_w.h.

References Chroma::cb, Chroma::chi(), Chroma::END_CODE(), mu, Nd, nu, Chroma::psi, Chroma::START_CODE(), and Chroma::zero.

◆ deriv_loops()

template<typename T , typename U >
void Chroma::CloverTermBase< T, U >::deriv_loops ( const int  u,
const int  mu,
const int  cb,
U ds_u_mu,
U ds_u_nu,
const U Lambda 
) const

◆ derivMultipole() [1/2]

template<typename T , typename U >
void Chroma::CloverTermBase< T, U >::derivMultipole ( multi1d< U > &  ds_u,
const multi1d< T > &  chi,
const multi1d< T > &  psi,
enum PlusMinus  isign 
) const
virtual

Take deriv of D.

Parameters
chileft vectors (Read)
psiright vectors (Read)
isignD'^dag or D' ( MINUS | PLUS ) resp. (Read)
cbCheckerboard of chi std::vector (Read)
Returns
Computes $chi^\dag * \dot(D} * psi$

Reimplemented from Chroma::DslashLinearOperator< T, multi1d< U >, multi1d< U > >.

Definition at line 164 of file clover_term_base_w.h.

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

◆ derivMultipole() [2/2]

template<typename T , typename U >
void Chroma::CloverTermBase< T, U >::derivMultipole ( multi1d< U > &  ds_u,
const multi1d< T > &  chi,
const multi1d< T > &  psi,
enum PlusMinus  isign,
int  cb 
) const
virtual

Take deriv of D.

Parameters
chileft vectors on cb (Read)
psiright vectors on cb (Read)
isignD'^dag or D' ( MINUS | PLUS ) resp. (Read)
cbCheckerboard of chi std::vector (Read)
Returns
Computes $chi^\dag * \dot(D} * psi$

Reimplemented from Chroma::DslashLinearOperator< T, multi1d< U >, multi1d< U > >.

Definition at line 750 of file clover_term_base_w.h.

References Chroma::cb, Chroma::chi(), Chroma::END_CODE(), Chroma::i, mu, Nd, nu, Chroma::psi, Chroma::START_CODE(), and Chroma::zero.

◆ derivTrLn()

template<typename T , typename U >
void Chroma::CloverTermBase< T, U >::derivTrLn ( multi1d< U > &  ds_u,
enum PlusMinus  isign,
int  cb 
) const

Take derivative of TrLn D.

Take deriv of D using Trace Log.

Parameters
chileft std::vector on cb (Read)
psiright std::vector on 1-cb (Read)
isignD'^dag or D' ( MINUS | PLUS ) resp. (Read)
cbCheckerboard of chi std::vector (Read)
Returns
Computes $\chi^\dag * \dot(D} * \psi$

Definition at line 825 of file clover_term_base_w.h.

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

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

◆ getCloverCoeff()

template<typename T , typename U >
virtual Real Chroma::CloverTermBase< T, U >::getCloverCoeff ( int  mu,
int  nu 
) const
protectedpure virtual

◆ getU()

template<typename T , typename U >
virtual const multi1d<U>& Chroma::CloverTermBase< T, U >::getU ( ) const
protectedpure virtual

◆ nFlops()

template<typename T , typename U >
unsigned long Chroma::CloverTermBase< T, U >::nFlops ( void  ) const
virtual

◆ subset()

template<typename T , typename U >
const Subset& Chroma::CloverTermBase< T, U >::subset ( void  ) const
inlinevirtual

Subset is all here.

Implements Chroma::LinearOperator< T >.

Definition at line 31 of file clover_term_base_w.h.

◆ triacntr()

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

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