CHROMA
|
Differentiable Linear Operator. More...
#include <linearop.h>
Public Member Functions | |
virtual | ~DiffLinearOperator () |
Virtual destructor to help with cleanup;. More... | |
virtual const FermBC< T, P, Q > & | getFermBC () const =0 |
Return the fermion BC object for this linear operator. More... | |
virtual void | deriv (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const |
Apply the derivative of the operator onto a source std::vector. 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 void | derivMultipole (P &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign) const |
Return the force for multiple poles. More... | |
![]() | |
virtual | ~LinearOperator () |
Virtual destructor to help with cleanup;. More... | |
virtual void | operator() (T &chi, const T &psi, enum PlusMinus isign) const =0 |
Apply the operator onto a source std::vector. 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... | |
virtual const Subset & | subset () const =0 |
Return the subset on which the operator acts. More... | |
virtual unsigned long | nFlops () const |
Differentiable Linear Operator.
Supports creation and application for linear operators that hold things like Dirac operators, etc. that are differentiable
Definition at line 97 of file linearop.h.
|
inlinevirtual |
Virtual destructor to help with cleanup;.
Definition at line 101 of file linearop.h.
|
inlinevirtual |
Apply the derivative of the operator onto a source std::vector.
Default implementation
Reimplemented in Chroma::TwistedShiftedLinOp< T, P, Q, EvenOddPrecLinearOperator >, Chroma::TwistedShiftedLinOp< T, P, Q, SymEvenOddPrecLogDetLinearOperator >, Chroma::lpoly< T, P, Q >, Chroma::PolyPrec< T, P, Q >, Chroma::SymEvenOddPrecCloverLinOp, Chroma::TimePrecLinearOperator< T, P, Q >, Chroma::EvenOddTimePrecLinearOperator< T, P, Q >, Chroma::EvenOddPrecLinearOperator< T, P, Q >, Chroma::TimePrecLogDetLinearOperator< T, P, Q >, Chroma::EvenOddTimePrecLogDetLinearOperator< T, P, Q >, Chroma::SymEvenOddPrecLinearOperator< T, P, Q >, Chroma::DiffMdagMLinOp< T, P, Q >, Chroma::DslashLinearOperator< T, P, Q >, Chroma::DiffMdagLinOp< T, P, Q >, Chroma::EvenOddPrecLogDetLinearOperator< T, P, Q >, Chroma::EvenOddPrecConstDetLinearOperator< T, P, Q >, Chroma::EvenOddLinearOperator< T, P, Q >, Chroma::WilsonDslashBase< T, P, Q >, Chroma::WilsonDslashBase< LatticeFermionF, multi1d< LatticeColorMatrixF >, multi1d< LatticeColorMatrixF > >, Chroma::WilsonDslashBase< LatticeFermionD, multi1d< LatticeColorMatrixD >, multi1d< LatticeColorMatrixD > >, Chroma::KleinGordonLinOp, Chroma::DslashLinearOperator< LatticeStaggeredFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::EvenOddLinearOperator< LatticeStaggeredFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::EvenOddPrecLogDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::EvenOddPrecConstDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::UnprecWilsonLinOp, Chroma::UnprecW12LinOp, Chroma::UnprecParWilsonLinOp, Chroma::UnprecHamberWuLinOp, Chroma::UnprecGrapheneLinOp, Chroma::UnprecCloverLinOp, and Chroma::WilsonDslashBase< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >.
Definition at line 108 of file linearop.h.
Referenced by Chroma::PrecConstDetTwoFlavorWilsonMultihasenCancelMonomial< T, P, Q, FAType, LOType >::dsdq(), and Chroma::PrecConstDetTwoFlavorRatioConvConvMultihasenWilsonTypeFermMonomial< T, P, Q, FAType, LOType >::dsdq().
|
inlinevirtual |
Apply the derivative of the operator onto a source std::vector to some precision.
Default implementation
Reimplemented in Chroma::DiffMdagMLinOp< T, P, Q >, and Chroma::DiffMdagLinOp< T, P, Q >.
Definition at line 118 of file linearop.h.
References chi, deriv(), Chroma::isign, and psi.
|
inlinevirtual |
Return the force for multiple poles.
Reimplemented in Chroma::SymEvenOddPrecCloverLinOp, Chroma::SymEvenOddPrecLinearOperator< T, P, Q >, Chroma::DslashLinearOperator< T, P, Q >, Chroma::EvenOddPrecLogDetLinearOperator< T, P, Q >, Chroma::EvenOddPrecConstDetLinearOperator< T, P, Q >, Chroma::DslashLinearOperator< LatticeStaggeredFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::EvenOddPrecLogDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, and Chroma::EvenOddPrecConstDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >.
Definition at line 125 of file linearop.h.
References chi, deriv(), i, Chroma::isign, Nd, psi, and Chroma::zero.
|
pure virtual |
Return the fermion BC object for this linear operator.
Implemented in Chroma::SymEvenOddPrecLogDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::DslashLinearOperator< LatticeStaggeredFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::DslashLinearOperator< T, multi1d< U >, multi1d< U > >, Chroma::EvenOddPrecLogDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::EvenOddPrecConstDetLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::EvenOddLinearOperator< LatticeStaggeredFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::TwistedShiftedLinOp< T, P, Q, EvenOddPrecLinearOperator >, Chroma::TwistedShiftedLinOp< T, P, Q, SymEvenOddPrecLogDetLinearOperator >, Chroma::TimePrecLogDetLinearOperator< T, P, Q >, Chroma::TimePrecLinearOperator< T, P, Q >, Chroma::SymEvenOddPrecLogDetLinearOperator< T, P, Q >, Chroma::SymEvenOddPrecLinearOperator< T, P, Q >, Chroma::SymEvenOddPrecConstDetLinearOperator< T, P, Q >, Chroma::DslashLinearOperator< T, P, Q >, Chroma::EvenOddPrecLogDetLinearOperator< T, P, Q >, Chroma::EvenOddPrecLinearOperator< T, P, Q >, Chroma::EvenOddPrecConstDetLinearOperator< T, P, Q >, Chroma::EvenOddLinearOperator< T, P, Q >, Chroma::DiffMdagMLinOp< T, P, Q >, Chroma::DiffMdagLinOp< T, P, Q >, Chroma::UnprecWilsonLinOp, Chroma::UnprecW12LinOp, Chroma::UnprecParWilsonLinOp, Chroma::UnprecHamberWuLinOp, Chroma::UnprecGrapheneLinOp, Chroma::UnprecDWFTransfMdagMLinOp, Chroma::UnprecDWFTransfLinOp, Chroma::UnprecCloverLinOp, Chroma::EvenOddPrecWilsonLinOp, Chroma::SymEvenOddPrecCloverLinOp, Chroma::lpoly< T, P, Q >, Chroma::PolyPrec< T, P, Q >, Chroma::SSEWilsonDslash, Chroma::PABWilsonDslash, Chroma::CPPWilsonDslashF, Chroma::CPPWilsonDslashD, Chroma::QDPWilsonDslashT< T, P, Q >, Chroma::QDPWilsonDslashOptT< T, P, Q >, Chroma::LLVMWilsonDslashT< T, P, Q >, Chroma::lovlapms, Chroma::lovlap_double_pass, Chroma::lovddag, Chroma::lovddag_double_pass, Chroma::KleinGordonLinOp, Chroma::EvenOddPrecWilsonLinOp, Chroma::EvenOddPrecTwmLinOpArray, Chroma::EvenOddPrecSLRCLinOp, Chroma::EvenOddPrecSLICLinOp, Chroma::EvenOddPrecParWilsonLinOp, Chroma::EvenOddPrecCloverOrbifoldLinOp, Chroma::EvenOddPrecCloverLinOp, Chroma::EvenOddPrecCloverExtFieldLinOp, Chroma::SSEDCloverTerm, Chroma::QDPCloverTermT< T, U >, Chroma::PTXCloverTermT< T, U >, Chroma::NVVMCloverTermT< T, U >, Chroma::LLVMCloverTermT< T, U >, Chroma::BAGELCloverTerm, Chroma::AsqtadMdagM, Chroma::AsqtadLinOp, and Chroma::QDPStaggeredDslash.