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

4D Even Odd preconditioned NEF domain-wall Dirac operator More...

#include <eoprec_nef_general_linop_array_w.h>

Inheritance diagram for Chroma::EvenOddPrecGenNEFDWLinOpArray:
Chroma::EvenOddPrecDWLikeLinOpBaseArray< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > Chroma::EvenOddPrecConstDetLinearOperatorArray< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > Chroma::EvenOddPrecLinearOperatorArray< T, P, Q > Chroma::DiffLinearOperatorArray< T, P, Q > Chroma::LinearOperatorArray< T >

Public Types

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

Public Member Functions

 EvenOddPrecGenNEFDWLinOpArray (Handle< FermState< T, P, Q > > fs, const Real &WilsonMass_, const multi1d< Real > &b5_, const multi1d< Real > &c5_, const Real &m_q_, int N5_)
 
 EvenOddPrecGenNEFDWLinOpArray (Handle< FermState< T, P, Q > > fs, const Real &WilsonMass_, const Real &b5_, const Real &c5_, const Real &m_q_, int N5_)
 
void create (Handle< FermState< T, P, Q > > fs, const Real &WilsonMass_, const Real &m_q_, const multi1d< Real > &b5_, const multi1d< Real > &c5_, int N5_)
 Creation routine. More...
 
const FermBC< T, P, Q > & getFermBC () const
 set b5 and c5 given kappa and a5 More...
 
 ~EvenOddPrecGenNEFDWLinOpArray ()
 Destructor is automatic. More...
 
int size () const
 Length of DW flavor index/space. More...
 
void evenEvenLinOp (multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
 Apply the even-even block onto a source std::vector. More...
 
void evenEvenInvLinOp (multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
 Apply the inverse of the even-even block onto a source std::vector. More...
 
void evenOddLinOp (multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
 Apply the the even-odd block onto a source std::vector. More...
 
void oddEvenLinOp (multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
 Apply the the odd-even block onto a source std::vector. More...
 
void oddOddLinOp (multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
 Apply the the odd-odd block onto a source std::vector. More...
 
void oddOddInvLinOp (multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
 Apply the inverse of the odd-odd block onto a source std::vector. More...
 
void derivEvenEvenLinOp (multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
 Apply the even-even block onto a source std::vector. More...
 
void derivOddOddLinOp (multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
 Apply the the odd-odd block onto a source std::vector. More...
 
void derivEvenOddLinOp (multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< 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 multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
 Apply the the odd-even block onto a source std::vector. More...
 
- Public Member Functions inherited from Chroma::EvenOddPrecConstDetLinearOperatorArray< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >
virtual ~EvenOddPrecConstDetLinearOperatorArray ()
 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 multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
 Apply the operator onto a source std::vector. More...
 
- Public Member Functions inherited from Chroma::EvenOddPrecLinearOperatorArray< T, P, Q >
virtual ~EvenOddPrecLinearOperatorArray ()
 Virtual destructor to help with cleanup;. More...
 
virtual void operator() (multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign) const
 Apply the operator onto a source std::vector. More...
 
virtual void unprecLinOp (multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign) const
 Apply the UNPRECONDITIONED operator onto a source std::vector. More...
 
virtual void derivUnprecLinOp (P &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign) const
 
virtual unsigned long evenEvenNFlops () const
 Apply the derivative of the UNPRECONDITIONED operator onto a source std::vector. 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...
 
virtual unsigned long nFlops () const
 Return flops performed by the operator() More...
 
- Public Member Functions inherited from Chroma::DiffLinearOperatorArray< T, P, Q >
virtual ~DiffLinearOperatorArray ()
 Virtual destructor to help with cleanup;. More...
 
virtual void deriv (P &ds_u, const multi1d< T > &chi, const multi1d< 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::LinearOperatorArray< T >
virtual ~LinearOperatorArray ()
 Virtual destructor to help with cleanup;. More...
 
virtual void operator() (multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign, Real epsilon) const
 Apply the operator onto a source std::vector to some precision. More...
 

Protected Member Functions

void applyDiag (multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, int cb) const
 Apply the even-even (odd-odd) coupling piece of the domain-wall fermion operator. More...
 
void applyDiagInv (multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, int cb) const
 Apply the inverse even-even (odd-odd) coupling piece of the domain-wall fermion operator. More...
 
void applyOffDiag (multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, int cb) const
 Apply the even-odd (odd-even) coupling piece of the NEF operator. More...
 
void Dminus (LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign, int s5) const
 Apply the Dminus operator on a lattice fermion. See my notes ;-) More...
 
void applyDerivOffDiag (multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, int cb) const
 Apply the even-odd (odd-even) coupling piece of the NEF operator. More...
 
 EvenOddPrecGenNEFDWLinOpArray ()
 Partial constructor. More...
 
void operator= (const EvenOddPrecGenNEFDWLinOpArray &)
 Partial constructor. More...
 

Private Attributes

Real WilsonMass
 
multi1d< Real > c5
 
multi1d< Real > b5
 
Real m_q
 
int N5
 
multi1d< Real > f_plus
 
multi1d< Real > f_minus
 
multi1d< Real > l
 
multi1d< Real > r
 
multi1d< Real > a
 
multi1d< Real > b
 
multi1d< Real > d
 
WilsonDslashArray D
 

Detailed Description

4D Even Odd preconditioned NEF domain-wall Dirac operator

This routine is specific to Wilson fermions!

Definition at line 23 of file eoprec_nef_general_linop_array_w.h.

Member Typedef Documentation

◆ P

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

Definition at line 29 of file eoprec_nef_general_linop_array_w.h.

◆ Q

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

Definition at line 30 of file eoprec_nef_general_linop_array_w.h.

◆ T

Definition at line 28 of file eoprec_nef_general_linop_array_w.h.

Constructor & Destructor Documentation

◆ EvenOddPrecGenNEFDWLinOpArray() [1/3]

Chroma::EvenOddPrecGenNEFDWLinOpArray::EvenOddPrecGenNEFDWLinOpArray ( Handle< FermState< T, P, Q > >  fs,
const Real &  WilsonMass_,
const multi1d< Real > &  b5_,
const multi1d< Real > &  c5_,
const Real &  m_q_,
int  N5_ 
)
inline

Definition at line 33 of file eoprec_nef_general_linop_array_w.h.

References create().

◆ EvenOddPrecGenNEFDWLinOpArray() [2/3]

Chroma::EvenOddPrecGenNEFDWLinOpArray::EvenOddPrecGenNEFDWLinOpArray ( Handle< FermState< T, P, Q > >  fs,
const Real &  WilsonMass_,
const Real &  b5_,
const Real &  c5_,
const Real &  m_q_,
int  N5_ 
)
inline

Full constructor Set b5 = 1.0 and c5=0.0 to get Shamir DWF with a5=1. Set b5 = 1.0 and c5=1.0 to get Borichi DWF.

Definition at line 49 of file eoprec_nef_general_linop_array_w.h.

References create(), and Chroma::i.

◆ ~EvenOddPrecGenNEFDWLinOpArray()

Chroma::EvenOddPrecGenNEFDWLinOpArray::~EvenOddPrecGenNEFDWLinOpArray ( )
inline

Destructor is automatic.

Definition at line 82 of file eoprec_nef_general_linop_array_w.h.

◆ EvenOddPrecGenNEFDWLinOpArray() [3/3]

Chroma::EvenOddPrecGenNEFDWLinOpArray::EvenOddPrecGenNEFDWLinOpArray ( )
inlineprotected

Partial constructor.

Definition at line 241 of file eoprec_nef_general_linop_array_w.h.

Member Function Documentation

◆ applyDerivOffDiag()

void Chroma::EvenOddPrecGenNEFDWLinOpArray::applyDerivOffDiag ( multi1d< LatticeColorMatrix > &  ds_u,
const multi1d< LatticeFermion > &  chi,
const multi1d< LatticeFermion > &  psi,
enum PlusMinus  isign,
int  cb 
) const
protected

Apply the even-odd (odd-even) coupling piece of the NEF operator.

Parameters
ds_uconjugate momenta (Read)
psileft pseudofermion field (Read)
psiright pseudofermion field (Read)
isignFlag ( PLUS | MINUS ) (Read)
cbcheckerboard ( 0 | 1 ) (Read)

Definition at line 686 of file eoprec_nef_general_linop_array_w.cc.

References Chroma::cb, chi, END_CODE, Chroma::isign, Chroma::MINUS, N5, Nd, Chroma::PLUS, psi, s, START_CODE, tmp, and Chroma::zero.

Referenced by derivEvenOddLinOp(), and derivOddEvenLinOp().

◆ derivEvenEvenLinOp()

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

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

Reimplemented from Chroma::EvenOddPrecConstDetLinearOperatorArray< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >.

Definition at line 141 of file eoprec_nef_general_linop_array_w.h.

References Nd, and Chroma::zero.

◆ derivEvenOddLinOp()

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

◆ derivOddEvenLinOp()

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

◆ derivOddOddLinOp()

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

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

Reimplemented from Chroma::EvenOddPrecConstDetLinearOperatorArray< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >.

Definition at line 150 of file eoprec_nef_general_linop_array_w.h.

References Nd, and Chroma::zero.

◆ Dminus()

void Chroma::EvenOddPrecGenNEFDWLinOpArray::Dminus ( LatticeFermion &  chi,
const LatticeFermion &  psi,
enum PlusMinus  isign,
int  s5 
) const
protectedvirtual

Apply the Dminus operator on a lattice fermion. See my notes ;-)

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

Definition at line 666 of file eoprec_nef_general_linop_array_w.cc.

References chi, Chroma::isign, and psi.

◆ evenEvenInvLinOp()

void Chroma::EvenOddPrecGenNEFDWLinOpArray::evenEvenInvLinOp ( multi1d< LatticeFermion > &  chi,
const multi1d< LatticeFermion > &  psi,
enum PlusMinus  isign 
) const
inlinevirtual

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

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

Definition at line 98 of file eoprec_nef_general_linop_array_w.h.

References applyDiagInv(), Chroma::chi(), Chroma::isign, and Chroma::psi.

◆ evenEvenLinOp()

void Chroma::EvenOddPrecGenNEFDWLinOpArray::evenEvenLinOp ( multi1d< LatticeFermion > &  chi,
const multi1d< LatticeFermion > &  psi,
enum PlusMinus  isign 
) const
inlinevirtual

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

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

Definition at line 89 of file eoprec_nef_general_linop_array_w.h.

References applyDiag(), Chroma::chi(), Chroma::isign, and Chroma::psi.

◆ evenOddLinOp()

void Chroma::EvenOddPrecGenNEFDWLinOpArray::evenOddLinOp ( multi1d< LatticeFermion > &  chi,
const multi1d< LatticeFermion > &  psi,
enum PlusMinus  isign 
) const
inlinevirtual

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

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

Definition at line 106 of file eoprec_nef_general_linop_array_w.h.

References applyOffDiag(), Chroma::chi(), Chroma::isign, and Chroma::psi.

◆ getFermBC()

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

set b5 and c5 given kappa and a5

Return the fermion BC object for this linear operator

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

Definition at line 79 of file eoprec_nef_general_linop_array_w.h.

References D, and Chroma::QDPWilsonDslashArrayOpt::getFermBC().

◆ oddEvenLinOp()

void Chroma::EvenOddPrecGenNEFDWLinOpArray::oddEvenLinOp ( multi1d< LatticeFermion > &  chi,
const multi1d< LatticeFermion > &  psi,
enum PlusMinus  isign 
) const
inlinevirtual

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

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

Definition at line 114 of file eoprec_nef_general_linop_array_w.h.

References applyOffDiag(), Chroma::chi(), Chroma::isign, and Chroma::psi.

◆ oddOddInvLinOp()

void Chroma::EvenOddPrecGenNEFDWLinOpArray::oddOddInvLinOp ( multi1d< LatticeFermion > &  chi,
const multi1d< LatticeFermion > &  psi,
enum PlusMinus  isign 
) const
inline

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

Definition at line 132 of file eoprec_nef_general_linop_array_w.h.

References applyDiagInv(), Chroma::chi(), Chroma::isign, and Chroma::psi.

◆ oddOddLinOp()

void Chroma::EvenOddPrecGenNEFDWLinOpArray::oddOddLinOp ( multi1d< LatticeFermion > &  chi,
const multi1d< LatticeFermion > &  psi,
enum PlusMinus  isign 
) const
inlinevirtual

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

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

Definition at line 123 of file eoprec_nef_general_linop_array_w.h.

References applyDiag(), Chroma::chi(), Chroma::isign, and Chroma::psi.

◆ operator=()

void Chroma::EvenOddPrecGenNEFDWLinOpArray::operator= ( const EvenOddPrecGenNEFDWLinOpArray )
inlineprotected

Partial constructor.

Definition at line 243 of file eoprec_nef_general_linop_array_w.h.

◆ size()

int Chroma::EvenOddPrecGenNEFDWLinOpArray::size ( void  ) const
inlinevirtual

Member Data Documentation

◆ a

multi1d<Real> Chroma::EvenOddPrecGenNEFDWLinOpArray::a
private

Definition at line 259 of file eoprec_nef_general_linop_array_w.h.

◆ b

multi1d<Real> Chroma::EvenOddPrecGenNEFDWLinOpArray::b
private

Definition at line 263 of file eoprec_nef_general_linop_array_w.h.

◆ b5

multi1d<Real> Chroma::EvenOddPrecGenNEFDWLinOpArray::b5
private

Definition at line 248 of file eoprec_nef_general_linop_array_w.h.

◆ c5

multi1d<Real> Chroma::EvenOddPrecGenNEFDWLinOpArray::c5
private

Definition at line 247 of file eoprec_nef_general_linop_array_w.h.

◆ d

multi1d<Real> Chroma::EvenOddPrecGenNEFDWLinOpArray::d
private

Definition at line 267 of file eoprec_nef_general_linop_array_w.h.

◆ D

WilsonDslashArray Chroma::EvenOddPrecGenNEFDWLinOpArray::D
private

Definition at line 271 of file eoprec_nef_general_linop_array_w.h.

Referenced by getFermBC().

◆ f_minus

multi1d<Real> Chroma::EvenOddPrecGenNEFDWLinOpArray::f_minus
private

Definition at line 254 of file eoprec_nef_general_linop_array_w.h.

◆ f_plus

multi1d<Real> Chroma::EvenOddPrecGenNEFDWLinOpArray::f_plus
private

Definition at line 253 of file eoprec_nef_general_linop_array_w.h.

◆ l

multi1d<Real> Chroma::EvenOddPrecGenNEFDWLinOpArray::l
private

Definition at line 256 of file eoprec_nef_general_linop_array_w.h.

◆ m_q

Real Chroma::EvenOddPrecGenNEFDWLinOpArray::m_q
private

Definition at line 249 of file eoprec_nef_general_linop_array_w.h.

◆ N5

int Chroma::EvenOddPrecGenNEFDWLinOpArray::N5
private

Definition at line 250 of file eoprec_nef_general_linop_array_w.h.

Referenced by size().

◆ r

multi1d<Real> Chroma::EvenOddPrecGenNEFDWLinOpArray::r
private

Definition at line 257 of file eoprec_nef_general_linop_array_w.h.

◆ WilsonMass

Real Chroma::EvenOddPrecGenNEFDWLinOpArray::WilsonMass
private

Definition at line 246 of file eoprec_nef_general_linop_array_w.h.


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