CHROMA
|
Even-odd preconditioned SLIC-Dirac operator. More...
#include <eoprec_slic_linop_w.h>
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 ¶m_) | |
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 ¶m_) |
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... | |
![]() | |
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 |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
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 |
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.
typedef multi1d<LatticeColorMatrix> Chroma::EvenOddPrecSLICLinOp::P |
Definition at line 36 of file eoprec_slic_linop_w.h.
typedef multi1d<LatticeColorMatrix> Chroma::EvenOddPrecSLICLinOp::Q |
Definition at line 37 of file eoprec_slic_linop_w.h.
typedef LatticeFermion Chroma::EvenOddPrecSLICLinOp::T |
Definition at line 35 of file eoprec_slic_linop_w.h.
|
inline |
Partial constructor.
Definition at line 40 of file eoprec_slic_linop_w.h.
|
inline |
Destructor is automatic.
Definition at line 47 of file eoprec_slic_linop_w.h.
void Chroma::EvenOddPrecSLICLinOp::create | ( | Handle< FermState< T, P, Q > > | fs, |
const CloverFermActParams & | param_ | ||
) |
Creation routine.
Creation routine with Anisotropy.
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().
|
virtual |
Apply the even-even block onto a source std::vector.
Reimplemented from Chroma::EvenOddPrecLogDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >.
Definition at line 231 of file eoprec_slic_linop_w.cc.
References Chroma::chi(), clov, Chroma::CloverTermBase< T, U >::deriv(), Chroma::END_CODE(), Chroma::StoutFermState< T, P, Q >::fatForceToThin(), Chroma::isign, Nd, Chroma::psi, and Chroma::START_CODE().
|
virtual |
Apply the the even-odd block onto a source std::vector.
Reimplemented from Chroma::EvenOddPrecLogDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >.
Definition at line 278 of file eoprec_slic_linop_w.cc.
References Chroma::chi(), D_pl, Chroma::WilsonDslashBase< T, P, Q >::deriv(), Chroma::END_CODE(), Chroma::isign, mu, Nd, Chroma::psi, slic_fs, and Chroma::START_CODE().
|
virtual |
Apply the even-even block onto a source std::vector.
Reimplemented from Chroma::EvenOddPrecLogDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >.
Definition at line 259 of file eoprec_slic_linop_w.cc.
References Chroma::CloverTermBase< T, U >::derivTrLn(), Chroma::END_CODE(), Chroma::StoutFermState< T, P, Q >::fatForceToThin(), invclov, Chroma::isign, Nd, and Chroma::START_CODE().
|
virtual |
Apply the the odd-even block onto a source std::vector.
Reimplemented from Chroma::EvenOddPrecLogDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >.
Definition at line 302 of file eoprec_slic_linop_w.cc.
References Chroma::chi(), D_pl, Chroma::WilsonDslashBase< T, P, Q >::deriv(), Chroma::END_CODE(), Chroma::isign, mu, Nd, Chroma::psi, slic_fs, and Chroma::START_CODE().
|
virtual |
Apply the the odd-odd block onto a source std::vector.
Reimplemented from Chroma::EvenOddPrecLogDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >.
Definition at line 327 of file eoprec_slic_linop_w.cc.
References Chroma::chi(), clov, Chroma::CloverTermBase< T, U >::deriv(), Chroma::END_CODE(), Chroma::StoutFermState< T, P, Q >::fatForceToThin(), Chroma::isign, Nd, Chroma::psi, and Chroma::START_CODE().
|
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.
|
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.
|
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
chi | Pseudofermion field (Write) |
psi | Pseudofermion field (Read) |
isign | Flag ( 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.
Return the fermion BC object for this linear operator.
Definition at line 50 of file eoprec_slic_linop_w.h.
References D_pl, and Chroma::QDPWilsonDslashT< T, P, Q >::getFermBC().
|
virtual |
Get the log det of the even even part.
Definition at line 352 of file eoprec_slic_linop_w.cc.
References Chroma::QDPCloverTermT< T, U >::cholesDet(), and invclov.
|
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().
|
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
chi | Pseudofermion field (Write) |
psi | Pseudofermion field (Read) |
isign | Flag ( 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.
|
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.
|
virtual |
Apply even-odd preconditioned Clover fermion linear operator.
chi | Pseudofermion field (Write) |
psi | Pseudofermion field (Read) |
isign | Flag ( 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.
|
private |
Definition at line 116 of file eoprec_slic_linop_w.h.
Referenced by create(), derivEvenEvenLinOp(), derivOddOddLinOp(), evenEvenLinOp(), nFlops(), oddOddLinOp(), and operator()().
|
private |
Definition at line 115 of file eoprec_slic_linop_w.h.
Referenced by create(), evenOddLinOp(), oddEvenLinOp(), and operator()().
|
private |
Definition at line 114 of file eoprec_slic_linop_w.h.
Referenced by create(), derivEvenOddLinOp(), derivOddEvenLinOp(), evenOddLinOp(), getFermBC(), nFlops(), oddEvenLinOp(), and operator()().
Definition at line 112 of file eoprec_slic_linop_w.h.
Referenced by create().
Definition at line 111 of file eoprec_slic_linop_w.h.
Referenced by create().
|
private |
Definition at line 117 of file eoprec_slic_linop_w.h.
Referenced by create(), derivLogDetEvenEvenLinOp(), evenEvenInvLinOp(), logDetEvenEvenLinOp(), and operator()().
|
private |
Definition at line 113 of file eoprec_slic_linop_w.h.
Referenced by create().
Definition at line 110 of file eoprec_slic_linop_w.h.
Referenced by derivEvenOddLinOp(), and derivOddEvenLinOp().