15 #include "prec_constdet_linop.h"
16 #include "prec_logdet_linop.h"
18 #include "eo_prec_linop.h"
53 template<
typename T,
typename P,
typename Q>
116 int& ncg_had)
const = 0;
144 quarkProp(q_sol, xml_out, q_src,
state, invParam, quarkSpinType, ncg_had);
176 template<
typename T,
typename P,
typename Q>
215 template<
typename T,
typename P,
typename Q>
256 template<
typename T,
typename P,
typename Q>
318 template<
typename T,
typename P,
typename Q>
342 template<
typename T,
typename P,
typename Q>
401 template<
typename T,
typename P,
typename Q>
489 template<
typename T,
typename P,
typename Q>
507 template<
typename T,
typename P,
typename Q>
529 template<
typename T,
typename P,
typename Q>
547 template<
typename T,
typename P,
typename Q>
569 template<
typename T,
typename P,
typename Q>
591 template<
typename T,
typename P,
typename Q>
618 template<
typename T,
typename P,
typename Q>
642 template<
typename T,
typename P,
typename Q>
694 template<
typename T,
typename P,
typename Q>
712 template<
typename T,
typename P,
typename Q>
Primary include file for CHROMA library code.
Create a fermion connection state.
Base class for quadratic matter actions (e.g., fermions)
virtual ~DiffFermAct4D()
Virtual destructor to help with cleanup;.
virtual DiffLinearOperator< T, Q, P > * lMdagM(Handle< FermState< T, P, Q > > state) const =0
Produce a linear operator M^dag.M for this action.
virtual DiffLinearOperator< T, Q, P > * linOp(Handle< FermState< T, P, Q > > state) const =0
Produce a linear operator for this action.
Base class of quadratic matter actions (e.g., fermions) living in an extra dimension.
virtual DiffLinearOperatorArray< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const =0
Produce a linear operator for this action.
virtual ~DiffFermAct5D()
Virtual destructor to help with cleanup;.
virtual DiffLinearOperatorArray< T, P, Q > * lMdagM(Handle< FermState< T, P, Q > > state) const =0
Produce a linear operator M^dag.M for this action.
virtual DiffLinearOperatorArray< T, P, Q > * linOpPV(Handle< FermState< T, P, Q > > state) const =0
Produce a Pauli-Villars linear operator for this action.
Differentiable Linear Operator.
Differentiable Linear Operator.
M^dag.M linear operator over arrays.
Differentiable M^dag.M linear operator.
Even odd Linear Operator (for staggered like things )
Even-odd preconditioned linear operator including derivatives for arrays.
Even-odd preconditioned linear operator.
Even-odd preconditioned Wilson-like fermion actions including derivatives.
virtual EvenOddPrecConstDetLinearOperatorArray< T, P, Q > * linOpPV(Handle< FermState< T, P, Q > > state) const =0
Override to produce an even-odd prec. Pauli-Villars linear operator for this action.
virtual EvenOddPrecConstDetLinearOperatorArray< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const =0
Override to produce an even-odd prec. linear operator for this action.
virtual ~EvenOddPrecConstDetWilsonTypeFermAct5D()
Virtual destructor to help with cleanup;.
Even-odd preconditioned Wilson-like fermion actions specialised to Wilson Like (gauge independent dia...
virtual ~EvenOddPrecConstDetWilsonTypeFermAct()
Virtual destructor to help with cleanup;.
virtual EvenOddPrecConstDetLinearOperator< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const =0
Override to produce an even-odd prec. linear operator for this action.
Even-odd preconditioned linear operator including derivatives for arrays.
Even-odd preconditioned linear operator.
Even-odd preconditioned linear operator.
Even-odd preconditioned Wilson-like fermion action, specialised to clover like (gauge dependent diago...
virtual EvenOddPrecLogDetLinearOperator< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const =0
Override to produce an even-odd prec. linear operator for this action.
virtual ~EvenOddPrecLogDetWilsonTypeFermAct()
Virtual destructor to help with cleanup;.
Even-odd preconditioned Wilson-like fermion actions including derivatives.
virtual ~EvenOddPrecWilsonTypeFermAct5D()
Virtual destructor to help with cleanup;.
virtual EvenOddPrecLinearOperatorArray< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const =0
Override to produce an even-odd prec. linear operator for this action.
virtual SystemSolverArray< T > * qpropT(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return quark prop solver, solution of unpreconditioned system.
virtual EvenOddPrecLinearOperatorArray< T, P, Q > * linOpPV(Handle< FermState< T, P, Q > > state) const =0
Override to produce an even-odd prec. Pauli-Villars linear operator for this action.
Even-odd preconditioned Wilson-like fermion actions including derivatives.
virtual ~EvenOddPrecWilsonTypeFermAct()
Virtual destructor to help with cleanup;.
virtual EvenOddPrecLinearOperator< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const =0
Override to produce an even-odd prec. linear operator for this action.
virtual SystemSolver< T > * qprop(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return quark prop solver, solution of unpreconditioned system.
Even-odd preconditioned Staggered-like fermion actions.
virtual SystemSolver< T > * qprop(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return quark prop solver, solution of unpreconditioned system.
virtual EvenOddLinearOperator< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const =0
Override to produce an even-odd prec. linear operator for this action.
virtual ~EvenOddStaggeredTypeFermAct()
Virtual destructor to help with cleanup;.
Base class for quadratic matter actions (e.g., fermions)
virtual LinearOperator< T > * lMdagM(Handle< FermState< T, P, Q > > state) const =0
Produce a linear operator M^dag.M for this action.
virtual LinOpSystemSolver< T > * invLinOp(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const =0
Return a linear operator solver for this action to solve M*psi=chi.
virtual SystemSolver< T > * qprop(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return quark prop solver, solution of unpreconditioned system.
virtual MdagMMultiSystemSolver< T > * mInvMdagM(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const =0
Return a multi-shift linear operator solver for this action to solve (MdagM+shift)*psi=chi.
virtual MdagMSystemSolver< T > * invMdagM(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const =0
Return a linear operator solver for this action to solve MdagM*psi=chi.
virtual ~FermAct4D()
Virtual destructor to help with cleanup;.
virtual LinearOperator< T > * linOp(Handle< FermState< T, P, Q > > state) const =0
Produce a linear operator for this action.
Base class of quadratic matter actions (e.g., fermions) living in an extra dimension.
virtual MdagMSystemSolverArray< T > * invMdagM(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const =0
Return a linear operator solver for this action to solve MdagM*psi=chi.
virtual ~FermAct5D()
Virtual destructor to help with cleanup;.
virtual LinOpSystemSolverArray< T > * invLinOp(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const =0
Return a linear operator solver for this action to solve M*psi=chi.
virtual LinearOperatorArray< T > * linOpPV(Handle< FermState< T, P, Q > > state) const =0
Produce a Pauli-Villars linear operator for this action.
virtual LinOpSystemSolverArray< T > * invLinOpPV(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const =0
Return a linear operator solver for this action to solve PV*psi=chi.
virtual MdagMMultiSystemSolverArray< T > * mInvMdagM(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const =0
Return a multi-shift linear operator solver for this action to solve (MdagM+shift)*psi=chi.
virtual MdagMMultiSystemSolverArray< T > * mInvMdagMPV(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const =0
Return a multi-shift linear operator solver for this action to solve (PV^dag*PV+shift)*psi=chi.
virtual Real getQuarkMass() const =0
Return the quark mass.
virtual int size() const =0
Expected length of array index.
virtual LinearOperatorArray< T > * linOp(Handle< FermState< T, P, Q > > state) const =0
Produce a linear operator for this action.
virtual MdagMSystemSolverArray< T > * invMdagMPV(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const =0
Return a linear operator solver for this action to solve PV^dag*PV*psi=chi.
virtual LinearOperatorArray< T > * lMdagM(Handle< FermState< T, P, Q > > state) const =0
Produce a linear operator M^dag.M for this action.
virtual SystemSolverArray< T > * qpropT(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return quark prop solver, solution of unpreconditioned system.
Base class for all fermion action boundary conditions.
Support class for fermion actions and linear operators.
Base class for quadratic matter actions (e.g., fermions)
virtual void quarkProp(typename PropTypeTraits< T >::Type_t &q_sol, XMLWriter &xml_out, const typename PropTypeTraits< T >::Type_t &q_src, Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam, QuarkSpinType quarkSpinType, int &ncg_had) const =0
Given a complete propagator as a source, this does all the inversions needed.
virtual void quarkProp(typename PropTypeTraits< T >::Type_t &q_sol, XMLWriter &xml_out, const typename PropTypeTraits< T >::Type_t &q_src, int t_src, int j_decay, Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam, QuarkSpinType quarkSpinType, bool obsvP, int &ncg_had) const
Given a complete propagator as a source, this does all the inversions needed.
virtual FermState< T, P, Q > * createState(const Q &q, XMLReader &reader, const std::string &path) const
Given links (coordinates Q) create a state with additional info held by the XMLReader.
virtual const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this action.
virtual const CreateFermState< T, P, Q > & getCreateState() const =0
Return the factory object that produces a state.
virtual SystemSolver< T > * qprop(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const =0
Return quark prop solver, solution of unpreconditioned system.
virtual ~FermionAction()
Virtual destructor to help with cleanup;.
virtual FermState< T, P, Q > * createState(const Q &q) const
Given links (coordinates Q) create the state needed for the linear operators.
Class for counted reference semantics.
SystemSolver disambiguator.
SystemSolver disambiguator.
Linear Operator to arrays.
SystemSolver disambiguator.
SystemSolver disambiguator.
Staggered-like fermion actions.
virtual LinOpSystemSolver< T > * invLinOp(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a linear operator solver for this action to solve M*psi=chi.
virtual MdagMMultiSystemSolver< T > * mInvMdagM(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a multi-shift linear operator solver for this action to solve (MdagM+shift)*psi=chi.
virtual MdagMSystemSolver< T > * invMdagM(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a linear operator solver for this action to solve MdagM*psi=chi.
virtual void quarkProp(typename PropTypeTraits< T >::Type_t &q_sol, XMLWriter &xml_out, const typename PropTypeTraits< T >::Type_t &q_src, Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam, QuarkSpinType quarkSpinType, int &ncg_had) const
Given a complete propagator as a source, this does all the inversions needed.
virtual const Real getQuarkMass() const =0
Return the quark mass.
virtual ~StaggeredTypeFermAct()
Virtual destructor to help with cleanup;.
Linear system solvers of arrays.
Unpreconditioned linear operator including derivatives.
Unpreconditioned linear operator including derivatives.
Staggered-like fermion actions with derivatives.
virtual UnprecLinearOperator< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const =0
Override to produce an even-odd prec. linear operator for this action.
virtual ~UnprecStaggeredTypeFermAct()
Virtual destructor to help with cleanup;.
Unpreconditioned Wilson-like fermion actions in extra dims with derivatives.
virtual ~UnprecWilsonTypeFermAct5D()
Virtual destructor to help with cleanup;.
virtual UnprecLinearOperatorArray< T, P, Q > * linOpPV(Handle< FermState< T, P, Q > > state) const =0
Produce a Pauli-Villars linear operator for this action.
virtual UnprecLinearOperatorArray< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const =0
Produce a linear operator for this action.
Unpreconditioned Wilson-like fermion actions with derivatives.
virtual ~UnprecWilsonTypeFermAct()
Virtual destructor to help with cleanup;.
virtual UnprecLinearOperator< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const =0
Produce a linear operator for this action.
Wilson-like fermion actions.
virtual MdagMMultiSystemSolverArray< T > * mInvMdagM(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a multi-shift linear operator solver for this action to solve (MdagM+shift)*psi=chi.
virtual LinearOperatorArray< T > * hermitianLinOp(Handle< FermState< T, P, Q > > state) const =0
Produce a hermitian version of the linear operator.
virtual LinearOperator< T > * DeltaLs(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const =0
Produce a DeltaLs = 1-epsilon^2(H) operator.
virtual LinOpSystemSolverArray< T > * invLinOpPV(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a linear operator solver for this action to solve PV*psi=chi.
virtual void quarkProp(typename PropTypeTraits< T >::Type_t &q_sol, XMLWriter &xml_out, const typename PropTypeTraits< T >::Type_t &q_src, Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam, QuarkSpinType quarkSpinType, int &ncg_had) const
Given a complete propagator as a source, this does all the inversions needed.
virtual MdagMSystemSolverArray< T > * invMdagM(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a linear operator solver for this action to solve MdagM*psi=chi.
virtual ~WilsonTypeFermAct5D()
Virtual destructor to help with cleanup;.
virtual MdagMSystemSolverArray< T > * invMdagMPV(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a linear operator solver for this action to solve PV^dag*PV*psi=chi.
virtual LinearOperator< T > * linOp4D(Handle< FermState< T, P, Q > > state, const Real &m_q, const GroupXML_t &invParam) const =0
Produce an unpreconditioned linear operator projecting 5D to 4D (the inverse of qprop below)
virtual MdagMMultiSystemSolverArray< T > * mInvMdagMPV(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a multi-shift linear operator solver for this action to solve (PV^dag*PV+shift)*psi=chi.
virtual LinOpSystemSolverArray< T > * invLinOp(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a linear operator solver for this action to solve M*psi=chi.
virtual DiffLinearOperatorArray< T, P, Q > * lMdagM(Handle< FermState< T, P, Q > > state) const
Produce a linear operator M^dag.M for this action.
Wilson-like fermion actions.
virtual ~WilsonTypeFermAct()
Virtual destructor to help with cleanup;.
virtual DiffLinearOperator< T, P, Q > * lMdagM(Handle< FermState< T, P, Q > > state) const
Produce a linear operator M^dag.M for this action.
virtual MdagMMultiSystemSolver< T > * mInvMdagM(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a multi-shift linear operator solver for this action to solve (MdagM+shift)*psi=chi.
virtual void quarkProp(typename PropTypeTraits< T >::Type_t &q_sol, XMLWriter &xml_out, const typename PropTypeTraits< T >::Type_t &q_src, Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam, QuarkSpinType quarkSpinType, int &ncg_had) const
Given a complete propagator as a source, this does all the inversions needed.
virtual MdagMSystemSolver< T > * invMdagM(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a linear operator solver for this action to solve MdagM*psi=chi.
virtual LinOpSystemSolver< T > * invLinOp(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a linear operator solver for this action to solve M*psi=chi.
virtual LinearOperator< T > * hermitianLinOp(Handle< FermState< T, P, Q > > state) const =0
Produce a hermitian version of the linear operator.
Create a connection state.
Enum for what spin components of a quark prop to compute.
Fermion action boundary conditions.
QuarkSpinType
Quark spin type.
M^dag*M composition of a linear operator.
Disambiguator for multi-shift MdagM system solvers.
Handle< FermBC< LatticeStaggeredFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > > reader(XMLReader &xml_in, const std::string &path)
Helper function for the FermionAction readers.
Asqtad Staggered-Dirac operator.
LinOpSysSolverMGProtoClover::Q Q
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Support class for fermion actions and linear operators.
Hold group xml and type id.
SystemSolver disambiguator.
SystemSolver disambiguator.
Disambiguator for LinOp system solvers.
Disambiguator for MdagM system solvers.
Read an XML group as a std::string.