13 using namespace QDP::Hints;
43 virtual const Subset&
subset()
const = 0;
48 virtual unsigned long nFlops()
const {
return 0; }
67 virtual int size()
const = 0;
81 virtual const Subset&
subset()
const = 0;
85 virtual unsigned long nFlops()
const {
return 0; };
96 template<
typename T,
typename P,
typename Q>
111 QDPIO::cerr <<
"deriv: not implemented" << std::endl;
132 for(
int i=0;
i <
chi.size();
i++) {
148 template<
typename T,
typename P,
typename Q>
160 virtual void deriv(
P& ds_u,
const multi1d<T>&
chi,
const multi1d<T>&
psi,
163 QDPIO::cerr <<
"deriv: not implemented" << std::endl;
169 virtual void deriv(
P& ds_u,
const multi1d<T>&
chi,
const multi1d<T>&
psi,
183 template<
typename T,
typename P,
typename Q>
191 const Subset&
subset()
const {
return all;}
201 template<
typename T,
typename P,
typename Q>
209 const Subset&
subset()
const {
return all;}
219 template<
typename T,
typename P,
typename Q>
255 QDPIO::cerr <<
"deriv: not implemented" << std::endl;
271 QDPIO::cerr <<
"deriv: not implemented" << std::endl;
282 for(
int i=0;
i <
chi.size();
i++) {
297 for(
int i=0;
i <
chi.size();
i++) {
313 template<
typename T,
typename P,
typename Q>
349 virtual void deriv(
P& ds_u,
const multi1d<T>&
chi,
const multi1d<T>&
psi,
352 QDPIO::cerr <<
"deriv: not implemented" << std::endl;
365 virtual void deriv(
P& ds_u,
const multi1d<T>&
chi,
const multi1d<T>&
psi,
368 QDPIO::cerr <<
"deriv: not implemented" << std::endl;
Primary include file for CHROMA library code.
Differentiable Linear Operator.
virtual ~DiffLinearOperatorArray()
Virtual destructor to help with cleanup;.
virtual const FermBC< T, P, Q > & getFermBC() const =0
Return the fermion BC object for this linear operator.
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.
virtual void deriv(P &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign) const
Apply the derivative of the operator onto a source std::vector.
Differentiable Linear Operator.
virtual void derivMultipole(P &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign) const
Return the force for multiple poles.
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.
virtual const FermBC< T, P, Q > & getFermBC() const =0
Return the fermion BC object for this linear operator.
virtual ~DiffLinearOperator()
Virtual destructor to help with cleanup;.
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.
Dslash-like Linear Operator for arrays.
virtual int size() const =0
Expected length of array index.
virtual const FermBC< T, P, Q > & getFermBC() const =0
Return the fermion BC object for this linear operator.
virtual void apply(multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign, int cb) const =0
Apply checkerboarded linear operator.
virtual ~DslashLinearOperatorArray()
Virtual destructor to help in cleanup.
virtual void deriv(P &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign) const
Take deriv of D.
virtual void deriv(P &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign, int cb) const
Take deriv of D.
Dslash-like Linear Operator.
virtual void derivMultipole(P &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign) const
Return the force for multiple poles.
virtual void derivMultipole(P &ds_u, const multi1d< T > &chi, const multi1d< T > &psi, enum PlusMinus isign, int cb) const
virtual ~DslashLinearOperator()
Virtual destructor to help in cleanup.
virtual void apply(T &chi, const T &psi, enum PlusMinus isign, int cb) const =0
Apply checkerboarded linear operator.
virtual void deriv(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign, int cb) const
Take deriv of D.
virtual void deriv(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
Take deriv of D.
virtual const FermBC< T, P, Q > & getFermBC() const =0
Return the fermion BC object for this linear operator.
Base class for all fermion action boundary conditions.
Linear Operator to arrays.
virtual int size() const =0
Expected length of array index.
virtual ~LinearOperatorArray()
Virtual destructor to help with cleanup;.
virtual unsigned long nFlops() const
virtual const Subset & subset() const =0
Return the subset on which the operator acts.
virtual const Subset & subset() const =0
Return the subset on which the operator acts.
virtual unsigned long nFlops() const
virtual ~LinearOperator()
Virtual destructor to help with cleanup;.
Unpreconditioned linear operator including derivatives.
const Subset & subset() const
Only defined on the entire lattice.
virtual ~UnprecLinearOperatorArray()
Virtual destructor to help with cleanup;.
Unpreconditioned linear operator including derivatives.
const Subset & subset() const
Only defined on the entire lattice.
virtual ~UnprecLinearOperator()
Virtual destructor to help with cleanup;.
Fermion action boundary conditions.
int epsilon(int i, int j, int k)
multi1d< Hadron2PtContraction_t > operator()(const multi1d< LatticeColorMatrix > &u)
Asqtad Staggered-Dirac operator.
LinOpSysSolverMGProtoClover::T T
multi1d< LatticeColorMatrix > P
multi1d< LatticeColorMatrix > deriv(const EvenOddPrecLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > &AP, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign)
Apply the operator onto a source std::vector.