1
0
mirror of https://github.com/paboyle/Grid.git synced 2025-06-14 05:07:05 +01:00

added everythong to compute sequential aslash fields

This commit is contained in:
Felix Erben
2019-03-07 17:36:22 +00:00
parent 4abc498ae3
commit 1538bf8c34
4 changed files with 76 additions and 38 deletions

View File

@ -49,6 +49,7 @@
#include <Hadrons/Modules/MDistil/LapEvec.hpp>
#include <Hadrons/Modules/MDistil/BContraction.hpp>
#include <Hadrons/Modules/MDistil/DistilVectors.hpp>
#include <Hadrons/Modules/MDistil/DistilSink.hpp>
#include <Hadrons/Modules/MSource/SeqConserved.hpp>
#include <Hadrons/Modules/MSource/Z2.hpp>
#include <Hadrons/Modules/MSource/Wall.hpp>

View File

@ -85,7 +85,7 @@ std::vector<std::string> TDistilVectors<FImpl>::getInput(void)
template <typename FImpl>
std::vector<std::string> TDistilVectors<FImpl>::getOutput(void)
{
std::vector<std::string> out = {getName() + "_rho", getName() + "_phi", getName() + "_rho_all_tsrc"};
std::vector<std::string> out = {getName() + "_rho", getName() + "_phi"};
return out;
}
@ -106,9 +106,6 @@ void TDistilVectors<FImpl>::setup(void)
nnoise*LI*Ns*Nt_inv, envGetGrid(FermionField));
envCreate(std::vector<FermionField>, getName() + "_phi", 1,
nnoise*LI*Ns*Nt_inv, envGetGrid(FermionField));
envCreate(std::vector<FermionField>, getName() + "_rho_all_tsrc", 1,
nnoise*LI*Ns*Nt_inv, envGetGrid(FermionField));
GridCartesian * grid4d = env().getGrid();
std::vector<int> latt_size = GridDefaultLatt();
@ -140,8 +137,6 @@ void TDistilVectors<FImpl>::execute(void)
auto &epack = envGet(Grid::Hadrons::EigenPack<LatticeColourVector>, par().eigenPack);
auto &rho = envGet(std::vector<FermionField>, getName() + "_rho");
auto &phi = envGet(std::vector<FermionField>, getName() + "_phi");
auto &rho_all = envGet(std::vector<FermionField>, getName() + "_rho_all_tsrc");
envGetTmp(LatticeSpinColourVector, tmp2);
envGetTmp(LatticeColourVector, tmp_nospin);
@ -197,34 +192,6 @@ void TDistilVectors<FImpl>::execute(void)
}
}
for (int inoise = 0; inoise < nnoise; inoise++) {
for (int dk = 0; dk < LI; dk++) {
for (int dt = 0; dt < Nt_inv; dt++) {
for (int ds = 0; ds < Ns; ds++) {
vecindex = inoise + nnoise * dk + nnoise * LI * ds + nnoise *LI * Ns*dt;
rho_all[vecindex] = zero;
tmp3d_nospin = zero;
for (int it = 0; it < Nt; it++){
t_inv = it;
if( t_inv >= Ntfirst && t_inv < Ntfirst + Ntlocal ) {
for (int ik = dk; ik < nvec; ik += LI){
for (int is = ds; is < Ns; is += Ns){ //at the moment, full spin dilution is enforced
ExtractSliceLocal(evec3d,epack.evec[ik],0,t_inv,3);
tmp3d_nospin = evec3d * noise[inoise + nnoise*(t_inv + Nt*(ik+nvec*is))];
tmp3d=zero;
pokeSpin(tmp3d,tmp3d_nospin,is);
tmp2=zero;
InsertSliceLocal(tmp3d,tmp2,0,t_inv-Ntfirst,Grid::QCD::Tdir);
rho_all[vecindex] += tmp2;
}
}
}
}
}
}
}
}
for (int inoise = 0; inoise < nnoise; inoise++) {
for (int dk = 0; dk < LI; dk++) {
for (int dt = 0; dt < Nt_inv; dt++) {

View File

@ -47,6 +47,7 @@ modules_cc =\
Modules/MDistil/Baryon2pt.cc \
Modules/MDistil/BC2.cc \
Modules/MDistil/PerambLight.cc \
Modules/MDistil/DistilSink.cc \
Modules/MSource/Momentum.cc \
Modules/MSource/Z2.cc \
Modules/MSource/Point.cc \
@ -130,6 +131,7 @@ modules_hpp =\
Modules/MDistil/LapEvec.hpp \
Modules/MDistil/BContraction.hpp \
Modules/MDistil/DistilVectors.hpp \
Modules/MDistil/DistilSink.hpp \
Modules/MSource/SeqConserved.hpp \
Modules/MSource/Z2.hpp \
Modules/MSource/Wall.hpp \