asqtad_cps_wrapper_qprop.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 // $Id: asqtad_cps_wrapper_qprop.h,v 3.7 2007/12/08 11:26:53 mcneile Exp $
00003 /*! \file
00004  *  \brief Propagator solver for an even-odd non-preconditioned fermion operator
00005  *
00006  *  Solve for the propagator of an even-odd non-preconditioned fermion operator
00007  */
00008 
00009 #ifndef ASQTAD_CPS_WRAPPER_QPROP_H
00010 #define ASQTAD_CPS_WRAPPER_QPROP_H
00011 
00012 
00013 #include "chromabase.h"
00014 #include "handle.h"
00015 //#include "invtype.h"
00016 #include "syssolver.h"
00017 #include "linearop.h"
00018 #include "fermact.h"
00019 #include "actions/ferm/invert/syssolver_cg_params.h"
00020 #include "state.h"
00021 #include "actions/ferm/invert/syssolver_cg_params.h"
00022 #include "stagtype_fermact_s.h"
00023 #include "actions/ferm/fermstates/asqtad_state.h"
00024 
00025 namespace Chroma
00026 {
00027 
00028   //! QPROP for wrapping CPS asqtad QPROP
00029   /*! \ingroup qprop
00030    *
00031    */
00032   class AsqtadCPSWrapperQprop : public SystemSolver<LatticeStaggeredFermion>
00033   {
00034   public:
00035     // Typedefs to save typing
00036     typedef LatticeStaggeredFermion      T;
00037     typedef multi1d<LatticeColorMatrix>  P;
00038     typedef multi1d<LatticeColorMatrix>  Q;
00039 
00040     //! Constructor
00041     /*!
00042       // Keeping the same interface as for the ordinary staggered 
00043       // qprop...
00044       //
00045       // But the M_ and A_ linop handles are no longer kept
00046       // (are ignored) -- is there a nice way around this ? 
00047       // Perhaps not
00048      */
00049     AsqtadCPSWrapperQprop(
00050                           const EvenOddStaggeredTypeFermAct<T,P,Q>& S_,
00051                           Handle< FermState<T,P,Q> > state,
00052                           const SysSolverCGParams& invParam_);
00053     
00054     //! Destructor is automatic
00055     ~AsqtadCPSWrapperQprop();
00056 
00057     //! Return the subset on which the operator acts
00058     const Subset& subset() const {return all;}
00059 
00060     //! Solver the linear system
00061     /*!
00062      * \param psi      quark propagator ( Modify )
00063      * \param chi      source ( Read )
00064      * \return number of CG iterations
00065      */
00066         SystemSolverResults_t operator() (LatticeStaggeredFermion& psi, const LatticeStaggeredFermion& chi) const;
00067 
00068 
00069   private:
00070     // Hide default constructor
00071     AsqtadCPSWrapperQprop() {}
00072 
00073     Real Mass;
00074     SysSolverCGParams invParam;
00075     //    Handle< FermState<T,P,Q> > state;
00076     Handle<AsqtadConnectStateBase> state;
00077 
00078     Handle< EvenOddLinearOperator<T,P,Q> > M;
00079 
00080   };
00081 
00082 } // End namespace
00083 
00084 #endif 
00085 

Generated on Sun Nov 22 04:28:49 2009 for CHROMA by  doxygen 1.4.7