7 #ifndef __wilstype_fermact_w_h__
8 #define __wilstype_fermact_w_h__
22 template<
typename T,
typename P,
typename Q>
91 template<
typename T,
typename P,
typename Q>
Base class for quadratic matter actions (e.g., fermions)
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.
Differentiable Linear Operator.
Differentiable Linear Operator.
M^dag.M linear operator over arrays.
Differentiable M^dag.M linear operator.
Support class for fermion actions and linear operators.
Class for counted reference semantics.
SystemSolver disambiguator.
SystemSolver disambiguator.
Linear Operator to arrays.
SystemSolver disambiguator.
SystemSolver disambiguator.
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 MdagMMultiSystemSolverAccumulateArray< T > * mInvMdagMPVAcc(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 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 MdagMMultiSystemSolverAccumulateArray< T > * mInvMdagMAcc(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 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 (MdagM+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 LinOpMultiSystemSolver< T > * mInvLinOp(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a multi-shift linear operator solver for this action to solve (M+shift)*psi=chi.
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 MdagMMultiSystemSolverAccumulate< T > * mInvMdagMAcc(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
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.
Base class for even-odd preconditioned 4D and 5D Linop.
Class structure for fermion actions.
QuarkSpinType
Quark spin type.
Asqtad Staggered-Dirac operator.
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Hold group xml and type id.
SystemSolver disambiguator.
SystemSolver disambiguator.
SystemSolver disambiguator.
SystemSolver disambiguator.
SystemSolver disambiguator.