CHROMA
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members

4D Zolotarev variant of Overlap-Dirac operator More...

#include <ovlap_partfrac4d_fermact_w.h>

Inheritance diagram for Chroma::OvlapPartFrac4DFermAct:
Chroma::OverlapFermActBase Chroma::UnprecWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > Chroma::WilsonTypeFermAct< T, P, Q > Chroma::WilsonTypeFermAct< T, P, Q > Chroma::DiffFermAct4D< T, P, Q > Chroma::DiffFermAct4D< T, P, Q > Chroma::DiffFermAct4D< T, P, Q > Chroma::DiffFermAct4D< T, P, Q > Chroma::FermAct4D< T, P, Q > Chroma::FermAct4D< T, P, Q > Chroma::FermAct4D< T, P, Q > Chroma::FermAct4D< T, P, Q > Chroma::FermAct4D< T, P, Q > Chroma::FermAct4D< T, P, Q > Chroma::FermAct4D< T, P, Q > Chroma::FermAct4D< T, P, Q >

Public Types

typedef LatticeFermion T
 
typedef multi1d< LatticeColorMatrix > P
 
typedef multi1d< LatticeColorMatrix > Q
 
- Public Types inherited from Chroma::OverlapFermActBase
typedef LatticeFermion T
 
typedef multi1d< LatticeColorMatrix > P
 
typedef multi1d< LatticeColorMatrix > Q
 

Public Member Functions

 OvlapPartFrac4DFermAct (Handle< FermBC< T, P, Q > > fbc_, const OvlapPartFrac4DFermActParams &params)
 Construct from param struct. More...
 
OvlapPartFrac4DFermActclone () const
 Virtual copy constructor. More...
 
Real getQuarkMass () const
 Return the quark mass. More...
 
bool isChiral () const
 Is the operator Chiral. More...
 
EigenConnectStatecreateState (const multi1d< LatticeColorMatrix > &u, XMLReader &state_info_xml, const std::string &state_info_path) const
 Create OverlapFermState<T,P,Q> from XML. More...
 
EigenConnectStatecreateState (const multi1d< LatticeColorMatrix > &u_) const
 Given links, create the state needed for the linear operators. More...
 
UnprecLinearOperator< T, P, Q > * unprecLinOp (Handle< FermState< T, P, Q > > state, const Real &m_q) const
 Produce a linear operator for this action. More...
 
LinearOperator< T > * linOpPrecondition (Handle< FermState< T, P, Q > > state) const
 Produce a linear operator for this action. More...
 
DiffLinearOperator< T, P, Q > * lMdagM (Handle< FermState< T, P, Q > > state) const
 Produce a linear operator M^dag.M for this action. More...
 
DiffLinearOperator< T, P, Q > * lMdagM (Handle< FermState< T, P, Q > > state, const Chirality &chirality) const
 Produce a linear operator M^dag.M for this action to be applied. More...
 
LinearOperator< T > * lMdagMPrecondition (Handle< FermState< T, P, Q > > state) const
 Produce a linear operator M^dag.M for this action. More...
 
LinearOperator< T > * lMdagMPrecondition (Handle< FermState< T, P, Q > > state, const Chirality &chirality) const
 Produce a linear operator M^dag.M for this action to be applied. More...
 
LinearOperator< T > * lgamma5epsH (Handle< FermState< T, P, Q > > state) const
 Produce a linear operator that gives back gamma_5 eps(H) More...
 
LinearOperator< T > * lgamma5epsHPrecondition (Handle< FermState< T, P, Q > > state) const
 Produce a linear operator that gives back gamma_5 eps(H) More...
 
 ~OvlapPartFrac4DFermAct ()
 Destructor is automatic. More...
 
- Public Member Functions inherited from Chroma::OverlapFermActBase
virtual UnprecLinearOperator< T, P, Q > * linOp (Handle< FermState< T, P, Q > > state) const
 Override to produce a DWF-link unprec. linear operator for this action. More...
 
virtual LinearOperator< T > * hermitianLinOp (Handle< FermState< T, P, Q > > state) const
 Produce a hermitian version of the linear operator. More...
 
virtual LinearOperator< T > * DeltaLs (Handle< FermState< T, P, Q > > state) const
 
SystemSolver< T > * qprop (Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
 Redefine quark propagator routine for 4D fermions. More...
 
void multiQprop (multi1d< T > &psi, const multi1d< Real > &masses, Handle< FermState< T, P, Q > > state, const T &chi, const GroupXML_t &invParam, const int n_soln, int &ncg_had) const
 Define a multi mass qprop. More...
 
void multiQuarkProp (multi1d< LatticePropagator > &q_sol, XMLWriter &xml_out, const LatticePropagator &q_src, Handle< FermState< T, P, Q > > state, const multi1d< Real > &masses, const GroupXML_t &invParam, const int n_soln, int &ncg_had)
 Define a multi mass qprop. More...
 
- Public Member Functions inherited from Chroma::UnprecWilsonTypeFermAct< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > >
virtual ~UnprecWilsonTypeFermAct ()
 Virtual destructor to help with cleanup;. More...
 
virtual ~UnprecWilsonTypeFermAct ()
 Virtual destructor to help with cleanup;. More...
 
- Public Member Functions inherited from Chroma::WilsonTypeFermAct< T, P, Q >
virtual ~WilsonTypeFermAct ()
 Virtual destructor to help with cleanup;. More...
 
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. More...
 
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. More...
 
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. 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
 Given a complete propagator as a source, this does all the inversions needed. More...
 
virtual ~WilsonTypeFermAct ()
 Virtual destructor to help with cleanup;. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
void quarkProp (LatticePropagator &q_sol, XMLWriter &xml_out, const LatticePropagator &q_src, Handle< FermState< LF, LCM, LCM > > state, const GroupXML_t &invParam, QuarkSpinType quarkSpinType, int &ncg_had) const
 Given a complete propagator as a source, this does all the inversions needed. More...
 
LinOpSystemSolver< LF > * invLinOp (Handle< FermState< LF, LCM, LCM > > state, const GroupXML_t &invParam) const
 
MdagMSystemSolver< LF > * invMdagM (Handle< FermState< LF, LCM, LCM > > state, const GroupXML_t &invParam) const
 Return a linear operator solver for this action to solve MdagM*psi=chi. More...
 
LinOpMultiSystemSolver< LF > * mInvLinOp (Handle< FermState< LF, LCM, LCM > > state, const GroupXML_t &invParam) const
 Return a linear operator solver for this action to solve (M+shift_i)*psi_i = chi. More...
 
MdagMMultiSystemSolver< LF > * mInvMdagM (Handle< FermState< LF, LCM, LCM > > state, const GroupXML_t &invParam) const
 Return a linear operator solver for this action to solve (MdagM+shift_i)*psi_i = chi. More...
 
MdagMMultiSystemSolverAccumulate< LF > * mInvMdagMAcc (Handle< FermState< LF, LCM, LCM > > state, const GroupXML_t &invParam) const
 Return a linear operator solver for this action to solve (MdagM+shift_i)*psi_i = chi. More...
 
- Public Member Functions inherited from Chroma::DiffFermAct4D< T, P, Q >
virtual ~DiffFermAct4D ()
 Virtual destructor to help with cleanup;. More...
 
virtual ~DiffFermAct4D ()
 Virtual destructor to help with cleanup;. More...
 
- Public Member Functions inherited from Chroma::FermAct4D< T, P, Q >
virtual ~FermAct4D ()
 Virtual destructor to help with cleanup;. More...
 
virtual ~FermAct4D ()
 Virtual destructor to help with cleanup;. 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 const FermBC< T, P, Q > & getFermBC () const
 Return the fermion BC object for this action. 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 const FermBC< T, P, Q > & getFermBC () const
 Return the fermion BC object for this action. 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...
 

Protected Member Functions

const CreateFermState< T, P, Q > & getCreateState () const
 Return the factory object that produces a state. More...
 
void init (int &numroot, Real &coeffP, multi1d< Real > &resP, multi1d< Real > &rootQ, int &NEig, multi1d< Real > &EigValFunc, const EigenConnectState &state) const
 Helper in construction. More...
 
void initPrec (int &numroot, Real &coeffP, multi1d< Real > &resP, multi1d< Real > &rootQ, int &NEig, multi1d< Real > &EigValFunc, const EigenConnectState &state) const
 Construct stuff but use RatPolyDegPrec in the polynomial. More...
 

Private Member Functions

 OvlapPartFrac4DFermAct ()
 Partial constructor not allowed. More...
 
void operator= (const OvlapPartFrac4DFermAct &a)
 

Private Attributes

Handle< FermBC< T, P, Q > > fbc
 
Handle< CreateFermState< T, P, Q > > cfs
 
Handle< UnprecWilsonTypeFermAct< T, P, Q > > Mact
 
OvlapPartFrac4DFermActParams params
 

Detailed Description

4D Zolotarev variant of Overlap-Dirac operator

This routine is specific to Wilson-like fermions!

NOTE: for now we assume the kernel is a fund. rep. fermion type, but that is not necessary

Definition at line 75 of file ovlap_partfrac4d_fermact_w.h.

Member Typedef Documentation

◆ P

typedef multi1d<LatticeColorMatrix> Chroma::OvlapPartFrac4DFermAct::P

Definition at line 80 of file ovlap_partfrac4d_fermact_w.h.

◆ Q

typedef multi1d<LatticeColorMatrix> Chroma::OvlapPartFrac4DFermAct::Q

Definition at line 81 of file ovlap_partfrac4d_fermact_w.h.

◆ T

typedef LatticeFermion Chroma::OvlapPartFrac4DFermAct::T

Definition at line 79 of file ovlap_partfrac4d_fermact_w.h.

Constructor & Destructor Documentation

◆ OvlapPartFrac4DFermAct() [1/2]

Chroma::OvlapPartFrac4DFermAct::OvlapPartFrac4DFermAct ( Handle< FermBC< T, P, Q > >  fbc_,
const OvlapPartFrac4DFermActParams params 
)

◆ ~OvlapPartFrac4DFermAct()

Chroma::OvlapPartFrac4DFermAct::~OvlapPartFrac4DFermAct ( )
inline

Destructor is automatic.

Definition at line 163 of file ovlap_partfrac4d_fermact_w.h.

◆ OvlapPartFrac4DFermAct() [2/2]

Chroma::OvlapPartFrac4DFermAct::OvlapPartFrac4DFermAct ( )
private

Partial constructor not allowed.

Referenced by clone().

Member Function Documentation

◆ clone()

OvlapPartFrac4DFermAct* Chroma::OvlapPartFrac4DFermAct::clone ( ) const
inlinevirtual

Virtual copy constructor.

Implements Chroma::OverlapFermActBase.

Definition at line 89 of file ovlap_partfrac4d_fermact_w.h.

References OvlapPartFrac4DFermAct().

◆ createState() [1/2]

EigenConnectState * Chroma::OvlapPartFrac4DFermAct::createState ( const multi1d< LatticeColorMatrix > &  u,
XMLReader &  state_info_xml,
const std::string &  state_info_path 
) const
virtual

◆ createState() [2/2]

EigenConnectState * Chroma::OvlapPartFrac4DFermAct::createState ( const multi1d< LatticeColorMatrix > &  u_) const
virtual

Given links, create the state needed for the linear operators.

Create a ConnectState with just the gauge fields.

Override the parent Create a ConnectState with just the gauge fields

Reimplemented from Chroma::FermionAction< T, P, Q >.

Definition at line 1304 of file ovlap_partfrac4d_fermact_w.cc.

References fbc.

◆ getCreateState()

const CreateFermState<T,P,Q>& Chroma::OvlapPartFrac4DFermAct::getCreateState ( ) const
inlineprotectedvirtual

Return the factory object that produces a state.

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

Definition at line 167 of file ovlap_partfrac4d_fermact_w.h.

References cfs.

◆ getQuarkMass()

Real Chroma::OvlapPartFrac4DFermAct::getQuarkMass ( void  ) const
inlinevirtual

Return the quark mass.

Implements Chroma::OverlapFermActBase.

Definition at line 92 of file ovlap_partfrac4d_fermact_w.h.

References Chroma::OvlapPartFrac4DFermActParams::Mass, and params.

◆ init()

void Chroma::OvlapPartFrac4DFermAct::init ( int &  numroot,
Real &  coeffP,
multi1d< Real > &  resP,
multi1d< Real > &  rootQ,
int &  NEig,
multi1d< Real > &  EigValFunc,
const EigenConnectState state 
) const
protected

◆ initPrec()

void Chroma::OvlapPartFrac4DFermAct::initPrec ( int &  numroot,
Real &  coeffP,
multi1d< Real > &  resP,
multi1d< Real > &  rootQ,
int &  NEig,
multi1d< Real > &  EigValFunc,
const EigenConnectState state 
) const
protected

◆ isChiral()

bool Chroma::OvlapPartFrac4DFermAct::isChiral ( ) const
inlinevirtual

Is the operator Chiral.

The operator is chiral if it satisfies the GW relation (or a massive version of it). It is certainly the intention that this operator be chiral in this sense. However, setting it up wrongly may make it non chiral. that would need a run-time check. So this is a hack below, signifying intent

Implements Chroma::OverlapFermActBase.

Definition at line 102 of file ovlap_partfrac4d_fermact_w.h.

References Chroma::OvlapPartFrac4DFermActParams::isChiralP, and params.

◆ lgamma5epsH()

LinearOperator< LatticeFermion > * Chroma::OvlapPartFrac4DFermAct::lgamma5epsH ( Handle< FermState< T, P, Q > >  state_) const
virtual

◆ lgamma5epsHPrecondition()

LinearOperator< LatticeFermion > * Chroma::OvlapPartFrac4DFermAct::lgamma5epsHPrecondition ( Handle< FermState< T, P, Q > >  state_) const
virtual

◆ linOpPrecondition()

LinearOperator< LatticeFermion > * Chroma::OvlapPartFrac4DFermAct::linOpPrecondition ( Handle< FermState< T, P, Q > >  state_) const
virtual

◆ lMdagM() [1/2]

DiffLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > * Chroma::OvlapPartFrac4DFermAct::lMdagM ( Handle< FermState< T, P, Q > >  state_) const
virtual

Produce a linear operator M^dag.M for this action.

Produce a conventional MdagM operator for this action.

NOTE: the arg MUST be the original base because C++ requires it for a virtual func! The function will have to downcast to get the correct state

This is the operator which you can always use The operator acts on the entire lattice

Parameters
state_gauge field state (Read)

Implements Chroma::OverlapFermActBase.

Definition at line 1133 of file ovlap_partfrac4d_fermact_w.cc.

References Chroma::OverlapFermActBase::linOp().

Referenced by lMdagM(), and lMdagMPrecondition().

◆ lMdagM() [2/2]

DiffLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > * Chroma::OvlapPartFrac4DFermAct::lMdagM ( Handle< FermState< T, P, Q > >  state_,
const Chirality ichiral 
) const
virtual

◆ lMdagMPrecondition() [1/2]

LinearOperator< LatticeFermion > * Chroma::OvlapPartFrac4DFermAct::lMdagMPrecondition ( Handle< FermState< T, P, Q > >  state_) const
virtual

Produce a linear operator M^dag.M for this action.

Produce a conventional MdagM operator for this action.

NOTE: the arg MUST be the original base because C++ requires it for a virtual func! The function will have to downcast to get the correct state

This is the operator which you can always use The operator acts on the entire lattice

Parameters
state_gauge field state (Read)

Implements Chroma::OverlapFermActBase.

Definition at line 1293 of file ovlap_partfrac4d_fermact_w.cc.

References linOpPrecondition().

◆ lMdagMPrecondition() [2/2]

LinearOperator< LatticeFermion > * Chroma::OvlapPartFrac4DFermAct::lMdagMPrecondition ( Handle< FermState< T, P, Q > >  state_,
const Chirality ichiral 
) const
virtual

◆ operator=()

void Chroma::OvlapPartFrac4DFermAct::operator= ( const OvlapPartFrac4DFermAct a)
inlineprivate

Definition at line 192 of file ovlap_partfrac4d_fermact_w.h.

◆ unprecLinOp()

UnprecLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > * Chroma::OvlapPartFrac4DFermAct::unprecLinOp ( Handle< FermState< T, P, Q > >  state_,
const Real &  m_q 
) const
virtual

Produce a linear operator for this action.

NOTE: the arg MUST be the original base because C++ requires it for a virtual func! The function will have to downcast to get the correct state

The operator acts on the entire lattice

Parameters
state_gauge field state (Read)
m_qmass for this operator (Read)

Implements Chroma::OverlapFermActBase.

Definition at line 840 of file ovlap_partfrac4d_fermact_w.cc.

References Chroma::END_CODE(), init(), Chroma::OvlapPartFrac4DFermActParams::inner_solver_type, Chroma::OvlapPartFrac4DFermActParams::invParamInner, Mact, Chroma::OvlapPartFrac4DFermActParams::InvParamInner::MaxCG, Chroma::OVERLAP_INNER_CG_DOUBLE_PASS, Chroma::OVERLAP_INNER_CG_SINGLE_PASS, params, Chroma::OvlapPartFrac4DFermActParams::ReorthFreqInner, Chroma::OvlapPartFrac4DFermActParams::InvParamInner::RsdCG, Chroma::START_CODE(), and Chroma::state.

Member Data Documentation

◆ cfs

Handle< CreateFermState<T,P,Q> > Chroma::OvlapPartFrac4DFermAct::cfs
private

Definition at line 196 of file ovlap_partfrac4d_fermact_w.h.

Referenced by getCreateState(), and OvlapPartFrac4DFermAct().

◆ fbc

Handle< FermBC<T,P,Q> > Chroma::OvlapPartFrac4DFermAct::fbc
private

Definition at line 195 of file ovlap_partfrac4d_fermact_w.h.

Referenced by createState(), and OvlapPartFrac4DFermAct().

◆ Mact

Handle< UnprecWilsonTypeFermAct<T,P,Q> > Chroma::OvlapPartFrac4DFermAct::Mact
private

◆ params

OvlapPartFrac4DFermActParams Chroma::OvlapPartFrac4DFermAct::params
private

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