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

patched version + modifications to deriv -> staple in qcd/gauge

This commit is contained in:
Mashy Green 2024-11-27 16:29:22 +00:00
parent f617468e04
commit 47429218bb
4 changed files with 37 additions and 7 deletions

View File

@ -69,15 +69,22 @@ public:
RealD factor = 0.5 * beta / RealD(Nc); RealD factor = 0.5 * beta / RealD(Nc);
GaugeLinkField Umu(U.Grid()); // GaugeLinkField Umu(U.Grid());
std::vector<GaugeLinkField> Uvec(Nd, U.Grid());
for (int d = 0; d < Nd; d++) {
Uvec[d] = PeekIndex<LorentzIndex>(U, d);
}
GaugeLinkField dSdU_mu(U.Grid()); GaugeLinkField dSdU_mu(U.Grid());
for (int mu = 0; mu < Nd; mu++) { for (int mu = 0; mu < Nd; mu++) {
Umu = PeekIndex<LorentzIndex>(U, mu); // Umu = PeekIndex<LorentzIndex>(U, mu);
// Staple in direction mu // Staple in direction mu
WilsonLoops<Gimpl>::Staple(dSdU_mu, U, mu); // WilsonLoops<Gimpl>::Staple(dSdU_mu, U, mu);
dSdU_mu = Ta(Umu * dSdU_mu) * factor; // dSdU_mu = Ta(Umu * dSdU_mu) * factor;
WilsonLoops<Gimpl>::Staple(dSdU_mu, Uvec, mu);
dSdU_mu = Ta(Uvec[mu] * dSdU_mu) * factor;
PokeIndex<LorentzIndex>(dSdU, dSdU_mu, mu); PokeIndex<LorentzIndex>(dSdU, dSdU_mu, mu);
} }

View File

@ -25,13 +25,20 @@ directory
*************************************************************************************/ *************************************************************************************/
/* END LEGAL */ /* END LEGAL */
#include <Grid/Grid.h> #include <Grid/Grid.h>
#if Nc == 3
#include <Grid/qcd/smearing/GaugeConfigurationMasked.h> #include <Grid/qcd/smearing/GaugeConfigurationMasked.h>
#include <Grid/qcd/smearing/JacobianAction.h> #include <Grid/qcd/smearing/JacobianAction.h>
#endif
using namespace Grid; using namespace Grid;
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
#if Nc != 3
#warning FTHMC2p1f will not work for Nc != 3
std::cout << "This program will currently only work for Nc == 3." << std::endl;
#else
std::cout << std::setprecision(12); std::cout << std::setprecision(12);
Grid_init(&argc, &argv); Grid_init(&argc, &argv);
@ -220,7 +227,6 @@ int main(int argc, char **argv)
TheHMC.Run(SmearingPolicy); // for smearing TheHMC.Run(SmearingPolicy); // for smearing
Grid_finalize(); Grid_finalize();
#endif
} // main } // main

View File

@ -24,14 +24,22 @@ See the full license in the file "LICENSE" in the top level distribution
directory directory
*************************************************************************************/ *************************************************************************************/
/* END LEGAL */ /* END LEGAL */
#include <Grid/Grid.h> #include <Grid/Grid.h>
#if Nc == 3
#include <Grid/qcd/smearing/GaugeConfigurationMasked.h> #include <Grid/qcd/smearing/GaugeConfigurationMasked.h>
#include <Grid/qcd/smearing/JacobianAction.h> #include <Grid/qcd/smearing/JacobianAction.h>
#endif
using namespace Grid; using namespace Grid;
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
#if Nc != 3
#warning FTHMC2p1f_3GeV will not work for Nc != 3
std::cout << "This program will currently only work for Nc == 3." << std::endl;
#else
std::cout << std::setprecision(12); std::cout << std::setprecision(12);
Grid_init(&argc, &argv); Grid_init(&argc, &argv);
@ -220,6 +228,7 @@ int main(int argc, char **argv)
TheHMC.Run(SmearingPolicy); // for smearing TheHMC.Run(SmearingPolicy); // for smearing
Grid_finalize(); Grid_finalize();
#endif
} // main } // main

View File

@ -25,13 +25,20 @@ directory
*************************************************************************************/ *************************************************************************************/
/* END LEGAL */ /* END LEGAL */
#include <Grid/Grid.h> #include <Grid/Grid.h>
#if Nc == 3
#include <Grid/qcd/smearing/GaugeConfigurationMasked.h> #include <Grid/qcd/smearing/GaugeConfigurationMasked.h>
#include <Grid/qcd/smearing/JacobianAction.h> #include <Grid/qcd/smearing/JacobianAction.h>
#endif
using namespace Grid; using namespace Grid;
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
#if Nc != 3
#warning HMC2p1f_3GeV will not work for Nc != 3
std::cout << "This program will currently only work for Nc == 3." << std::endl;
#else
std::cout << std::setprecision(12); std::cout << std::setprecision(12);
Grid_init(&argc, &argv); Grid_init(&argc, &argv);
@ -220,6 +227,7 @@ int main(int argc, char **argv)
TheHMC.Run(SmearingPolicy); // for smearing TheHMC.Run(SmearingPolicy); // for smearing
Grid_finalize(); Grid_finalize();
#endif
} // main } // main