7 #ifndef __two_flavor_polynomial_monomial_w_h__
8 #define __two_flavor_polynomial_monomial_w_h__
30 template<
typename P,
typename Q,
typename Phi>
48 push(xml_out,
"TwoFlavorExactPolynomialWilsonTypeFermMonomial");
93 push(xml_out,
"TwoFlavorExactPolynomialWilsonTypeFermMonomial");
144 catch(std::bad_cast) {
145 QDPIO::cerr <<
"Failed to cast input Monomial to TwoFlavorExactPolynomialWilsonTypeFermMonomial " << std::endl;
154 virtual const Phi&
getPhi(
void)
const = 0;
176 template<
typename P,
typename Q,
typename Phi>
190 push(xml_out,
"TwoFlavorExactPolynomialUnprecWilsonTypeFermMonomial");
211 write(xml_out,
"S", action);
222 virtual const Phi&
getPhi(
void)
const = 0;
242 template<
typename P,
typename Q,
typename Phi>
258 push(xml_out,
"S_odd_odd");
273 Double action = innerProductReal(
getPhi(), X, Poly->subset());
277 write(xml_out,
"S_oo", action);
291 push(xml_out,
"TwoFlavorExactPolynomialEvenOddPrecWilsonTypeFermMonomial");
295 write(xml_out,
"S", action);
311 virtual const Phi&
getPhi(
void)
const = 0;
325 template<
typename P,
typename Q,
typename Phi>
Monomials - gauge action or fermion binlinear contributions for HMC.
Chronological predictor for HMC.
virtual const Q & getQ(void) const =0
Fermionic monomials (binlinears in fermion fields)
virtual const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this action.
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.
An abstract monomial class, for inexact algorithms.
Polynomial Wilson-like fermion actions with derivatives.
virtual PolyLinearOperator< T, P, Q > * polyLinOp(Handle< FermState< T, P, Q > > state) const =0
Produce a polynomial linear operator for this action.
virtual PolyPrecSystemSolver< T > * invPolyPrec(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.
Exact 2 degen flavor even-odd preconditioned fermact monomial.
virtual const PolyWilsonTypeFermAct< Phi, P, Q > & getFermAct() const =0
Get at fermion action.
virtual ~TwoFlavorExactEvenOddPrecConstDetPolynomialWilsonTypeFermMonomial()
virtual destructor:
virtual Double S_even_even(const AbsFieldState< P, Q > &s)
Even even contribution (eg For this kind of Monomial it is 0)
Exact 2 degen flavor even-odd preconditioned fermact monomial.
virtual ~TwoFlavorExactEvenOddPrecPolynomialWilsonTypeFermMonomial()
virtual destructor:
virtual const Phi & getPhi(void) const =0
Accessor for pseudofermion with Pf index i (read only)
virtual Phi & getPhi(void)=0
mutator for pseudofermion with Pf index i
virtual Double S_even_even(const AbsFieldState< P, Q > &s)=0
Even even contribution (eg ln det Clover)
virtual Double S_odd_odd(const AbsFieldState< P, Q > &s)
Compute the odd odd contribution (eg.
virtual const PolyWilsonTypeFermAct< Phi, P, Q > & getFermAct() const =0
Get at fermion action.
virtual const GroupXML_t & getInvParams(void) const =0
Get inverter params.
Double S(const AbsFieldState< P, Q > &s)
Compute the total action.
Exact 2 degen flavor fermact monomial.
virtual ~TwoFlavorExactPolynomialWilsonTypeFermMonomial()
virtual destructor:
virtual const Phi & getPhi(void) const =0
Accessor for pseudofermion with Pf index i (read only)
virtual void dsdq(P &F, const AbsFieldState< P, Q > &s)
Compute dsdq for the system...
virtual const PolyWilsonTypeFermAct< Phi, P, Q > & getFermAct(void) const =0
Get at fermion action.
virtual Phi & getPhi(void)=0
mutator for pseudofermion with Pf index i
virtual void refreshInternalFields(const AbsFieldState< P, Q > &field_state)
Refresh pseudofermions.
virtual const GroupXML_t & getInvParams(void) const =0
Get inverter params.
virtual void setInternalFields(const Monomial< P, Q > &m)
Copy pseudofermions if any.
virtual Double S(const AbsFieldState< P, Q > &s)=0
Compute the total action.
Exact 2 degen flavor unpreconditioned fermact monomial.
virtual ~TwoFlavorExactUnprecPolynomialWilsonTypeFermMonomial()
virtual destructor:
virtual const PolyWilsonTypeFermAct< Phi, P, Q > & getFermAct(void) const =0
Get at fermion action.
virtual const GroupXML_t & getInvParams(void) const =0
Get inverter params.
virtual const Phi & getPhi(void) const =0
Accessor for pseudofermion with Pf index i (read only)
virtual Phi & getPhi(void)=0
mutator for pseudofermion with Pf index i
virtual Double S(const AbsFieldState< P, Q > &s)
Compute the total action.
virtual DiffLinearOperator< T, P, Q > * lMdagM(Handle< FermState< T, P, Q > > state) const
Produce a linear operator M^dag.M for this action.
Helper function for calculating forces.
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams ¶m)
Writer parameters.
void monitorForces(XMLWriter &xml_out, const std::string &path, const multi1d< LatticeColorMatrix > &F)
Calculate and write out forces.
Asqtad Staggered-Dirac operator.
push(xml_out,"Condensates")
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
multi1d< LatticeFermion > s(Ncb)
FloatingPoint< double > Double
Hold group xml and type id.
Holds return info from SystemSolver call.
Handle< LinearOperator< T > > MdagM
multi1d< LatticeColorMatrix > P
Class structure for polynomial fermion actions.
static INTERNAL_PRECISION F