#ifndef GRID_QCD_ACTIONS_H #define GRID_QCD_ACTIONS_H // Some reorganisation likely required as both Chroma and IroIro // are separating the concept of the operator from that of action. // // The FermAction contains methods to create // // * Linear operators (Hermitian and non-hermitian) .. my LinearOperator // * System solvers (Hermitian and non-hermitian) .. my OperatorFunction // * MultiShift System solvers (Hermitian and non-hermitian) .. my OperatorFunction //////////////////////////////////////////// // Abstract base interface //////////////////////////////////////////// #include //////////////////////////////////////////// // Utility functions //////////////////////////////////////////// #include //used by all wilson type fermions #include //used by all wilson type fermions //////////////////////////////////////////// // 4D formulations //////////////////////////////////////////// #include //#include //////////////////////////////////////////// // 5D formulations... //////////////////////////////////////////// #include // used by all 5d overlap types ////////// // Cayley ////////// #include #include #include #include #include #include #include #include #include ////////////////////// // Continued fraction ////////////////////// #include ////////////////////// // Partial fraction ////////////////////// #include // Chroma interface defining FermionAction /* template class FermAct4D : public FermionAction virtual LinearOperator* linOp(Handle< FermState > state) const = 0; virtual LinearOperator* lMdagM(Handle< FermState > state) const = 0; virtual LinOpSystemSolver* invLinOp(Handle< FermState > state, virtual MdagMSystemSolver* invMdagM(Handle< FermState > state, virtual LinOpMultiSystemSolver* mInvLinOp(Handle< FermState > state, virtual MdagMMultiSystemSolver* mInvMdagM(Handle< FermState > state, virtual MdagMMultiSystemSolverAccumulate* mInvMdagMAcc(Handle< FermState > state, virtual SystemSolver* qprop(Handle< FermState > state, class DiffFermAct4D : public FermAct4D virtual DiffLinearOperator* linOp(Handle< FermState > state) const = 0; virtual DiffLinearOperator* lMdagM(Handle< FermState > state) const = 0; */ // Chroma interface defining GaugeAction /* template class GaugeAction virtual const CreateGaugeState& getCreateState() const = 0; virtual GaugeState* createState(const Q& q) const virtual const GaugeBC& getGaugeBC() const virtual const Set& getSet(void) const = 0; virtual void deriv(P& result, const Handle< GaugeState >& state) const virtual Double S(const Handle< GaugeState >& state) const = 0; class LinearGaugeAction : public GaugeAction< multi1d, multi1d > typedef multi1d P; */ #endif