7 #ifndef __two_flavor_ratio_conv_conv_monomial_w_h__
8 #define __two_flavor_ratio_conv_conv_monomial_w_h__
33 template<
typename P,
typename Q,
typename Phi>
51 push(xml_out,
"TwoFlavorExactRatioConvConvWilsonTypeFermMonomial");
108 M->deriv(F_tmp, X, Y,
MINUS);
112 M->deriv(F_tmp, Y, X,
PLUS);
123 write(xml_out,
"n_count", res.n_count);
196 QDPIO::cout <<
"TwoFlavRatioConvConvWilson4DMonomial: resetting Predictor at end of field refresh" << std::endl;
200 push(xml_out,
"FieldRefreshment");
218 catch(std::bad_cast) {
219 QDPIO::cerr <<
"Failed to cast input Monomial to TwoFlavorExactRatioConvConvWilsonTypeFermMonomial " << std::endl;
274 template<
typename P,
typename Q,
typename Phi>
288 push(xml_out,
"TwoFlavorExactUnprecRatioConvConvWilsonTypeFermMonomial");
307 QDPIO::cout <<
"TwoFlavRatioConvConvWilson4DMonomial: resetting Predictor before energy calc solve" << std::endl;
321 (*M_prec)(phi_tmp, X,
PLUS);
326 write(xml_out,
"n_count", res.n_count);
327 write(xml_out,
"S", action);
364 template<
typename P,
typename Q,
typename Phi,
template<
class,
class,
class>
class EOFermActT,
365 template<
class,
class,
class>
class EOLinOpT>
381 push(xml_out,
"S_odd_odd");
398 X[ M->subset() ] =
zero;
401 QDPIO::cout <<
"TwoFlavRatioConvConvWilson4DMonomial: resetting Predictor before energy calc solve" << std::endl;
415 (*M_prec)(phi_tmp, X,
PLUS);
417 Double action = innerProductReal(
getPhi(), phi_tmp, M->subset());
419 write(xml_out,
"n_count", res.n_count);
420 write(xml_out,
"S_oo", action);
434 push(xml_out,
"TwoFlavorExactEOPrecRatioConvConvWilsonTypeFermMonomialT");
438 write(xml_out,
"S", action);
465 template<
typename P,
typename Q,
typename Phi>
469 template<
typename P,
typename Q,
typename Phi>
480 template<
typename P,
typename Q,
typename Phi,
template <
class,
class,
class>
class EOFermActT,
481 template <
class,
class,
class>
class EOLinOpT>
505 template<
typename P,
typename Q,
typename Phi>
510 template<
typename P,
typename Q,
typename Phi>
Monomials - gauge action or fermion binlinear contributions for HMC.
Chronological predictor for HMC.
Abstract interface for a Chronological Solution predictor.
virtual const Q & getQ(void) const =0
virtual DiffLinearOperator< T, Q, P > * linOp(Handle< FermState< T, P, Q > > state) const =0
Produce a linear operator for this action.
Even-odd preconditioned linear operator.
Even-odd preconditioned Wilson-like fermion actions including derivatives.
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.
Even-odd preconditioned linear operator.
Symmetric even-odd preconditioned Wilson-like fermion actions including derivatives.
Exact 2 degen flavor even-odd preconditioned RatioConvConv type fermact monomial.
virtual const EOFermActT< Phi, P, Q > & getNumerFermAct() const =0
Get at fermion action.
virtual const Phi & getPhi() const =0
Accessor for pseudofermion with Pf.
virtual ~TwoFlavorExactEOPrecConstDetRatioConvConvWilsonTypeFermMonomialT()
virtual destructor:
virtual Double S_even_even(const AbsFieldState< P, Q > &s)
Even even contribution (eg ln det Clover)
virtual const EOFermActT< Phi, P, Q > & getDenomFermAct() const =0
Get at the preconditioned fermion actions.
Exact 2 degen flavor even-odd preconditioned RatioConvConv type fermact monomial.
Double S(const AbsFieldState< P, Q > &s)
Compute the total action.
virtual const EOFermActT< Phi, P, Q > & getNumerFermAct() const =0
Get at fermion action.
virtual AbsChronologicalPredictor4D< Phi > & getMDSolutionPredictor()=0
Get the initial guess predictor.
virtual const EOFermActT< Phi, P, Q > & getDenomFermAct() const =0
Get at the preconditioned fermion actions.
virtual const Phi & getPhi() const =0
Accessor for pseudofermion with Pf.
virtual Double S_odd_odd(const AbsFieldState< P, Q > &s)
Compute the odd odd contribution (eg.
virtual ~TwoFlavorExactEOPrecRatioConvConvWilsonTypeFermMonomialT()
virtual destructor:
virtual Phi & getPhi()=0
mutator for pseudofermion with Pf
virtual const GroupXML_t & getNumerInvParams() const =0
Get parameters for the inverter.
virtual Double S_even_even(const AbsFieldState< P, Q > &s)=0
Even even contribution (eg ln det Clover)
Exact 2 flavor RatioConvConv type monomial.
~TwoFlavorExactRatioConvConvWilsonTypeFermMonomial()
virtual destructor:
virtual void refreshInternalFields(const AbsFieldState< P, Q > &field_state)
Refresh pseudofermions.
virtual Phi & getPhi()=0
Mutator for pseudofermion.
virtual Double S(const AbsFieldState< P, Q > &s)=0
Compute the total action.
virtual const Phi & getPhi() const =0
Accessor for pseudofermion with Pf.
virtual void resetPredictors()
Reset predictors.
virtual AbsChronologicalPredictor4D< Phi > & getMDSolutionPredictor()=0
Get the initial guess predictor.
virtual const GroupXML_t & getDenomInvParams() const =0
Parameters for inverting with the action of the denominator.
virtual void dsdq(P &F, const AbsFieldState< P, Q > &s)
Compute dsdq for the system...
virtual const WilsonTypeFermAct< Phi, P, Q > & getNumerFermAct() const =0
Get at fermion action.
virtual const GroupXML_t & getNumerInvParams() const =0
Parameters for inverting with the action of the numerator.
virtual const WilsonTypeFermAct< Phi, P, Q > & getDenomFermAct() const =0
Get at fermion action for preconditioner.
virtual const WilsonTypeFermAct< Phi, P, Q > & getFermAct() const
Get at fermion action.
virtual void setInternalFields(const Monomial< P, Q > &m)
Copy pseudofermions if any.
Exact 2 degen flavor unpreconditioned RatioConvConv type fermact monomial.
virtual Double S(const AbsFieldState< P, Q > &s)
Compute the total action.
virtual AbsChronologicalPredictor4D< Phi > & getMDSolutionPredictor()=0
Get at the chronological predcitor.
virtual const Phi & getPhi() const =0
Accessor for pseudofermion with Pf.
virtual const UnprecWilsonTypeFermAct< Phi, P, Q > & getDenomFermAct() const =0
Get at the preconditioned fermion actions.
virtual const UnprecWilsonTypeFermAct< Phi, P, Q > & getNumerFermAct() const =0
Get at fermion action.
~TwoFlavorExactUnprecRatioConvConvWilsonTypeFermMonomial()
virtual destructor:
virtual const GroupXML_t & getNumerInvParams() const =0
Get parameters for the inverter.
virtual Phi & getPhi()=0
mutator for pseudofermion with Pf
Unpreconditioned Wilson-like fermion actions with derivatives.
Wilson-like fermion actions.
virtual DiffLinearOperator< T, P, Q > * lMdagM(Handle< FermState< T, P, Q > > state) const
Produce a linear operator M^dag.M for this action.
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.
Even-odd const determinant Wilson-like fermact.
Helper function for calculating forces.
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams ¶m)
Writer parameters.
void reset()
Reset the default gauge field state.
void monitorForces(XMLWriter &xml_out, const std::string &path, const multi1d< LatticeColorMatrix > &F)
Calculate and write out forces.
multi1d< LatticeColorMatrix > P
Asqtad Staggered-Dirac operator.
LinOpSysSolverMGProtoClover::Q Q
push(xml_out,"Condensates")
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
multi1d< LatticeFermion > s(Ncb)
FloatingPoint< double > Double
Symmetric even-odd const determinant Wilson-like fermact.
Hold group xml and type id.
Holds return info from SystemSolver call.
Handle< LinearOperator< T > > MdagM
multi1d< LatticeColorMatrix > P
Wilson-like fermion actions.
static INTERNAL_PRECISION F