Chroma::BAGELCloverTerm Class Reference
[Fermion linear operators]

Clover term. More...

#include <clover_term_bagel_clover.h>

Inheritance diagram for Chroma::BAGELCloverTerm:

Chroma::CloverTermBase< LatticeFermion, LatticeColorMatrix > Chroma::DslashLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > Chroma::DiffLinearOperator< T, P, Q > Chroma::LinearOperator< T > List of all members.

Public Types

typedef LatticeFermion T
typedef multi1d< LatticeColorMatrix > P
typedef multi1d< LatticeColorMatrix > Q

Public Member Functions

 BAGELCloverTerm ()
 Empty constructor. Must use create later.
 ~BAGELCloverTerm ()
 Free the internals.
void create (Handle< FermState< T, P, Q > > fs, const CloverFermActParams &param_, const BAGELCloverTerm &from)
 Create from another.
void create (Handle< FermState< T, P, Q > > fs, const CloverFermActParams &param_)
 Creation routine.
void choles (int cb)
 Invert.
Double cholesDet (int cb) const
 Invert.
void apply (LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign, int cb) const
void applySite (LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign, int site) const
void triacntr (LatticeColorMatrix &B, int mat, int cb) const
 TRIACNTR.
const FermBC< T, P, Q > & getFermBC () const
 Return the fermion BC object for this linear operator.

Protected Member Functions

void makeClov (const multi1d< LatticeColorMatrix > &f, const Real &diag_mass)
 Create the clover term on cb.
void ldagdlinv (LatticeReal &tr_log_diag, int cb)
 Invert the clover term on cb using LDL^ decomp.
void chlclovms (LatticeReal &log_diag, int cb)
 Invert the clover term on cb using Cholesky decomp.
const multi1d< LatticeColorMatrix > & getU () const
 Get the u field.
Real getCloverCoeff (int mu, int nu) const
 Returns the appropriate clover coefficient for indices mu and nu.

Private Attributes

Handle< FermBC< T, P, Q > > fbc
multi1d< LatticeColorMatrix > u
CloverFermActParams param
LatticeReal tr_log_diag_
multi1d< bool > choles_done
PrimitiveClovDiagtri_diag
PrimitiveClovOffDiagtri_off_diag

Detailed Description

Clover term.

Definition at line 45 of file clover_term_bagel_clover.h.


Member Typedef Documentation

typedef multi1d<LatticeColorMatrix> Chroma::BAGELCloverTerm::P

Definition at line 50 of file clover_term_bagel_clover.h.

typedef multi1d<LatticeColorMatrix> Chroma::BAGELCloverTerm::Q

Definition at line 51 of file clover_term_bagel_clover.h.

typedef LatticeFermion Chroma::BAGELCloverTerm::T

Definition at line 49 of file clover_term_bagel_clover.h.


Constructor & Destructor Documentation

Chroma::BAGELCloverTerm::BAGELCloverTerm (  ) 

Empty constructor. Must use create later.

Definition at line 80 of file clover_term_bagel_clover.cc.

References Chroma::DEFAULT, tri_diag, and tri_off_diag.

Chroma::BAGELCloverTerm::~BAGELCloverTerm (  ) 

Free the internals.

Definition at line 125 of file clover_term_bagel_clover.cc.

References tri_diag, and tri_off_diag.


Member Function Documentation

void Chroma::BAGELCloverTerm::apply ( LatticeFermion &  chi,
const LatticeFermion &  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:
chi result (Write)
psi source (Read)
isign D'^dag or D' ( MINUS | PLUS ) resp. (Read)
cb Checkerboard of OUTPUT vector (Read)

Implements Chroma::DslashLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >.

Definition at line 971 of file clover_term_bagel_clover.cc.

References END_CODE, getFermBC(), START_CODE, tri_diag, and tri_off_diag.

Referenced by create().

void Chroma::BAGELCloverTerm::applySite ( LatticeFermion &  chi,
const LatticeFermion &  psi,
enum PlusMinus  isign,
int  site 
) 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:
chi result (Write)
psi source (Read)
isign D'^dag or D' ( MINUS | PLUS ) resp. (Read)
cb Checkerboard of OUTPUT vector (Read)

Implements Chroma::CloverTermBase< LatticeFermion, LatticeColorMatrix >.

Definition at line 1044 of file clover_term_bagel_clover.cc.

References END_CODE, START_CODE, tri_diag, and tri_off_diag.

Referenced by create().

void Chroma::BAGELCloverTerm::chlclovms ( LatticeReal &  tr_log_diag,
int  cb 
) [protected]

Invert the clover term on cb using Cholesky decomp.

CHLCLOVMS - Cholesky decompose the clover mass term and uses it to compute lower(A^-1) = lower((L.L^dag)^-1) Adapted from Golub and Van Loan, Matrix Computations, 2nd, Sec 4.2.4

Arguments:

Parameters:
DetP flag whether to compute determinant (Read)
logdet logarithm of the determinant (Write)
cb checkerboard of work (Read)

Definition at line 789 of file clover_term_bagel_clover.cc.

References choles_done, END_CODE, START_CODE, tri_diag, and tri_off_diag.

void Chroma::BAGELCloverTerm::choles ( int  cb  )  [virtual]

Invert.

Parameters:
cb checkerboard of work (Read)

Implements Chroma::CloverTermBase< LatticeFermion, LatticeColorMatrix >.

Definition at line 540 of file clover_term_bagel_clover.cc.

References END_CODE, ldagdlinv(), START_CODE, and tr_log_diag_.

Double Chroma::BAGELCloverTerm::cholesDet ( int  cb  )  const [virtual]

Invert.

Parameters:
cb checkerboard of work (Read)
Returns:
logarithm of the determinant

Implements Chroma::CloverTermBase< LatticeFermion, LatticeColorMatrix >.

Definition at line 558 of file clover_term_bagel_clover.cc.

References choles_done, END_CODE, START_CODE, and tr_log_diag_.

void Chroma::BAGELCloverTerm::create ( Handle< FermState< T, P, Q > >  fs,
const CloverFermActParams param_ 
)

Creation routine.

Definition at line 136 of file clover_term_bagel_clover.cc.

References Chroma::AnisoParam_t::anisoP, Chroma::CloverFermActParams::anisoParam, apply(), applySite(), choles_done, Chroma::CloverFermActParams::clovCoeffR, Chroma::CloverFermActParams::clovCoeffT, END_CODE, fbc, makeClov(), Chroma::CloverFermActParams::Mass, Chroma::mesField(), Chroma::AnisoParam_t::nu, param, Chroma::PLUS, START_CODE, u, Chroma::write(), and Chroma::AnisoParam_t::xi_0.

void Chroma::BAGELCloverTerm::create ( Handle< FermState< T, P, Q > >  fs,
const CloverFermActParams param_,
const BAGELCloverTerm from 
)

Create from another.

Definition at line 202 of file clover_term_bagel_clover.cc.

References Chroma::AnisoParam_t::anisoP, Chroma::CloverFermActParams::anisoParam, Chroma::block(), choles_done, Chroma::CloverFermActParams::clovCoeffR, Chroma::CloverFermActParams::clovCoeffT, END_CODE, fbc, Chroma::CloverFermActParams::Mass, Chroma::AnisoParam_t::nu, param, START_CODE, tr_log_diag_, tri_diag, tri_off_diag, u, and Chroma::AnisoParam_t::xi_0.

Real Chroma::BAGELCloverTerm::getCloverCoeff ( int  mu,
int  nu 
) const [protected, virtual]

Returns the appropriate clover coefficient for indices mu and nu.

Implements Chroma::CloverTermBase< LatticeFermion, LatticeColorMatrix >.

Definition at line 1486 of file clover_term_bagel_clover.cc.

References Chroma::AnisoParam_t::anisoP, Chroma::CloverFermActParams::anisoParam, Chroma::CloverFermActParams::clovCoeffR, Chroma::CloverFermActParams::clovCoeffT, END_CODE, param, START_CODE, and Chroma::AnisoParam_t::t_dir.

Referenced by makeClov().

const FermBC<T,P,Q>& Chroma::BAGELCloverTerm::getFermBC (  )  const [inline, virtual]

Return the fermion BC object for this linear operator.

Implements Chroma::DslashLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >.

Definition at line 106 of file clover_term_bagel_clover.h.

References fbc.

Referenced by apply().

const multi1d<LatticeColorMatrix>& Chroma::BAGELCloverTerm::getU (  )  const [inline, protected, virtual]

Get the u field.

Implements Chroma::CloverTermBase< LatticeFermion, LatticeColorMatrix >.

Definition at line 123 of file clover_term_bagel_clover.h.

References u.

void Chroma::BAGELCloverTerm::ldagdlinv ( LatticeReal &  tr_log_diag,
int  cb 
) [protected]

Invert the clover term on cb using LDL^ decomp.

An LDL^ decomposition and inversion?

Definition at line 575 of file clover_term_bagel_clover.cc.

References Chroma::block(), choles_done, END_CODE, l, START_CODE, tri_diag, and tri_off_diag.

Referenced by choles().

void Chroma::BAGELCloverTerm::makeClov ( const multi1d< LatticeColorMatrix > &  f,
const Real &  diag_mass 
) [protected]

Create the clover term on cb.

Parameters:
f field strength tensor F(mu,nu) (Read)
cb checkerboard (Read)

Definition at line 348 of file clover_term_bagel_clover.cc.

References END_CODE, getCloverCoeff(), START_CODE, tri_diag, and tri_off_diag.

Referenced by create().


Member Data Documentation

multi1d<bool> Chroma::BAGELCloverTerm::choles_done [private]

Definition at line 134 of file clover_term_bagel_clover.h.

Referenced by chlclovms(), cholesDet(), create(), and ldagdlinv().

Handle< FermBC<T,P,Q> > Chroma::BAGELCloverTerm::fbc [private]

Definition at line 129 of file clover_term_bagel_clover.h.

Referenced by create(), and getFermBC().

CloverFermActParams Chroma::BAGELCloverTerm::param [private]

Definition at line 131 of file clover_term_bagel_clover.h.

Referenced by create(), and getCloverCoeff().

LatticeReal Chroma::BAGELCloverTerm::tr_log_diag_ [private]

Definition at line 132 of file clover_term_bagel_clover.h.

Referenced by choles(), cholesDet(), and create().

PrimitiveClovDiag* Chroma::BAGELCloverTerm::tri_diag [private]

Definition at line 136 of file clover_term_bagel_clover.h.

Referenced by apply(), applySite(), BAGELCloverTerm(), chlclovms(), create(), ldagdlinv(), makeClov(), triacntr(), and ~BAGELCloverTerm().

PrimitiveClovOffDiag* Chroma::BAGELCloverTerm::tri_off_diag [private]

Definition at line 137 of file clover_term_bagel_clover.h.

Referenced by apply(), applySite(), BAGELCloverTerm(), chlclovms(), create(), ldagdlinv(), makeClov(), triacntr(), and ~BAGELCloverTerm().

multi1d<LatticeColorMatrix> Chroma::BAGELCloverTerm::u [private]

Definition at line 130 of file clover_term_bagel_clover.h.

Referenced by create(), and getU().


The documentation for this class was generated from the following files:
Generated on Sun Nov 22 04:40:08 2009 for CHROMA by  doxygen 1.4.7