asqtad_mdagm_s.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 // $Id: asqtad_mdagm_s.h,v 3.1 2007/02/22 21:11:46 bjoo Exp $
00003 /*! \file
00004  *  \brief Unpreconditioned Wilson fermion linear operator
00005  */
00006 // NEW $Id: asqtad_linop_s.h 2003/11/13 steve 
00007 // Asqtad Staggered fermion linear operator
00008 
00009 #ifndef __asqtad_mdagm_s_h__
00010 #define __asqtad_mdagm_s_h__
00011 
00012 #include "linearop.h"
00013 #include "actions/ferm/linop/asqtad_dslash.h"
00014 
00015 
00016 
00017 namespace Chroma 
00018 { 
00019   //! Asqtad Staggered-Dirac operator
00020   /*!
00021    * \ingroup linop
00022    *
00023    * This routine is specific to Staggered fermions!
00024    *
00025    *                                           +
00026    * This subroutine applies the matrix  or  (M M)    to the vector
00027    *                                            E,E
00028    * Psi,
00029    *
00030    *                       {   ~
00031    *                       {   M(U) . Psi              if  ISign = PLUS
00032    *               Chi  =  {
00033    *                       {   ~   +
00034    *                       {   M(U)  . Psi             if  ISign = MINUS
00035    * NEED TO THINK MORE ABOUT THE ISIGN HERE AS IS IT NOT REALLY NEEDED!!!
00036    * FOR NOW JUST CALL THIS ROUTINE WITH A PLUS!!
00037 
00038    * Algorithm:
00039 
00040    * The kernel for Staggered fermions is
00041    *        +
00042    *      (M M) =  4m**2  - D  D
00043    *         E             EO OE
00044    */
00045 
00046   class AsqtadMdagM : public DiffLinearOperator<LatticeStaggeredFermion, 
00047                              multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
00048   {
00049   public:
00050     //! Partial constructor
00051     AsqtadMdagM() {}
00052 
00053     //! Full constructor
00054     AsqtadMdagM(Handle<AsqtadConnectStateBase> state, const Real& Mass_)
00055       {create(state, Mass_);}
00056 
00057     //! Creation routine
00058     void create(Handle<AsqtadConnectStateBase> state, const Real& Mass_);
00059     
00060     //! Destructor is automatic
00061     ~AsqtadMdagM() {}
00062 
00063     //! Only defined on the even subset
00064     const Subset& subset() const {return rb[0];}
00065 
00066     //! Return the fermion BC object for this linear operator
00067     const FermBC<LatticeStaggeredFermion,
00068                  multi1d<LatticeColorMatrix>,
00069                  multi1d<LatticeColorMatrix> >& getFermBC() const {return D.getFermBC();}
00070 
00071     //! Apply the operator onto a source vector
00072     void operator() (LatticeStaggeredFermion& chi, const LatticeStaggeredFermion& psi, enum PlusMinus isign) const;
00073 
00074   private:
00075     Real Mass;
00076     AsqtadDslash D;
00077   };
00078 
00079 
00080 } // End Namespace Chroma
00081 
00082 
00083 #endif

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