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

Even-odd preconditioned SLIC-Dirac operator. More...

#include <eoprec_slic_linop_w.h>

Inheritance diagram for Chroma::EvenOddPrecSLICLinOp:
Chroma::EvenOddPrecLogDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > Chroma::EvenOddPrecLinearOperator< 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

 EvenOddPrecSLICLinOp ()
 Partial constructor. More...
 
 EvenOddPrecSLICLinOp (Handle< FermState< T, P, Q > > fs, const CloverFermActParams &param_)
 Full constructor. More...
 
 ~EvenOddPrecSLICLinOp ()
 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 evenEvenLinOp (LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
 Apply the the even-even block onto a source std::vector. More...
 
void evenEvenInvLinOp (LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
 Apply the inverse of the even-even block onto a source std::vector. More...
 
void evenOddLinOp (LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
 Apply the the even-odd block onto a source std::vector. More...
 
void oddEvenLinOp (LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
 Apply the the odd-even block onto a source std::vector. More...
 
void oddOddLinOp (LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
 Apply the the odd-odd block onto a source std::vector. More...
 
void operator() (LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
 Apply even-odd preconditioned Clover fermion linear operator. More...
 
void derivEvenEvenLinOp (multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
 Apply the even-even block onto a source std::vector. More...
 
void derivLogDetEvenEvenLinOp (multi1d< LatticeColorMatrix > &ds_u, enum PlusMinus isign) const
 Apply the even-even block onto a source std::vector. More...
 
void derivEvenOddLinOp (multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
 Apply the the even-odd block onto a source std::vector. More...
 
void derivOddEvenLinOp (multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
 Apply the the odd-even block onto a source std::vector. More...
 
void derivOddOddLinOp (multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
 Apply the the odd-odd block onto a source std::vector. 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...
 
- Public Member Functions inherited from Chroma::EvenOddPrecLogDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >
virtual ~EvenOddPrecLogDetLinearOperator ()
 Virtual destructor to help with cleanup;. More...
 
const Subset & subset () const
 Only defined on the odd lattice. More...
 
virtual void deriv (multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
 Apply the derivative of the operator onto a source std::vector. More...
 
virtual void derivMultipole (multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
 Apply the derivative of the operator onto a source std::vector. More...
 
virtual void derivEvenEvenLinOpMP (multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
 
virtual void derivEvenOddLinOpMP (multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
 
virtual void derivOddEvenLinOpMP (multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
 
virtual void derivOddOddLinOpMP (multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
 
- Public Member Functions inherited from Chroma::EvenOddPrecLinearOperator< T, P, Q >
virtual ~EvenOddPrecLinearOperator ()
 Virtual destructor to help with cleanup;. More...
 
virtual void unprecLinOp (T &chi, const T &psi, enum PlusMinus isign) const
 Apply the UNPRECONDITIONED operator onto a source std::vector. More...
 
virtual void derivUnprecLinOp (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
 
virtual unsigned long evenEvenNFlops () const
 Return flops performed by the evenEvenLinOp. More...
 
virtual unsigned long evenOddNFlops () const
 Return flops performed by the evenOddLinOp. More...
 
virtual unsigned long oddEvenNFlops () const
 Return flops performed by the oddEvenLinOp. More...
 
virtual unsigned long oddOddNFlops () const
 Return flops performed by the oddOddLinOp. More...
 
virtual unsigned long evenEvenInvNFlops () const
 Return flops performed by the evenEvenInvLinOp. 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

Handle< FermState< T, P, Q > > slic_fs
 
Handle< FermState< T, P, Q > > fs_pl
 
Handle< FermState< T, P, Q > > fs_mn
 
CloverFermActParams param
 
WilsonDslash D_pl
 
WilsonDslash D_mn
 
CloverTerm clov
 
CloverTerm invclov
 

Detailed Description

Even-odd preconditioned SLIC-Dirac operator.

This routine is specific to Wilson fermions!

The kernel for SLIC fermions is

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

Definition at line 30 of file eoprec_slic_linop_w.h.

Member Typedef Documentation

◆ P

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

Definition at line 36 of file eoprec_slic_linop_w.h.

◆ Q

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

Definition at line 37 of file eoprec_slic_linop_w.h.

◆ T

typedef LatticeFermion Chroma::EvenOddPrecSLICLinOp::T

Definition at line 35 of file eoprec_slic_linop_w.h.

Constructor & Destructor Documentation

◆ EvenOddPrecSLICLinOp() [1/2]

Chroma::EvenOddPrecSLICLinOp::EvenOddPrecSLICLinOp ( )
inline

Partial constructor.

Definition at line 40 of file eoprec_slic_linop_w.h.

◆ EvenOddPrecSLICLinOp() [2/2]

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

Full constructor.

Definition at line 55 of file eoprec_slic_linop_w.cc.

References create().

◆ ~EvenOddPrecSLICLinOp()

Chroma::EvenOddPrecSLICLinOp::~EvenOddPrecSLICLinOp ( )
inline

Destructor is automatic.

Definition at line 47 of file eoprec_slic_linop_w.h.

Member Function Documentation

◆ create()

void Chroma::EvenOddPrecSLICLinOp::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 68 of file eoprec_slic_linop_w.cc.

References Chroma::CloverFermActParams::anisoParam, Chroma::QDPCloverTermT< T, U >::choles(), clov, Chroma::QDPCloverTermT< T, U >::create(), Chroma::QDPWilsonDslashT< T, P, Q >::create(), D_mn, D_pl, Chroma::END_CODE(), fs_mn, fs_pl, invclov, mu, Nd, param, and Chroma::START_CODE().

Referenced by EvenOddPrecSLICLinOp().

◆ derivEvenEvenLinOp()

void Chroma::EvenOddPrecSLICLinOp::derivEvenEvenLinOp ( multi1d< LatticeColorMatrix > &  ds_u,
const LatticeFermion &  chi,
const LatticeFermion &  psi,
enum PlusMinus  isign 
) const
virtual

◆ derivEvenOddLinOp()

void Chroma::EvenOddPrecSLICLinOp::derivEvenOddLinOp ( multi1d< LatticeColorMatrix > &  ds_u,
const LatticeFermion &  chi,
const LatticeFermion &  psi,
enum PlusMinus  isign 
) const
virtual

◆ derivLogDetEvenEvenLinOp()

void Chroma::EvenOddPrecSLICLinOp::derivLogDetEvenEvenLinOp ( multi1d< LatticeColorMatrix > &  ds_u,
enum PlusMinus  isign 
) const
virtual

◆ derivOddEvenLinOp()

void Chroma::EvenOddPrecSLICLinOp::derivOddEvenLinOp ( multi1d< LatticeColorMatrix > &  ds_u,
const LatticeFermion &  chi,
const LatticeFermion &  psi,
enum PlusMinus  isign 
) const
virtual

◆ derivOddOddLinOp()

void Chroma::EvenOddPrecSLICLinOp::derivOddOddLinOp ( multi1d< LatticeColorMatrix > &  ds_u,
const LatticeFermion &  chi,
const LatticeFermion &  psi,
enum PlusMinus  isign 
) const
virtual

◆ evenEvenInvLinOp()

void Chroma::EvenOddPrecSLICLinOp::evenEvenInvLinOp ( LatticeFermion &  chi,
const LatticeFermion &  psi,
enum PlusMinus  isign 
) const
virtual

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

Implements Chroma::EvenOddPrecLinearOperator< T, P, Q >.

Definition at line 130 of file eoprec_slic_linop_w.cc.

References Chroma::QDPCloverTermT< T, U >::apply(), Chroma::chi(), invclov, Chroma::isign, and Chroma::psi.

◆ evenEvenLinOp()

void Chroma::EvenOddPrecSLICLinOp::evenEvenLinOp ( LatticeFermion &  chi,
const LatticeFermion &  psi,
enum PlusMinus  isign 
) const
virtual

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

Implements Chroma::EvenOddPrecLinearOperator< T, P, Q >.

Definition at line 121 of file eoprec_slic_linop_w.cc.

References Chroma::QDPCloverTermT< T, U >::apply(), Chroma::chi(), clov, Chroma::isign, and Chroma::psi.

◆ evenOddLinOp()

void Chroma::EvenOddPrecSLICLinOp::evenOddLinOp ( LatticeFermion &  chi,
const LatticeFermion &  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::EvenOddPrecLinearOperator< T, P, Q >.

Definition at line 146 of file eoprec_slic_linop_w.cc.

References Chroma::QDPWilsonDslashT< T, P, Q >::apply(), Chroma::chi(), D_mn, D_pl, Chroma::END_CODE(), Chroma::isign, Chroma::MINUS, Chroma::PLUS, Chroma::psi, Chroma::START_CODE(), and Chroma::tmp.

◆ getFermBC()

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

◆ logDetEvenEvenLinOp()

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

◆ nFlops()

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

Return flops performed by the operator()

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

Definition at line 344 of file eoprec_slic_linop_w.cc.

References clov, D_pl, Chroma::CloverTermBase< T, U >::nFlops(), and Chroma::WilsonDslashBase< T, P, Q >::nFlops().

◆ oddEvenLinOp()

void Chroma::EvenOddPrecSLICLinOp::oddEvenLinOp ( LatticeFermion &  chi,
const LatticeFermion &  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::EvenOddPrecLinearOperator< T, P, Q >.

Definition at line 173 of file eoprec_slic_linop_w.cc.

References Chroma::QDPWilsonDslashT< T, P, Q >::apply(), Chroma::chi(), D_mn, D_pl, Chroma::END_CODE(), Chroma::isign, Chroma::MINUS, Chroma::PLUS, Chroma::psi, Chroma::START_CODE(), and Chroma::tmp.

◆ oddOddLinOp()

void Chroma::EvenOddPrecSLICLinOp::oddOddLinOp ( LatticeFermion &  chi,
const LatticeFermion &  psi,
enum PlusMinus  isign 
) const
virtual

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

Implements Chroma::EvenOddPrecLinearOperator< T, P, Q >.

Definition at line 112 of file eoprec_slic_linop_w.cc.

References Chroma::QDPCloverTermT< T, U >::apply(), Chroma::chi(), clov, Chroma::isign, and Chroma::psi.

◆ operator()()

void Chroma::EvenOddPrecSLICLinOp::operator() ( LatticeFermion &  chi,
const LatticeFermion &  psi,
enum PlusMinus  isign 
) const
virtual

Apply even-odd preconditioned Clover fermion linear operator.

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

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

Definition at line 198 of file eoprec_slic_linop_w.cc.

References Chroma::QDPCloverTermT< T, U >::apply(), Chroma::QDPWilsonDslashT< T, P, Q >::apply(), Chroma::chi(), clov, D_mn, D_pl, Chroma::END_CODE(), invclov, Chroma::isign, Chroma::MINUS, Chroma::PLUS, Chroma::psi, Chroma::START_CODE(), tmp2, and tmp3.

Member Data Documentation

◆ clov

CloverTerm Chroma::EvenOddPrecSLICLinOp::clov
private

◆ D_mn

WilsonDslash Chroma::EvenOddPrecSLICLinOp::D_mn
private

Definition at line 115 of file eoprec_slic_linop_w.h.

Referenced by create(), evenOddLinOp(), oddEvenLinOp(), and operator()().

◆ D_pl

WilsonDslash Chroma::EvenOddPrecSLICLinOp::D_pl
private

◆ fs_mn

Handle< FermState<T,P,Q> > Chroma::EvenOddPrecSLICLinOp::fs_mn
private

Definition at line 112 of file eoprec_slic_linop_w.h.

Referenced by create().

◆ fs_pl

Handle< FermState<T,P,Q> > Chroma::EvenOddPrecSLICLinOp::fs_pl
private

Definition at line 111 of file eoprec_slic_linop_w.h.

Referenced by create().

◆ invclov

CloverTerm Chroma::EvenOddPrecSLICLinOp::invclov
private

◆ param

CloverFermActParams Chroma::EvenOddPrecSLICLinOp::param
private

Definition at line 113 of file eoprec_slic_linop_w.h.

Referenced by create().

◆ slic_fs

Handle< FermState<T,P,Q> > Chroma::EvenOddPrecSLICLinOp::slic_fs
private

Definition at line 110 of file eoprec_slic_linop_w.h.

Referenced by derivEvenOddLinOp(), and derivOddEvenLinOp().


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