1
0
mirror of https://github.com/paboyle/Grid.git synced 2024-11-10 07:55:35 +00:00

Fix bug in non-zero momentum projection

This commit is contained in:
James Harrison 2017-08-24 17:31:44 +01:00
parent 20e92a7009
commit cc4afb978d
2 changed files with 60 additions and 15 deletions

View File

@ -194,7 +194,10 @@ void TChargedProp::execute(void)
buf = prop;
for (unsigned int j = 0; j < env().getNd()-1; ++j)
{
buf = buf*pow(adj(*phase_[j]), mom[j]);
for (unsigned int momcount = 0; momcount < mom[j]; ++momcount)
{
buf = buf*adj(*phase_[j]);
}
}
sliceSum(buf, vecBuf, Tp);
result.resize(vecBuf.size());
@ -208,7 +211,10 @@ void TChargedProp::execute(void)
buf = *prop0_;
for (unsigned int j = 0; j < env().getNd()-1; ++j)
{
buf = buf*pow(adj(*phase_[j]), mom[j]);
for (unsigned int momcount = 0; momcount < mom[j]; ++momcount)
{
buf = buf*adj(*phase_[j]);
}
}
sliceSum(buf, vecBuf, Tp);
for (unsigned int t = 0; t < vecBuf.size(); ++t)
@ -221,7 +227,10 @@ void TChargedProp::execute(void)
buf = propQ;
for (unsigned int j = 0; j < env().getNd()-1; ++j)
{
buf = buf*pow(adj(*phase_[j]), mom[j]);
for (unsigned int momcount = 0; momcount < mom[j]; ++momcount)
{
buf = buf*adj(*phase_[j]);
}
}
sliceSum(buf, vecBuf, Tp);
for (unsigned int t = 0; t < vecBuf.size(); ++t)
@ -234,7 +243,10 @@ void TChargedProp::execute(void)
buf = propSun;
for (unsigned int j = 0; j < env().getNd()-1; ++j)
{
buf = buf*pow(adj(*phase_[j]), mom[j]);
for (unsigned int momcount = 0; momcount < mom[j]; ++momcount)
{
buf = buf*adj(*phase_[j]);
}
}
sliceSum(buf, vecBuf, Tp);
for (unsigned int t = 0; t < vecBuf.size(); ++t)
@ -247,7 +259,10 @@ void TChargedProp::execute(void)
buf = propTad;
for (unsigned int j = 0; j < env().getNd()-1; ++j)
{
buf = buf*pow(adj(*phase_[j]), mom[j]);
for (unsigned int momcount = 0; momcount < mom[j]; ++momcount)
{
buf = buf*adj(*phase_[j]);
}
}
sliceSum(buf, vecBuf, Tp);
for (unsigned int t = 0; t < vecBuf.size(); ++t)

View File

@ -214,7 +214,10 @@ void TScalarVP::execute(void)
vpPhase = freeVpTensor[mu][nu];
for (unsigned int j = 0; j < env().getNd()-1; ++j)
{
vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]);
for (unsigned int momcount = 0; momcount < mom[j]; ++momcount)
{
vpPhase = vpPhase*adj(*phase_[j]);
}
}
sliceSum(vpPhase, vecBuf, Tp);
result.resize(vecBuf.size());
@ -248,7 +251,10 @@ void TScalarVP::execute(void)
vpPhase = tmp_vp;
for (unsigned int j = 0; j < env().getNd()-1; ++j)
{
vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]);
for (unsigned int momcount = 0; momcount < mom[j]; ++momcount)
{
vpPhase = vpPhase*adj(*phase_[j]);
}
}
sliceSum(vpPhase, vecBuf, Tp);
result.resize(vecBuf.size());
@ -282,7 +288,10 @@ void TScalarVP::execute(void)
vpPhase = tmp_vp;
for (unsigned int j = 0; j < env().getNd()-1; ++j)
{
vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]);
for (unsigned int momcount = 0; momcount < mom[j]; ++momcount)
{
vpPhase = vpPhase*adj(*phase_[j]);
}
}
sliceSum(vpPhase, vecBuf, Tp);
result.resize(vecBuf.size());
@ -314,7 +323,10 @@ void TScalarVP::execute(void)
vpPhase = tmp_vp;
for (unsigned int j = 0; j < env().getNd()-1; ++j)
{
vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]);
for (unsigned int momcount = 0; momcount < mom[j]; ++momcount)
{
vpPhase = vpPhase*adj(*phase_[j]);
}
}
sliceSum(vpPhase, vecBuf, Tp);
result.resize(vecBuf.size());
@ -345,7 +357,10 @@ void TScalarVP::execute(void)
vpPhase = tmp_vp;
for (unsigned int j = 0; j < env().getNd()-1; ++j)
{
vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]);
for (unsigned int momcount = 0; momcount < mom[j]; ++momcount)
{
vpPhase = vpPhase*adj(*phase_[j]);
}
}
sliceSum(vpPhase, vecBuf, Tp);
result.resize(vecBuf.size());
@ -377,7 +392,10 @@ void TScalarVP::execute(void)
vpPhase = tmp_vp;
for (unsigned int j = 0; j < env().getNd()-1; ++j)
{
vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]);
for (unsigned int momcount = 0; momcount < mom[j]; ++momcount)
{
vpPhase = vpPhase*adj(*phase_[j]);
}
}
sliceSum(vpPhase, vecBuf, Tp);
result.resize(vecBuf.size());
@ -408,7 +426,10 @@ void TScalarVP::execute(void)
vpPhase = tmp_vp;
for (unsigned int j = 0; j < env().getNd()-1; ++j)
{
vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]);
for (unsigned int momcount = 0; momcount < mom[j]; ++momcount)
{
vpPhase = vpPhase*adj(*phase_[j]);
}
}
sliceSum(vpPhase, vecBuf, Tp);
result.resize(vecBuf.size());
@ -443,7 +464,10 @@ void TScalarVP::execute(void)
vpPhase = tmp_vp;
for (unsigned int j = 0; j < env().getNd()-1; ++j)
{
vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]);
for (unsigned int momcount = 0; momcount < mom[j]; ++momcount)
{
vpPhase = vpPhase*adj(*phase_[j]);
}
}
sliceSum(vpPhase, vecBuf, Tp);
result.resize(vecBuf.size());
@ -477,7 +501,10 @@ void TScalarVP::execute(void)
vpPhase = tmp_vp;
for (unsigned int j = 0; j < env().getNd()-1; ++j)
{
vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]);
for (unsigned int momcount = 0; momcount < mom[j]; ++momcount)
{
vpPhase = vpPhase*adj(*phase_[j]);
}
}
sliceSum(vpPhase, vecBuf, Tp);
result.resize(vecBuf.size());
@ -501,7 +528,10 @@ void TScalarVP::execute(void)
vpPhase = vpTensor[mu][nu];
for (unsigned int j = 0; j < env().getNd()-1; ++j)
{
vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]);
for (unsigned int momcount = 0; momcount < mom[j]; ++momcount)
{
vpPhase = vpPhase*adj(*phase_[j]);
}
}
sliceSum(vpPhase, vecBuf, Tp);
result.resize(vecBuf.size());