CHROMA
Public Member Functions | List of all members
Chroma::FermAct4D< T, P, Q > Class Template Referenceabstract

Base class for quadratic matter actions (e.g., fermions) More...

#include <fermact.h>

Inheritance diagram for Chroma::FermAct4D< T, P, Q >:
Chroma::FermionAction< T, P, Q > Chroma::FermionAction< T, P, Q > Chroma::DiffFermAct4D< T, P, Q > Chroma::DiffFermAct4D< T, P, Q > Chroma::StaggeredTypeFermAct< T, P, Q > Chroma::StaggeredTypeFermAct< T, P, Q > Chroma::WilsonTypeFermAct< T, P, Q > Chroma::WilsonTypeFermAct< T, P, Q > Chroma::StaggeredTypeFermAct< T, P, Q > Chroma::StaggeredTypeFermAct< T, P, Q > Chroma::WilsonTypeFermAct< T, P, Q > Chroma::WilsonTypeFermAct< T, P, Q >

Public Member Functions

virtual ~FermAct4D ()
 Virtual destructor to help with cleanup;. More...
 
virtual LinearOperator< T > * linOp (Handle< FermState< T, P, Q > > state) const =0
 Produce a linear operator for this action. More...
 
virtual LinearOperator< T > * lMdagM (Handle< FermState< T, P, Q > > state) const =0
 Produce a linear operator M^dag.M for this action. More...
 
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. More...
 
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. More...
 
virtual LinOpMultiSystemSolver< T > * mInvLinOp (Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const =0
 Return a multi-shift linear operator solver for this action to solve (M+shift)*psi=chi. More...
 
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. More...
 
virtual MdagMMultiSystemSolverAccumulate< T > * mInvMdagMAcc (Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const =0
 Return a multi-shift accumulate solver. More...
 
virtual SystemSolver< T > * qprop (Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
 Return quark prop solver, solution of unpreconditioned system. More...
 
virtual ~FermAct4D ()
 Virtual destructor to help with cleanup;. More...
 
virtual LinearOperator< T > * linOp (Handle< FermState< T, P, Q > > state) const =0
 Produce a linear operator for this action. More...
 
virtual LinearOperator< T > * lMdagM (Handle< FermState< T, P, Q > > state) const =0
 Produce a linear operator M^dag.M for this action. More...
 
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. More...
 
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. More...
 
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. More...
 
virtual SystemSolver< T > * qprop (Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
 Return quark prop solver, solution of unpreconditioned system. More...
 
SystemSolver< LatticeFermion > * qprop (Handle< FermState< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > > state, const GroupXML_t &invParam) const
 Return quark prop solver, solution of unpreconditioned system. More...
 
SystemSolver< LatticeStaggeredFermion > * qprop (Handle< FermState< LatticeStaggeredFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > > state, const GroupXML_t &invParam) const
 
- Public Member Functions inherited from Chroma::FermionAction< T, P, Q >
virtual ~FermionAction ()
 Virtual destructor to help with cleanup;. More...
 
virtual FermState< T, P, Q > * createState (const Q &q) const
 Given links (coordinates Q) create the state needed for the linear operators. More...
 
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. More...
 
virtual const FermBC< T, P, Q > & getFermBC () const
 Return the fermion BC object for this action. More...
 
virtual const CreateFermState< T, P, Q > & getCreateState () const =0
 Return the factory object that produces a state. More...
 
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. More...
 
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. More...
 
virtual ~FermionAction ()
 Virtual destructor to help with cleanup;. More...
 
virtual FermState< T, P, Q > * createState (const Q &q) const
 Given links (coordinates Q) create the state needed for the linear operators. More...
 
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. More...
 
virtual const FermBC< T, P, Q > & getFermBC () const
 Return the fermion BC object for this action. More...
 
virtual const CreateFermState< T, P, Q > & getCreateState () const =0
 Return the factory object that produces a state. More...
 
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. More...
 
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. More...
 

Detailed Description

template<typename T, typename P, typename Q>
class Chroma::FermAct4D< T, P, Q >

Base class for quadratic matter actions (e.g., fermions)

Supports creation and application for quadratic actions. This is basically a foundry class with additional operations.

The class holds info on the particulars of a bi-local action, but it DOES NOT hold gauge fields. A specific dirac-operator is a functional of the gauge fields, hence when a dirac-operator is needed, it is created.

The FermState<T,P,Q> holds gauge fields and whatever auxilliary info is needed to create a specific dirac operator (linear operator) on some background gauge field.

The FermBC is the type of boundary conditions used for this action

The linop and lmdagm functions create a linear operator on a fixed FermState

The qprop solves for the full linear system undoing all preconditioning. No direct functions are provided (or needed) to call a linear system solver - that is a stand-alone function in the generic programming sense.

Definition at line 175 of file fermact.h.

Constructor & Destructor Documentation

◆ ~FermAct4D() [1/2]

template<typename T , typename P , typename Q >
virtual Chroma::FermAct4D< T, P, Q >::~FermAct4D ( )
inlinevirtual

Virtual destructor to help with cleanup;.

Definition at line 179 of file fermact.h.

◆ ~FermAct4D() [2/2]

template<typename T , typename P , typename Q >
virtual Chroma::FermAct4D< T, P, Q >::~FermAct4D ( )
inlinevirtual

Virtual destructor to help with cleanup;.

Definition at line 181 of file fermact.orig.h.

Member Function Documentation

◆ invLinOp() [1/2]

template<typename T , typename P , typename Q >
virtual LinOpSystemSolver<T>* Chroma::FermAct4D< T, P, Q >::invLinOp ( Handle< FermState< T, P, Q > >  state,
const GroupXML_t invParam 
) const
pure virtual

◆ invLinOp() [2/2]

template<typename T , typename P , typename Q >
virtual LinOpSystemSolver<T>* Chroma::FermAct4D< T, P, Q >::invLinOp ( Handle< FermState< T, P, Q > >  state,
const GroupXML_t invParam 
) const
pure virtual

◆ invMdagM() [1/2]

template<typename T , typename P , typename Q >
virtual MdagMSystemSolver<T>* Chroma::FermAct4D< T, P, Q >::invMdagM ( Handle< FermState< T, P, Q > >  state,
const GroupXML_t invParam 
) const
pure virtual

◆ invMdagM() [2/2]

template<typename T , typename P , typename Q >
virtual MdagMSystemSolver<T>* Chroma::FermAct4D< T, P, Q >::invMdagM ( Handle< FermState< T, P, Q > >  state,
const GroupXML_t invParam 
) const
pure virtual

◆ linOp() [1/2]

template<typename T , typename P , typename Q >
virtual LinearOperator<T>* Chroma::FermAct4D< T, P, Q >::linOp ( Handle< FermState< T, P, Q > >  state) const
pure virtual

Produce a linear operator for this action.

Implemented in Chroma::UnprecWilsonTypeFermAct< T, P, Q >, Chroma::EvenOddStaggeredTypeFermAct< T, P, Q >, Chroma::UnprecStaggeredTypeFermAct< T, P, Q >, Chroma::SymEvenOddPrecWilsonTypeFermAct< T, P, Q >, Chroma::SymEvenOddPrecLogDetWilsonTypeFermAct< T, P, Q >, Chroma::SymEvenOddPrecConstDetWilsonTypeFermAct< T, P, Q >, Chroma::EvenOddStaggeredTypeFermAct< T, P, Q >, Chroma::UnprecStaggeredTypeFermAct< T, P, Q >, Chroma::EvenOddPrecLogDetWilsonTypeFermAct< T, P, Q >, Chroma::EvenOddPrecConstDetWilsonTypeFermAct< T, P, Q >, Chroma::EvenOddPrecWilsonTypeFermAct< T, P, Q >, Chroma::UnprecWilsonTypeFermAct< T, P, Q >, Chroma::DiffFermAct4D< T, P, Q >, Chroma::DiffFermAct4D< T, P, Q >, Chroma::EvenOddPrecWilsonTypeFermAct< T, P, Q >, Chroma::EvenOddPrecLogDetWilsonTypeFermAct< T, P, Q >, Chroma::EvenOddPrecConstDetWilsonTypeFermAct< T, P, Q >, Chroma::UnprecWilsonFermAct, Chroma::UnprecW12FermAct, Chroma::UnprecParWilsonFermAct, Chroma::UnprecHamberWuFermAct, Chroma::UnprecGrapheneFermAct, Chroma::UnprecDWFTransfFermAct, Chroma::UnprecCloverFermAct, Chroma::SymEvenOddPrecCloverFermAct, Chroma::PolyChebFermAct, Chroma::OverlapFermActBase, Chroma::EvenOddPrecWilsonFermAct, Chroma::EvenOddPrecWilsonCoarseFineFermAct, Chroma::EvenOddPrecSLRCFermAct, Chroma::EvenOddPrecSLICFermAct, Chroma::EvenOddPrecParWilsonFermAct, Chroma::EvenOddPrecCloverOrbifoldFermAct, Chroma::EvenOddPrecCloverFermAct, Chroma::EvenOddPrecCloverExtFieldFermAct, Chroma::UnprecWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::SymEvenOddPrecLogDetWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::EvenOddPrecLogDetWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::EvenOddPrecConstDetWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::UnprecWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::EvenOddPrecLogDetWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, and Chroma::EvenOddPrecConstDetWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >.

◆ linOp() [2/2]

template<typename T , typename P , typename Q >
virtual LinearOperator<T>* Chroma::FermAct4D< T, P, Q >::linOp ( Handle< FermState< T, P, Q > >  state) const
pure virtual

Produce a linear operator for this action.

Implemented in Chroma::UnprecWilsonTypeFermAct< T, P, Q >, Chroma::EvenOddStaggeredTypeFermAct< T, P, Q >, Chroma::UnprecStaggeredTypeFermAct< T, P, Q >, Chroma::SymEvenOddPrecWilsonTypeFermAct< T, P, Q >, Chroma::SymEvenOddPrecLogDetWilsonTypeFermAct< T, P, Q >, Chroma::SymEvenOddPrecConstDetWilsonTypeFermAct< T, P, Q >, Chroma::EvenOddStaggeredTypeFermAct< T, P, Q >, Chroma::UnprecStaggeredTypeFermAct< T, P, Q >, Chroma::EvenOddPrecLogDetWilsonTypeFermAct< T, P, Q >, Chroma::EvenOddPrecConstDetWilsonTypeFermAct< T, P, Q >, Chroma::EvenOddPrecWilsonTypeFermAct< T, P, Q >, Chroma::UnprecWilsonTypeFermAct< T, P, Q >, Chroma::DiffFermAct4D< T, P, Q >, Chroma::DiffFermAct4D< T, P, Q >, Chroma::EvenOddPrecWilsonTypeFermAct< T, P, Q >, Chroma::EvenOddPrecLogDetWilsonTypeFermAct< T, P, Q >, Chroma::EvenOddPrecConstDetWilsonTypeFermAct< T, P, Q >, Chroma::UnprecWilsonFermAct, Chroma::UnprecW12FermAct, Chroma::UnprecParWilsonFermAct, Chroma::UnprecHamberWuFermAct, Chroma::UnprecGrapheneFermAct, Chroma::UnprecDWFTransfFermAct, Chroma::UnprecCloverFermAct, Chroma::SymEvenOddPrecCloverFermAct, Chroma::PolyChebFermAct, Chroma::OverlapFermActBase, Chroma::EvenOddPrecWilsonFermAct, Chroma::EvenOddPrecWilsonCoarseFineFermAct, Chroma::EvenOddPrecSLRCFermAct, Chroma::EvenOddPrecSLICFermAct, Chroma::EvenOddPrecParWilsonFermAct, Chroma::EvenOddPrecCloverOrbifoldFermAct, Chroma::EvenOddPrecCloverFermAct, Chroma::EvenOddPrecCloverExtFieldFermAct, Chroma::UnprecWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::SymEvenOddPrecLogDetWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::EvenOddPrecLogDetWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::EvenOddPrecConstDetWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::UnprecWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, Chroma::EvenOddPrecLogDetWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >, and Chroma::EvenOddPrecConstDetWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >.

◆ lMdagM() [1/2]

template<typename T , typename P , typename Q >
virtual LinearOperator<T>* Chroma::FermAct4D< T, P, Q >::lMdagM ( Handle< FermState< T, P, Q > >  state) const
pure virtual

◆ lMdagM() [2/2]

template<typename T , typename P , typename Q >
virtual LinearOperator<T>* Chroma::FermAct4D< T, P, Q >::lMdagM ( Handle< FermState< T, P, Q > >  state) const
pure virtual

◆ mInvLinOp()

template<typename T , typename P , typename Q >
virtual LinOpMultiSystemSolver<T>* Chroma::FermAct4D< T, P, Q >::mInvLinOp ( Handle< FermState< T, P, Q > >  state,
const GroupXML_t invParam 
) const
pure virtual

Return a multi-shift linear operator solver for this action to solve (M+shift)*psi=chi.

Implemented in Chroma::WilsonTypeFermAct< T, P, Q >, and Chroma::StaggeredTypeFermAct< T, P, Q >.

◆ mInvMdagM() [1/2]

template<typename T , typename P , typename Q >
virtual MdagMMultiSystemSolver<T>* Chroma::FermAct4D< T, P, Q >::mInvMdagM ( Handle< FermState< T, P, Q > >  state,
const GroupXML_t invParam 
) const
pure virtual

Return a multi-shift linear operator solver for this action to solve (MdagM+shift)*psi=chi.

Implemented in Chroma::WilsonTypeFermAct< T, P, Q >, Chroma::StaggeredTypeFermAct< T, P, Q >, Chroma::StaggeredTypeFermAct< T, P, Q >, and Chroma::WilsonTypeFermAct< T, P, Q >.

◆ mInvMdagM() [2/2]

template<typename T , typename P , typename Q >
virtual MdagMMultiSystemSolver<T>* Chroma::FermAct4D< T, P, Q >::mInvMdagM ( Handle< FermState< T, P, Q > >  state,
const GroupXML_t invParam 
) const
pure virtual

Return a multi-shift linear operator solver for this action to solve (MdagM+shift)*psi=chi.

Implemented in Chroma::WilsonTypeFermAct< T, P, Q >, Chroma::StaggeredTypeFermAct< T, P, Q >, Chroma::StaggeredTypeFermAct< T, P, Q >, and Chroma::WilsonTypeFermAct< T, P, Q >.

◆ mInvMdagMAcc()

template<typename T , typename P , typename Q >
virtual MdagMMultiSystemSolverAccumulate<T>* Chroma::FermAct4D< T, P, Q >::mInvMdagMAcc ( Handle< FermState< T, P, Q > >  state,
const GroupXML_t invParam 
) const
pure virtual

Return a multi-shift accumulate solver.

Implemented in Chroma::WilsonTypeFermAct< T, P, Q >, and Chroma::StaggeredTypeFermAct< T, P, Q >.

◆ qprop() [1/4]

SystemSolver< LatticeFermion > * Chroma::FermAct4D< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >::qprop ( Handle< FermState< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > >  state,
const GroupXML_t invParam 
) const
virtual

Return quark prop solver, solution of unpreconditioned system.

Implements Chroma::FermionAction< T, P, Q >.

Definition at line 82 of file fermact_qprop.cc.

References Chroma::state.

◆ qprop() [2/4]

SystemSolver< LatticeStaggeredFermion > * Chroma::FermAct4D< LatticeStaggeredFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >::qprop ( Handle< FermState< LatticeStaggeredFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > >  state,
const GroupXML_t invParam 
) const

Definition at line 100 of file fermact_qprop.cc.

References Chroma::state.

◆ qprop() [3/4]

template<typename T , typename P , typename Q >
virtual SystemSolver<T>* Chroma::FermAct4D< T, P, Q >::qprop ( Handle< FermState< T, P, Q > >  state,
const GroupXML_t invParam 
) const
virtual

◆ qprop() [4/4]

template<typename T , typename P , typename Q >
virtual SystemSolver<T>* Chroma::FermAct4D< T, P, Q >::qprop ( Handle< FermState< T, P, Q > >  state,
const GroupXML_t invParam 
) const
virtual

The documentation for this class was generated from the following files: