00001
00002
00003
00004
00005
00006
00007 #include "chromabase.h"
00008 #include "actions/ferm/linop/asqtad_mdagm_s.h"
00009
00010 using namespace QDP::Hints;
00011 namespace Chroma
00012 {
00013
00014
00015
00016
00017
00018
00019
00020 void AsqtadMdagM::create(Handle<AsqtadConnectStateBase> state,
00021 const Real& Mass_)
00022 {
00023 Mass = Mass_;
00024
00025
00026
00027
00028 D.create(state);
00029 }
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 void AsqtadMdagM::operator()(LatticeStaggeredFermion& chi,
00043 const LatticeStaggeredFermion& psi,
00044 enum PlusMinus isign) const
00045 {
00046 START_CODE();
00047
00048 Real mass_sq = Mass*Mass;
00049 LatticeStaggeredFermion tmp1, tmp2;
00050 moveToFastMemoryHint(tmp1);
00051 moveToFastMemoryHint(tmp2);
00052
00053 tmp1 = tmp2 = zero;
00054
00055
00056
00057
00058
00059 D.apply(tmp1, psi, isign, 1);
00060 D.apply(tmp2, tmp1, isign, 0);
00061
00062 chi[rb[0]] = 4*mass_sq*psi - tmp2;
00063
00064 END_CODE();
00065 }
00066
00067 }
00068