CHROMA
Public Types | Public Member Functions | Private Attributes | List of all members

Symmetric even-odd preconditioned Clover-Dirac operator. More...

#include <seoprec_clover_linop_w.h>

Inheritance diagram for Chroma::SymEvenOddPrecCloverLinOp:
Chroma::SymEvenOddPrecLogDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > Chroma::SymEvenOddPrecConstDetLinearOperator< T, P, Q > Chroma::SymEvenOddPrecLinearOperator< T, P, Q > Chroma::DiffLinearOperator< T, P, Q > Chroma::LinearOperator< T >

Public Types

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

Public Member Functions

 SymEvenOddPrecCloverLinOp ()
 Partial constructor. More...
 
 SymEvenOddPrecCloverLinOp (Handle< FermState< T, P, Q > > fs, const CloverFermActParams &param_)
 Full constructor. More...
 
 ~SymEvenOddPrecCloverLinOp ()
 Destructor is automatic. More...
 
const FermBC< T, P, Q > & getFermBC () const
 Return the fermion BC object for this linear operator. More...
 
void create (Handle< FermState< T, P, Q > > fs, const CloverFermActParams &param_)
 Creation routine. More...
 
void unprecEvenEvenLinOp (T &chi, const T &psi, enum PlusMinus isign) const
 Apply the the even-even block onto a source std::vector. More...
 
void unprecEvenEvenInvLinOp (T &chi, const T &psi, enum PlusMinus isign) const
 Apply the inverse of the even-even block onto a source std::vector. More...
 
void unprecOddOddLinOp (T &chi, const T &psi, enum PlusMinus isign) const
 Apply the the odd-odd block onto a source std::vector. More...
 
void unprecOddOddInvLinOp (T &chi, const T &psi, enum PlusMinus isign) const
 Apply the inverse of the odd-odd block onto a source std::vector. More...
 
void unprecEvenOddLinOp (T &chi, const T &psi, enum PlusMinus isign) const
 Apply the the even-odd block onto a source std::vector. More...
 
void unprecOddEvenLinOp (T &chi, const T &psi, enum PlusMinus isign) const
 Apply the the odd-even block onto a source std::vector. More...
 
virtual void derivUnprecEvenEvenLinOp (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
 Apply the even-even block onto a source std::vector. More...
 
virtual void derivUnprecOddOddLinOp (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
 Apply the the odd-odd block onto a source std::vector. More...
 
virtual void derivUnprecEvenOddLinOp (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
 Apply the the even-odd block onto a source std::vector. More...
 
virtual void derivUnprecOddEvenLinOp (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
 Apply the the odd-even block onto a source std::vector. More...
 
void derivLogDetEvenEvenLinOp (P &ds_u, enum PlusMinus isign) const
 Apply the even-even block onto a source std::vector. More...
 
void derivLogDetOddOddLinOp (P &ds_u, enum PlusMinus isign) const
 Apply the odd-odd block onto a source std::vector. More...
 
void operator() (T &chi, const T &psi, enum PlusMinus isign) const override
 Apply even-odd preconditioned Clover fermion linear operator. More...
 
void deriv (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const override
 Deriv. More...
 
void derivMultipole (P &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign) const override
 Deriv. More...
 
unsigned long nFlops () const
 Return flops performed by the operator() More...
 
Double logDetEvenEvenLinOp (void) const
 Get the log det of the even even part. More...
 
Double logDetOddOddLinOp (void) const
 Get the log det of the odd odd part. More...
 
- Public Member Functions inherited from Chroma::SymEvenOddPrecLogDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >
virtual ~SymEvenOddPrecLogDetLinearOperator ()
 Virtual destructor to help with cleanup;. More...
 
const Subset & subset () const
 Only defined on the odd lattice. More...
 
virtual void derivUnprecEvenEvenInvLinOp (multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
 deriv of A^{-1} = - A^{-1} deriv(A) A^{-1} More...
 
virtual void derivUnprecOddOddInvLinOp (multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
 deriv of A^{-1} = - A^{-1} deriv(A) A^{-1} More...
 
virtual void derivEvenOddLinOp (multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const override
 Apply the the even-odd block onto a source std::vector. More...
 
virtual void derivOddEvenLinOp (multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const override
 Apply the the odd-even block onto a source std::vector. More...
 
- Public Member Functions inherited from Chroma::SymEvenOddPrecConstDetLinearOperator< T, P, Q >
virtual ~SymEvenOddPrecConstDetLinearOperator ()
 Virtual destructor to help with cleanup;. More...
 
- Public Member Functions inherited from Chroma::SymEvenOddPrecLinearOperator< T, P, Q >
virtual ~SymEvenOddPrecLinearOperator ()
 Virtual destructor to help with cleanup;. More...
 
virtual void evenOddLinOp (T &chi, const T &psi, enum PlusMinus isign) const
 Apply the EvenOdd Linop for which we have a category default) More...
 
virtual void oddEvenLinOp (T &chi, const T &psi, enum PlusMinus isign) const
 
virtual void jacobiOp (T &chi, const T &psi, enum PlusMinus isign) const
 Apply the Jacobi Operator. More...
 
virtual void unprecLinOp (T &chi, const T &psi, enum PlusMinus isign) const
 Apply the UNPRECONDITIONED operator onto a source std::vector. 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 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...
 

Private Attributes

CloverFermActParams param
 
WilsonDslash D
 
CloverTerm clov
 
CloverTerm invclov
 
double clov_apply_time
 
double clov_deriv_time
 
StopWatch swatch
 

Detailed Description

Symmetric even-odd preconditioned Clover-Dirac operator.

This routine is specific to Wilson fermions!

The kernel for Clover fermions is

 M  =  A + (d+M) - (1/2) D'

Definition at line 29 of file seoprec_clover_linop_w.h.

Member Typedef Documentation

◆ P

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

Definition at line 35 of file seoprec_clover_linop_w.h.

◆ Q

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

Definition at line 36 of file seoprec_clover_linop_w.h.

◆ T

typedef LatticeFermion Chroma::SymEvenOddPrecCloverLinOp::T

Definition at line 34 of file seoprec_clover_linop_w.h.

Constructor & Destructor Documentation

◆ SymEvenOddPrecCloverLinOp() [1/2]

Chroma::SymEvenOddPrecCloverLinOp::SymEvenOddPrecCloverLinOp ( )
inline

Partial constructor.

Definition at line 39 of file seoprec_clover_linop_w.h.

◆ SymEvenOddPrecCloverLinOp() [2/2]

Chroma::SymEvenOddPrecCloverLinOp::SymEvenOddPrecCloverLinOp ( Handle< FermState< T, P, Q > >  fs,
const CloverFermActParams param_ 
)
inline

Full constructor.

Definition at line 42 of file seoprec_clover_linop_w.h.

References create().

◆ ~SymEvenOddPrecCloverLinOp()

Chroma::SymEvenOddPrecCloverLinOp::~SymEvenOddPrecCloverLinOp ( )
inline

Destructor is automatic.

Definition at line 49 of file seoprec_clover_linop_w.h.

Member Function Documentation

◆ create()

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

Creation routine.

Creation routine with Anisotropy.

Parameters
u_gauge field (Read)
param_fermion kappa (Read)

Definition at line 16 of file seoprec_clover_linop_w.cc.

References Chroma::END_CODE(), Chroma::START_CODE(), and Chroma::CloverFermActParams::twisted_m_usedP.

Referenced by SymEvenOddPrecCloverLinOp().

◆ deriv()

void Chroma::SymEvenOddPrecCloverLinOp::deriv ( P ds_u,
const T chi,
const T psi,
enum PlusMinus  isign 
) const
overridevirtual

◆ derivLogDetEvenEvenLinOp()

void Chroma::SymEvenOddPrecCloverLinOp::derivLogDetEvenEvenLinOp ( P ds_u,
enum PlusMinus  isign 
) const
virtual

◆ derivLogDetOddOddLinOp()

void Chroma::SymEvenOddPrecCloverLinOp::derivLogDetOddOddLinOp ( P ds_u,
enum PlusMinus  isign 
) const
virtual

Apply the odd-odd block onto a source std::vector.

Apply the even-even block onto a source std::vector.

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

Definition at line 233 of file seoprec_clover_linop_w.cc.

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

◆ derivMultipole()

void Chroma::SymEvenOddPrecCloverLinOp::derivMultipole ( P ds_u,
const multi1d< T > &  chi,
const multi1d< T > &  psi,
enum PlusMinus  isign 
) const
overridevirtual

◆ derivUnprecEvenEvenLinOp()

void Chroma::SymEvenOddPrecCloverLinOp::derivUnprecEvenEvenLinOp ( P ds_u,
const T chi,
const T psi,
enum PlusMinus  isign 
) const
virtual

◆ derivUnprecEvenOddLinOp()

void Chroma::SymEvenOddPrecCloverLinOp::derivUnprecEvenOddLinOp ( P ds_u,
const T chi,
const T psi,
enum PlusMinus  isign 
) const
virtual

◆ derivUnprecOddEvenLinOp()

void Chroma::SymEvenOddPrecCloverLinOp::derivUnprecOddEvenLinOp ( P ds_u,
const T chi,
const T psi,
enum PlusMinus  isign 
) const
virtual

◆ derivUnprecOddOddLinOp()

void Chroma::SymEvenOddPrecCloverLinOp::derivUnprecOddOddLinOp ( P ds_u,
const T chi,
const T psi,
enum PlusMinus  isign 
) const
virtual

◆ getFermBC()

const FermBC<T,P,Q>& Chroma::SymEvenOddPrecCloverLinOp::getFermBC ( ) const
inlinevirtual

◆ logDetEvenEvenLinOp()

Double Chroma::SymEvenOddPrecCloverLinOp::logDetEvenEvenLinOp ( void  ) const
virtual

◆ logDetOddOddLinOp()

Double Chroma::SymEvenOddPrecCloverLinOp::logDetOddOddLinOp ( void  ) const
virtual

◆ nFlops()

unsigned long Chroma::SymEvenOddPrecCloverLinOp::nFlops ( void  ) const
virtual

Return flops performed by the operator()

Reimplemented from Chroma::LinearOperator< T >.

Definition at line 473 of file seoprec_clover_linop_w.cc.

◆ operator()()

void Chroma::SymEvenOddPrecCloverLinOp::operator() ( T chi,
const T psi,
enum PlusMinus  isign 
) const
overridevirtual

Apply even-odd preconditioned Clover fermion linear operator.

Parameters
chiPseudofermion field (Write)
psiPseudofermion field (Read)
isignFlag ( PLUS | MINUS ) (Read)

Reimplemented from Chroma::SymEvenOddPrecLinearOperator< T, P, Q >.

Definition at line 145 of file seoprec_clover_linop_w.cc.

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

◆ unprecEvenEvenInvLinOp()

void Chroma::SymEvenOddPrecCloverLinOp::unprecEvenEvenInvLinOp ( T chi,
const T psi,
enum PlusMinus  isign 
) const
virtual

◆ unprecEvenEvenLinOp()

void Chroma::SymEvenOddPrecCloverLinOp::unprecEvenEvenLinOp ( T chi,
const T psi,
enum PlusMinus  isign 
) const
virtual

◆ unprecEvenOddLinOp()

void Chroma::SymEvenOddPrecCloverLinOp::unprecEvenOddLinOp ( T chi,
const T psi,
enum PlusMinus  isign 
) const
virtual

Apply the the even-odd block onto a source std::vector.

Apply even-odd linop component.

The operator acts on the entire even sublattice

Parameters
chiPseudofermion field (Write)
psiPseudofermion field (Read)
isignFlag ( PLUS | MINUS ) (Read)

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

Definition at line 101 of file seoprec_clover_linop_w.cc.

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

◆ unprecOddEvenLinOp()

void Chroma::SymEvenOddPrecCloverLinOp::unprecOddEvenLinOp ( T chi,
const T psi,
enum PlusMinus  isign 
) const
virtual

Apply the the odd-even block onto a source std::vector.

Apply odd-even linop component.

The operator acts on the entire odd sublattice

Parameters
chiPseudofermion field (Write)
psiPseudofermion field (Read)
isignFlag ( PLUS | MINUS ) (Read)

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

Definition at line 124 of file seoprec_clover_linop_w.cc.

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

◆ unprecOddOddInvLinOp()

void Chroma::SymEvenOddPrecCloverLinOp::unprecOddOddInvLinOp ( T chi,
const T psi,
enum PlusMinus  isign 
) const
virtual

◆ unprecOddOddLinOp()

void Chroma::SymEvenOddPrecCloverLinOp::unprecOddOddLinOp ( T chi,
const T psi,
enum PlusMinus  isign 
) const
virtual

Member Data Documentation

◆ clov

CloverTerm Chroma::SymEvenOddPrecCloverLinOp::clov
private

Definition at line 136 of file seoprec_clover_linop_w.h.

◆ clov_apply_time

double Chroma::SymEvenOddPrecCloverLinOp::clov_apply_time
mutableprivate

Definition at line 138 of file seoprec_clover_linop_w.h.

◆ clov_deriv_time

double Chroma::SymEvenOddPrecCloverLinOp::clov_deriv_time
mutableprivate

Definition at line 139 of file seoprec_clover_linop_w.h.

◆ D

WilsonDslash Chroma::SymEvenOddPrecCloverLinOp::D
private

Definition at line 135 of file seoprec_clover_linop_w.h.

Referenced by getFermBC().

◆ invclov

CloverTerm Chroma::SymEvenOddPrecCloverLinOp::invclov
private

Definition at line 137 of file seoprec_clover_linop_w.h.

◆ param

CloverFermActParams Chroma::SymEvenOddPrecCloverLinOp::param
private

Definition at line 134 of file seoprec_clover_linop_w.h.

◆ swatch

StopWatch Chroma::SymEvenOddPrecCloverLinOp::swatch
mutableprivate

Definition at line 140 of file seoprec_clover_linop_w.h.


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