mirror of
https://github.com/paboyle/Grid.git
synced 2024-11-13 01:05:36 +00:00
Updating WilsonFlow test
This commit is contained in:
parent
0de314870d
commit
7c6cc85df6
@ -107,6 +107,9 @@ RealD WilsonFlow<Gimpl>::energyDensityPlaquette(unsigned int step, const GaugeFi
|
|||||||
return 2.0 * td * td * SG.S(U)/U._grid->gSites();
|
return 2.0 * td * td * SG.S(U)/U._grid->gSites();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//#define WF_TIMING
|
||||||
|
|
||||||
template <class Gimpl>
|
template <class Gimpl>
|
||||||
void WilsonFlow<Gimpl>::smear(GaugeField& out, const GaugeField& in) const {
|
void WilsonFlow<Gimpl>::smear(GaugeField& out, const GaugeField& in) const {
|
||||||
out = in;
|
out = in;
|
||||||
@ -115,7 +118,9 @@ void WilsonFlow<Gimpl>::smear(GaugeField& out, const GaugeField& in) const {
|
|||||||
evolve_step(out);
|
evolve_step(out);
|
||||||
auto end = std::chrono::high_resolution_clock::now();
|
auto end = std::chrono::high_resolution_clock::now();
|
||||||
std::chrono::duration<double> diff = end - start;
|
std::chrono::duration<double> diff = end - start;
|
||||||
|
#ifdef WF_TIMING
|
||||||
std::cout << "Time to evolve " << diff.count() << " s\n";
|
std::cout << "Time to evolve " << diff.count() << " s\n";
|
||||||
|
#endif
|
||||||
std::cout << GridLogMessage << "[WilsonFlow] Energy density (plaq) : "
|
std::cout << GridLogMessage << "[WilsonFlow] Energy density (plaq) : "
|
||||||
<< step << " "
|
<< step << " "
|
||||||
<< energyDensityPlaquette(step,out) << std::endl;
|
<< energyDensityPlaquette(step,out) << std::endl;
|
||||||
|
@ -28,6 +28,37 @@ directory
|
|||||||
/* END LEGAL */
|
/* END LEGAL */
|
||||||
#include <Grid/Grid.h>
|
#include <Grid/Grid.h>
|
||||||
|
|
||||||
|
namespace Grid{
|
||||||
|
struct WFParameters: Serializable {
|
||||||
|
GRID_SERIALIZABLE_CLASS_MEMBERS(WFParameters,
|
||||||
|
int, steps,
|
||||||
|
double, step_size,
|
||||||
|
int, meas_interval);
|
||||||
|
|
||||||
|
|
||||||
|
template <class ReaderClass >
|
||||||
|
WFParameters(Reader<ReaderClass>& Reader){
|
||||||
|
read(Reader, "WilsonFlow", *this);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ConfParameters: Serializable {
|
||||||
|
GRID_SERIALIZABLE_CLASS_MEMBERS(ConfParameters,
|
||||||
|
std::string, conf_prefix,
|
||||||
|
std::string, rng_prefix,
|
||||||
|
int, StartConfiguration,
|
||||||
|
int, EndConfiguration,
|
||||||
|
int, Skip);
|
||||||
|
|
||||||
|
template <class ReaderClass >
|
||||||
|
ConfParameters(Reader<ReaderClass>& Reader){
|
||||||
|
read(Reader, "Configurations", *this);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
using namespace Grid;
|
using namespace Grid;
|
||||||
using namespace Grid::QCD;
|
using namespace Grid::QCD;
|
||||||
@ -48,23 +79,30 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
LatticeGaugeField Umu(&Grid), Uflow(&Grid);
|
LatticeGaugeField Umu(&Grid), Uflow(&Grid);
|
||||||
SU<Nc>::HotConfiguration(pRNG, Umu);
|
SU<Nc>::HotConfiguration(pRNG, Umu);
|
||||||
CheckpointerParameters CPPar("ckpoint_lat", "ckpoint_rng");
|
|
||||||
|
typedef Grid::JSONReader Serialiser;
|
||||||
|
Serialiser Reader("input.json");
|
||||||
|
WFParameters WFPar(Reader);
|
||||||
|
ConfParameters CPar(Reader);
|
||||||
|
CheckpointerParameters CPPar(CPar.conf_prefix, CPar.rng_prefix);
|
||||||
BinaryHmcCheckpointer<PeriodicGimplR> CPBin(CPPar);
|
BinaryHmcCheckpointer<PeriodicGimplR> CPBin(CPPar);
|
||||||
|
|
||||||
CPBin.CheckpointRestore(3000, Umu, sRNG, pRNG);
|
for (int conf = CPar.StartConfiguration; conf <= CPar.EndConfiguration; conf+= CPar.Skip){
|
||||||
|
|
||||||
|
CPBin.CheckpointRestore(conf, Umu, sRNG, pRNG);
|
||||||
|
|
||||||
std::cout << std::setprecision(15);
|
std::cout << std::setprecision(15);
|
||||||
std::cout << GridLogMessage << "Plaquette: "
|
std::cout << GridLogMessage << "Initial plaquette: "
|
||||||
<< WilsonLoops<PeriodicGimplR>::avgPlaquette(Umu) << std::endl;
|
<< WilsonLoops<PeriodicGimplR>::avgPlaquette(Umu) << std::endl;
|
||||||
|
|
||||||
WilsonFlow<PeriodicGimplR> WF(200, 0.01, 50);
|
WilsonFlow<PeriodicGimplR> WF(WFPar.steps, WFPar.step_size, WFPar.meas_interval);
|
||||||
|
|
||||||
WF.smear(Uflow, Umu);
|
WF.smear(Uflow, Umu);
|
||||||
|
|
||||||
RealD WFlow_plaq = WilsonLoops<PeriodicGimplR>::avgPlaquette(Uflow);
|
RealD WFlow_plaq = WilsonLoops<PeriodicGimplR>::avgPlaquette(Uflow);
|
||||||
RealD WFlow_TC = WilsonLoops<PeriodicGimplR>::TopologicalCharge(Uflow);
|
RealD WFlow_TC = WilsonLoops<PeriodicGimplR>::TopologicalCharge(Uflow);
|
||||||
std::cout << GridLogMessage << "Plaquette : "<< WFlow_plaq << std::endl;
|
std::cout << GridLogMessage << "Plaquette "<< conf << " " << WFlow_plaq << std::endl;
|
||||||
std::cout << GridLogMessage << "TopologicalCharge : "<< WFlow_TC << std::endl;
|
std::cout << GridLogMessage << "TopologicalCharge "<< conf << " " << WFlow_TC << std::endl;
|
||||||
|
|
||||||
std::cout<< GridLogMessage << " Admissibility check:\n";
|
std::cout<< GridLogMessage << " Admissibility check:\n";
|
||||||
const double sp_adm = 0.067; // admissible threshold
|
const double sp_adm = 0.067; // admissible threshold
|
||||||
@ -80,6 +118,6 @@ int main(int argc, char **argv) {
|
|||||||
std::cout<< GridLogMessage << " (sp_admissible = "<< sp_adm <<")\n";
|
std::cout<< GridLogMessage << " (sp_admissible = "<< sp_adm <<")\n";
|
||||||
//std::cout<< GridLogMessage << " sp_admissible - sp_max = "<<sp_adm-sp_max <<"\n";
|
//std::cout<< GridLogMessage << " sp_admissible - sp_max = "<<sp_adm-sp_max <<"\n";
|
||||||
std::cout<< GridLogMessage << " sp_admissible - sp_ave = "<<sp_adm-sp_ave <<"\n";
|
std::cout<< GridLogMessage << " sp_admissible - sp_ave = "<<sp_adm-sp_ave <<"\n";
|
||||||
|
}
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
} // main
|
} // main
|
||||||
|
Loading…
Reference in New Issue
Block a user