CHROMA
|
Time preconditioned linear operator. More...
#include <tprec_linop.h>
Public Member Functions | |
virtual | ~TimePrecLinearOperator () |
Virtual destructor to help with cleanup;. More... | |
const Subset & | subset () const |
Defined on the entire lattice. More... | |
virtual const FermBC< T, P, Q > & | getFermBC () const =0 |
Return the fermion BC object for this linear operator. More... | |
int | tDir () const =0 |
The time direction. More... | |
virtual void | timeLinOp (T &chi, const T &psi, enum PlusMinus isign) const =0 |
Apply the time block onto a source std::vector. More... | |
virtual void | timeInvLinOp (T &chi, const T &psi, enum PlusMinus isign) const =0 |
Apply the inverse of the time block onto a source std::vector. More... | |
virtual void | spaceLinOp (T &chi, const T &psi, enum PlusMinus isign) const =0 |
Apply the the space block onto a source std::vector. More... | |
virtual void | operator() (T &chi, const T &psi, enum PlusMinus isign) const |
Apply the operator onto a source std::vector. 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 | derivTimeLinOp (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const =0 |
Apply the even-even block onto a source std::vector. More... | |
virtual void | derivSpaceLinOp (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const =0 |
Apply the space block onto a source std::vector. More... | |
virtual void | deriv (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const =0 |
Apply the derivative of the operator onto a source std::vector. More... | |
virtual void | derivUnprecLinOp (P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const =0 |
Apply the derivative of 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... | |
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... | |
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... | |
virtual unsigned long | nFlops () const |
Time preconditioned linear operator.
Support for time preconditioned linear operators Given a matrix M written in block form:
M = D_t + D_s
The preconditioning consists of multiplying by the inverse of the time operator
This class is used to implement the resulting linear operator
M' = 1 + D_t^(-1)*D_s M'^dag = 1 + D_s^dag * (D_t^(-1))^dag
The non-symmetrical nature of the daggered version means the two cases (no-dagger and dagger) must be handled separately. This is in contrast to the standard (4D) even-odd precond. case where the the daggered version has the same structure, except the dagger is pushed down into the individual pieces.
Definition at line 40 of file tprec_linop.h.
|
inlinevirtual |
Virtual destructor to help with cleanup;.
Definition at line 44 of file tprec_linop.h.
|
pure virtual |
Apply the derivative of the operator onto a source std::vector.
User should make sure deriv routines do a resize
Reimplemented from Chroma::DiffLinearOperator< T, P, Q >.
Implemented in Chroma::TimePrecLogDetLinearOperator< T, P, Q >.
|
pure virtual |
Apply the space block onto a source std::vector.
Implemented in Chroma::TimePrecLogDetLinearOperator< T, P, Q >.
|
pure virtual |
Apply the even-even block onto a source std::vector.
Implemented in Chroma::TimePrecLogDetLinearOperator< T, P, Q >.
|
pure virtual |
Apply the derivative of the UNPRECONDITIONED operator onto a source std::vector.
Mainly intended for debugging
Implemented in Chroma::TimePrecLogDetLinearOperator< T, P, Q >.
|
pure virtual |
Return the fermion BC object for this linear operator.
Implements Chroma::DiffLinearOperator< T, P, Q >.
Implemented in Chroma::TimePrecLogDetLinearOperator< T, P, Q >.
|
inlinevirtual |
Apply the operator onto a source std::vector.
Implements Chroma::LinearOperator< T >.
Definition at line 69 of file tprec_linop.h.
References Chroma::chi(), Chroma::isign, Chroma::MINUS, Chroma::PLUS, Chroma::psi, Chroma::TimePrecLinearOperator< T, P, Q >::spaceLinOp(), Chroma::TimePrecLinearOperator< T, P, Q >::timeInvLinOp(), and tmp2.
|
pure virtual |
Apply the the space block onto a source std::vector.
Implemented in Chroma::TimePrecLogDetLinearOperator< T, P, Q >.
Referenced by Chroma::TimePrecLinearOperator< T, P, Q >::operator()(), and Chroma::TimePrecLinearOperator< T, P, Q >::unprecLinOp().
|
inlinevirtual |
Defined on the entire lattice.
Implements Chroma::LinearOperator< T >.
Reimplemented in Chroma::TimePrecLogDetLinearOperator< T, P, Q >.
Definition at line 47 of file tprec_linop.h.
|
pure virtual |
The time direction.
Implemented in Chroma::TimePrecLogDetLinearOperator< T, P, Q >.
|
pure virtual |
Apply the inverse of the time block onto a source std::vector.
Implemented in Chroma::TimePrecLogDetLinearOperator< T, P, Q >.
Referenced by Chroma::TimePrecLinearOperator< T, P, Q >::operator()().
|
pure virtual |
Apply the time block onto a source std::vector.
This does not need to be optimized
Implemented in Chroma::TimePrecLogDetLinearOperator< T, P, Q >.
Referenced by Chroma::TimePrecLinearOperator< T, P, Q >::unprecLinOp().
|
inlinevirtual |
Apply the UNPRECONDITIONED operator onto a source std::vector.
Mainly intended for debugging
Definition at line 98 of file tprec_linop.h.
References Chroma::chi(), Chroma::isign, Chroma::psi, Chroma::TimePrecLinearOperator< T, P, Q >::spaceLinOp(), Chroma::TimePrecLinearOperator< T, P, Q >::timeLinOp(), and tmp2.