From ef0fe2bcc12c95d37a8b537ba1694da22da8ab41 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Tue, 21 Mar 2017 11:39:46 +0000 Subject: [PATCH 001/267] Added empty ScalarFV module --- extras/Hadrons/Modules.hpp | 1 + extras/Hadrons/Modules/MScalar/ScalarFV.cc | 40 +++++++++++++++++++ extras/Hadrons/Modules/MScalar/ScalarFV.hpp | 44 +++++++++++++++++++++ extras/Hadrons/modules.inc | 4 +- 4 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 extras/Hadrons/Modules/MScalar/ScalarFV.cc create mode 100644 extras/Hadrons/Modules/MScalar/ScalarFV.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index a25419c5..b482eded 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MScalar/ScalarFV.cc b/extras/Hadrons/Modules/MScalar/ScalarFV.cc new file mode 100644 index 00000000..26f9f648 --- /dev/null +++ b/extras/Hadrons/Modules/MScalar/ScalarFV.cc @@ -0,0 +1,40 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MScalar; + +/****************************************************************************** +* TScalarFV implementation * +******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +TScalarFV::TScalarFV(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +std::vector TScalarFV::getInput(void) +{ + std::vector in; + + return in; +} + +std::vector TScalarFV::getOutput(void) +{ + std::vector out = {getName()}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +void TScalarFV::setup(void) +{ + +} + +// execution /////////////////////////////////////////////////////////////////// +void TScalarFV::execute(void) +{ + +} diff --git a/extras/Hadrons/Modules/MScalar/ScalarFV.hpp b/extras/Hadrons/Modules/MScalar/ScalarFV.hpp new file mode 100644 index 00000000..d350bcae --- /dev/null +++ b/extras/Hadrons/Modules/MScalar/ScalarFV.hpp @@ -0,0 +1,44 @@ +#ifndef Hadrons_ScalarFV_hpp_ +#define Hadrons_ScalarFV_hpp_ + +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * ScalarFV * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MScalar) + +class ScalarFVPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(ScalarFVPar, + unsigned int, i); +}; + +class TScalarFV: public Module +{ +public: + // constructor + TScalarFV(const std::string name); + // destructor + virtual ~TScalarFV(void) = default; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER_NS(ScalarFV, TScalarFV, MScalar); + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_ScalarFV_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index dfbe85ff..f368bbdc 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -4,7 +4,8 @@ modules_cc =\ Modules/MGauge/StochEm.cc \ Modules/MGauge/Unit.cc \ Modules/MScalar/ChargedProp.cc \ - Modules/MScalar/FreeProp.cc + Modules/MScalar/FreeProp.cc \ + Modules/MScalar/ScalarFV.cc modules_hpp =\ Modules/MAction/DWF.hpp \ @@ -18,6 +19,7 @@ modules_hpp =\ Modules/MScalar/ChargedProp.hpp \ Modules/MScalar/FreeProp.hpp \ Modules/MScalar/Scalar.hpp \ + Modules/MScalar/ScalarFV.hpp \ Modules/MSolver/RBPrecCG.hpp \ Modules/MSource/Point.hpp \ Modules/MSource/SeqGamma.hpp \ From 54c10a42cc5e5c46e55b4aa8faba6930927e56e1 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 24 Mar 2017 11:42:32 +0000 Subject: [PATCH 002/267] Add source and emField inputs to ScalarFV module --- extras/Hadrons/Modules/MScalar/ScalarFV.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarFV.cc b/extras/Hadrons/Modules/MScalar/ScalarFV.cc index 26f9f648..e7a72abe 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarFV.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarFV.cc @@ -15,7 +15,7 @@ TScalarFV::TScalarFV(const std::string name) // dependencies/products /////////////////////////////////////////////////////// std::vector TScalarFV::getInput(void) { - std::vector in; + std::vector in = {par().source, par().emField}; return in; } From 0c006fbfaac3d47c892fb1305002149d7f7fc31b Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 24 Mar 2017 11:59:09 +0000 Subject: [PATCH 003/267] Add ScalarFV inputs to ScalarFV.hpp --- extras/Hadrons/Modules/MScalar/ScalarFV.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/extras/Hadrons/Modules/MScalar/ScalarFV.hpp b/extras/Hadrons/Modules/MScalar/ScalarFV.hpp index d350bcae..f7802bda 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarFV.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarFV.hpp @@ -16,6 +16,11 @@ class ScalarFVPar: Serializable { public: GRID_SERIALIZABLE_CLASS_MEMBERS(ScalarFVPar, + std::string, emField, + std::string, source, + double, mass, + double, charge, + std::string, output, unsigned int, i); }; From 85516e9c7c5f1fb3096777e2995a7005f2fbc675 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 24 Mar 2017 17:13:55 +0000 Subject: [PATCH 004/267] Output all terms of scalar propagator separately --- extras/Hadrons/Modules/MScalar/ChargedProp.cc | 90 +++++++++++++++---- .../Hadrons/Modules/MScalar/ChargedProp.hpp | 5 +- 2 files changed, 78 insertions(+), 17 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index 40d4504c..b76ea8d2 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -23,7 +23,8 @@ std::vector TChargedProp::getInput(void) std::vector TChargedProp::getOutput(void) { - std::vector out = {getName()}; + std::vector out = {getName(), getName()+"_0", getName()+"_D1", + getName()+"_D1D1", getName()+"_D2"}; return out; } @@ -38,6 +39,10 @@ void TChargedProp::setup(void) phaseName_.push_back("_shiftphase_" + std::to_string(mu)); } GFSrcName_ = "_" + getName() + "_DinvSrc"; + prop0Name_ = getName() + "_0"; + propD1Name_ = getName() + "_D1"; + propD1D1Name_ = getName() + "_D1D1"; + propD2Name_ = getName() + "_D2"; if (!env().hasRegisteredObject(freeMomPropName_)) { env().registerLattice(freeMomPropName_); @@ -53,7 +58,14 @@ void TChargedProp::setup(void) { env().registerLattice(GFSrcName_); } + if (!env().hasRegisteredObject(prop0Name_)) + { + env().registerLattice(prop0Name_); + } env().registerLattice(getName()); + env().registerLattice(propD1Name_); + env().registerLattice(propD1D1Name_); + env().registerLattice(propD2Name_); } // execution /////////////////////////////////////////////////////////////////// @@ -64,7 +76,7 @@ void TChargedProp::execute(void) Complex ci(0.0,1.0); FFT fft(env().getGrid()); - // cache free scalar propagator + // cache momentum-space free scalar propagator if (!env().hasCreatedObject(freeMomPropName_)) { LOG(Message) << "Caching momentum space free scalar propagator" @@ -88,6 +100,17 @@ void TChargedProp::execute(void) { GFSrc_ = env().getObject(GFSrcName_); } + // cache free scalar propagator + if (!env().hasCreatedObject(prop0Name_)) + { + prop0_ = env().createLattice(prop0Name_); + *prop0_ = *GFSrc_; + fft.FFT_all_dim(*prop0_, *prop0_, FFT::backward); + } + else + { + prop0_ = env().getObject(prop0Name_); + } // cache phases if (!env().hasCreatedObject(phaseName_[0])) { @@ -117,30 +140,33 @@ void TChargedProp::execute(void) << ", charge= " << par().charge << ")..." << std::endl; ScalarField &prop = *env().createLattice(getName()); + ScalarField &propD1 = *env().createLattice(propD1Name_); + ScalarField &propD1D1 = *env().createLattice(propD1D1Name_); + ScalarField &propD2 = *env().createLattice(propD2Name_); ScalarField buf(env().getGrid()); ScalarField &GFSrc = *GFSrc_, &G = *freeMomProp_; double q = par().charge; - // G*F*Src - prop = GFSrc; - - // - q*G*momD1*G*F*Src (momD1 = F*D1*Finv) + // -G*momD1*G*F*Src (momD1 = F*D1*Finv) buf = GFSrc; momD1(buf, fft); - buf = G*buf; - prop = prop - q*buf; + buf = -G*buf; + fft.FFT_all_dim(propD1, buf, FFT::backward); - // + q^2*G*momD1*G*momD1*G*F*Src (here buf = G*momD1*G*F*Src) + // G*momD1*G*momD1*G*F*Src (here buf = G*momD1*G*F*Src) + buf = -buf; momD1(buf, fft); - prop = prop + q*q*G*buf; + propD1D1 = G*buf; + fft.FFT_all_dim(propD1D1, propD1D1, FFT::backward); - // - q^2*G*momD2*G*F*Src (momD2 = F*D2*Finv) + // -G*momD2*G*F*Src (momD2 = F*D2*Finv) buf = GFSrc; momD2(buf, fft); - prop = prop - q*q*G*buf; + buf = -G*buf; + fft.FFT_all_dim(propD2, buf, FFT::backward); - // final FT - fft.FFT_all_dim(prop, prop, FFT::backward); + // full charged scalar propagator + prop = (*prop0_) + q*propD1 + q*q*propD1D1 + q*q*propD2; // OUTPUT IF NECESSARY if (!par().output.empty()) @@ -155,14 +181,48 @@ void TChargedProp::execute(void) std::vector vecBuf; std::vector result; + write(writer, "charge", q); + + // Write full propagator sliceSum(prop, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) { result[t] = TensorRemove(vecBuf[t]); } - write(writer, "charge", q); write(writer, "prop", result); + + // Write free propagator + sliceSum(*prop0_, vecBuf, Tp); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_0", result); + + // Write propagator D1 term + sliceSum(propD1, vecBuf, Tp); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_D1", result); + + // Write propagator D1D1 term + sliceSum(propD1D1, vecBuf, Tp); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_D1D1", result); + + // Write propagator D2 term + sliceSum(propD2, vecBuf, Tp); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_D2", result); } } diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp index 8bb5faa0..6a6c6c39 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp @@ -45,9 +45,10 @@ private: void momD1(ScalarField &s, FFT &fft); void momD2(ScalarField &s, FFT &fft); private: - std::string freeMomPropName_, GFSrcName_; + std::string freeMomPropName_, GFSrcName_, prop0Name_, + propD1Name_, propD1D1Name_, propD2Name_; std::vector phaseName_; - ScalarField *freeMomProp_, *GFSrc_; + ScalarField *freeMomProp_, *GFSrc_, *prop0_; std::vector phase_; EmField *A; }; From 483fd3cfa1e65d894f27b9f04aa14301d644416e Mon Sep 17 00:00:00 2001 From: James Harrison Date: Mon, 27 Mar 2017 13:24:51 +0100 Subject: [PATCH 005/267] Add propagator expansion terms as inputs to ScalarFV --- extras/Hadrons/Modules/MScalar/ScalarFV.cc | 7 ++++++- extras/Hadrons/Modules/MScalar/ScalarFV.hpp | 9 ++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarFV.cc b/extras/Hadrons/Modules/MScalar/ScalarFV.cc index e7a72abe..2a50a62f 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarFV.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarFV.cc @@ -15,7 +15,12 @@ TScalarFV::TScalarFV(const std::string name) // dependencies/products /////////////////////////////////////////////////////// std::vector TScalarFV::getInput(void) { - std::vector in = {par().source, par().emField}; + std::string prop0Name = par().scalarProp + "_0"; + std::string propD1Name = par().scalarProp + "_D1"; + std::string propD1D1Name = par().scalarProp + "_D1D1"; + std::string propD2Name = par().scalarProp + "_D2"; + std::vector in = {par().source, par().emField, par().scalarProp, + prop0Name, propD1Name, propD1D1Name, propD2Name}; return in; } diff --git a/extras/Hadrons/Modules/MScalar/ScalarFV.hpp b/extras/Hadrons/Modules/MScalar/ScalarFV.hpp index f7802bda..fda174db 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarFV.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarFV.hpp @@ -18,14 +18,17 @@ public: GRID_SERIALIZABLE_CLASS_MEMBERS(ScalarFVPar, std::string, emField, std::string, source, - double, mass, + std::string, scalarProp, double, charge, - std::string, output, - unsigned int, i); + std::string, output); }; class TScalarFV: public Module { +public: + SCALAR_TYPE_ALIASES(SIMPL,); + typedef PhotonR::GaugeField EmField; + typedef PhotonR::GaugeLinkField EmComp; public: // constructor TScalarFV(const std::string name); From 4512dbdf584e07acaec4fc86f25985446fc89aa7 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Mon, 27 Mar 2017 15:02:16 +0100 Subject: [PATCH 006/267] Rename module ScalarFV to ScalarVP --- extras/Hadrons/Modules.hpp | 2 +- .../MScalar/{ScalarFV.cc => ScalarVP.cc} | 27 ++++++++++--------- .../MScalar/{ScalarFV.hpp => ScalarVP.hpp} | 22 ++++++++------- extras/Hadrons/modules.inc | 4 +-- 4 files changed, 29 insertions(+), 26 deletions(-) rename extras/Hadrons/Modules/MScalar/{ScalarFV.cc => ScalarVP.cc} (54%) rename extras/Hadrons/Modules/MScalar/{ScalarFV.hpp => ScalarVP.hpp} (69%) diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index b482eded..c1d90e3a 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MScalar/ScalarFV.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc similarity index 54% rename from extras/Hadrons/Modules/MScalar/ScalarFV.cc rename to extras/Hadrons/Modules/MScalar/ScalarVP.cc index 2a50a62f..dff636dd 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarFV.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -1,31 +1,32 @@ -#include +#include using namespace Grid; using namespace Hadrons; using namespace MScalar; /****************************************************************************** -* TScalarFV implementation * +* TScalarVP implementation * ******************************************************************************/ // constructor ///////////////////////////////////////////////////////////////// -TScalarFV::TScalarFV(const std::string name) -: Module(name) +TScalarVP::TScalarVP(const std::string name) +: Module(name) {} // dependencies/products /////////////////////////////////////////////////////// -std::vector TScalarFV::getInput(void) +std::vector TScalarVP::getInput(void) { - std::string prop0Name = par().scalarProp + "_0"; - std::string propD1Name = par().scalarProp + "_D1"; - std::string propD1D1Name = par().scalarProp + "_D1D1"; - std::string propD2Name = par().scalarProp + "_D2"; + prop0Name_ = par().scalarProp + "_0"; + propD1Name_ = par().scalarProp + "_D1"; + propD1D1Name_ = par().scalarProp + "_D1D1"; + propD2Name_ = par().scalarProp + "_D2"; std::vector in = {par().source, par().emField, par().scalarProp, - prop0Name, propD1Name, propD1D1Name, propD2Name}; + prop0Name_, propD1Name_, propD1D1Name_, + propD2Name_}; return in; } -std::vector TScalarFV::getOutput(void) +std::vector TScalarVP::getOutput(void) { std::vector out = {getName()}; @@ -33,13 +34,13 @@ std::vector TScalarFV::getOutput(void) } // setup /////////////////////////////////////////////////////////////////////// -void TScalarFV::setup(void) +void TScalarVP::setup(void) { } // execution /////////////////////////////////////////////////////////////////// -void TScalarFV::execute(void) +void TScalarVP::execute(void) { } diff --git a/extras/Hadrons/Modules/MScalar/ScalarFV.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp similarity index 69% rename from extras/Hadrons/Modules/MScalar/ScalarFV.hpp rename to extras/Hadrons/Modules/MScalar/ScalarVP.hpp index fda174db..3c3be434 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarFV.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -1,5 +1,5 @@ -#ifndef Hadrons_ScalarFV_hpp_ -#define Hadrons_ScalarFV_hpp_ +#ifndef Hadrons_ScalarVP_hpp_ +#define Hadrons_ScalarVP_hpp_ #include #include @@ -8,14 +8,14 @@ BEGIN_HADRONS_NAMESPACE /****************************************************************************** - * ScalarFV * + * ScalarVP * ******************************************************************************/ BEGIN_MODULE_NAMESPACE(MScalar) -class ScalarFVPar: Serializable +class ScalarVPPar: Serializable { public: - GRID_SERIALIZABLE_CLASS_MEMBERS(ScalarFVPar, + GRID_SERIALIZABLE_CLASS_MEMBERS(ScalarVPPar, std::string, emField, std::string, source, std::string, scalarProp, @@ -23,7 +23,7 @@ public: std::string, output); }; -class TScalarFV: public Module +class TScalarVP: public Module { public: SCALAR_TYPE_ALIASES(SIMPL,); @@ -31,9 +31,9 @@ public: typedef PhotonR::GaugeLinkField EmComp; public: // constructor - TScalarFV(const std::string name); + TScalarVP(const std::string name); // destructor - virtual ~TScalarFV(void) = default; + virtual ~TScalarVP(void) = default; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); @@ -41,12 +41,14 @@ public: virtual void setup(void); // execution virtual void execute(void); +private: + std::string prop0Name_, propD1Name_, propD1D1Name_, propD2Name_; }; -MODULE_REGISTER_NS(ScalarFV, TScalarFV, MScalar); +MODULE_REGISTER_NS(ScalarVP, TScalarVP, MScalar); END_MODULE_NAMESPACE END_HADRONS_NAMESPACE -#endif // Hadrons_ScalarFV_hpp_ +#endif // Hadrons_ScalarVP_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index f368bbdc..383cb6b5 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -5,7 +5,7 @@ modules_cc =\ Modules/MGauge/Unit.cc \ Modules/MScalar/ChargedProp.cc \ Modules/MScalar/FreeProp.cc \ - Modules/MScalar/ScalarFV.cc + Modules/MScalar/ScalarVP.cc modules_hpp =\ Modules/MAction/DWF.hpp \ @@ -19,7 +19,7 @@ modules_hpp =\ Modules/MScalar/ChargedProp.hpp \ Modules/MScalar/FreeProp.hpp \ Modules/MScalar/Scalar.hpp \ - Modules/MScalar/ScalarFV.hpp \ + Modules/MScalar/ScalarVP.hpp \ Modules/MSolver/RBPrecCG.hpp \ Modules/MSource/Point.hpp \ Modules/MSource/SeqGamma.hpp \ From 9f755e0379e192826a593d758a53124bd28b781a Mon Sep 17 00:00:00 2001 From: James Harrison Date: Mon, 27 Mar 2017 16:49:18 +0100 Subject: [PATCH 007/267] Add functions momD1 and momD2 to ScalarVP --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 68 ++++++++++++++++++++- extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 5 ++ 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index dff636dd..423fb1a2 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -15,7 +15,7 @@ TScalarVP::TScalarVP(const std::string name) // dependencies/products /////////////////////////////////////////////////////// std::vector TScalarVP::getInput(void) { - prop0Name_ = par().scalarProp + "_0"; + prop0Name_ = par().scalarProp + "_0"; propD1Name_ = par().scalarProp + "_D1"; propD1D1Name_ = par().scalarProp + "_D1D1"; propD2Name_ = par().scalarProp + "_D2"; @@ -36,11 +36,77 @@ std::vector TScalarVP::getOutput(void) // setup /////////////////////////////////////////////////////////////////////// void TScalarVP::setup(void) { + phaseName_.clear(); + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + phaseName_.push_back("_shiftphase_" + std::to_string(mu)); + } } // execution /////////////////////////////////////////////////////////////////// void TScalarVP::execute(void) { + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + phase_.push_back(env().getObject(phaseName_[mu])); + } } + +void TScalarVP::momD1(ScalarField &s, EmField &A, FFT &fft) +{ + ScalarField buf(env().getGrid()), result(env().getGrid()), + Amu(env().getGrid()); + Complex ci(0.0,1.0); + + result = zero; + + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + Amu = peekLorentz(A, mu); + buf = (*phase_[mu])*s; + fft.FFT_all_dim(buf, buf, FFT::backward); + buf = Amu*buf; + fft.FFT_all_dim(buf, buf, FFT::forward); + result = result - ci*buf; + } + fft.FFT_all_dim(s, s, FFT::backward); + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + Amu = peekLorentz(A, mu); + buf = Amu*s; + fft.FFT_all_dim(buf, buf, FFT::forward); + result = result + ci*adj(*phase_[mu])*buf; + } + + s = result; +} + +void TScalarVP::momD2(ScalarField &s, EmField &Asquared, FFT &fft) +{ + ScalarField buf(env().getGrid()), result(env().getGrid()), + A2mu(env().getGrid()); + + result = zero; + + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + A2mu = peekLorentz(Asquared, mu); + buf = (*phase_[mu])*s; + fft.FFT_all_dim(buf, buf, FFT::backward); + buf = A2mu*buf; + fft.FFT_all_dim(buf, buf, FFT::forward); + result = result + .5*buf; + } + fft.FFT_all_dim(s, s, FFT::backward); + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + A2mu = peekLorentz(Asquared, mu); + buf = A2mu*s; + fft.FFT_all_dim(buf, buf, FFT::forward); + result = result + .5*adj(*phase_[mu])*buf; + } + + s = result; +} diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index 3c3be434..92a4f246 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -41,8 +41,13 @@ public: virtual void setup(void); // execution virtual void execute(void); +private: + void momD1(ScalarField &s, EmField &A, FFT &fft); + void momD2(ScalarField &s, EmField &Asquared, FFT &fft); private: std::string prop0Name_, propD1Name_, propD1D1Name_, propD2Name_; + std::vector phaseName_; + std::vector phase_; }; MODULE_REGISTER_NS(ScalarVP, TScalarVP, MScalar); From 26ebe41fef37d310bba59d378060a26749c1a54b Mon Sep 17 00:00:00 2001 From: James Harrison Date: Mon, 10 Apr 2017 16:33:54 +0100 Subject: [PATCH 008/267] QedFVol: Implement charged propagator calculation within ScalarVP module --- extras/Hadrons/Modules/MScalar/ChargedProp.cc | 2 +- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 230 ++++++++++++++++-- extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 16 +- 3 files changed, 225 insertions(+), 23 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index b76ea8d2..b68b144d 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -100,7 +100,7 @@ void TChargedProp::execute(void) { GFSrc_ = env().getObject(GFSrcName_); } - // cache free scalar propagator + // cache position-space free scalar propagator if (!env().hasCreatedObject(prop0Name_)) { prop0_ = env().createLattice(prop0Name_); diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 423fb1a2..66cdea7e 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -15,13 +15,7 @@ TScalarVP::TScalarVP(const std::string name) // dependencies/products /////////////////////////////////////////////////////// std::vector TScalarVP::getInput(void) { - prop0Name_ = par().scalarProp + "_0"; - propD1Name_ = par().scalarProp + "_D1"; - propD1D1Name_ = par().scalarProp + "_D1D1"; - propD2Name_ = par().scalarProp + "_D2"; - std::vector in = {par().source, par().emField, par().scalarProp, - prop0Name_, propD1Name_, propD1D1Name_, - propD2Name_}; + std::vector in = {par().source, par().emField}; return in; } @@ -36,26 +30,229 @@ std::vector TScalarVP::getOutput(void) // setup /////////////////////////////////////////////////////////////////////// void TScalarVP::setup(void) { + freeMomPropName_ = FREEMOMPROP(par().mass); + GFSrcName_ = "_" + getName() + "_DinvSrc"; + prop0Name_ = getName() + "_prop0"; + propQName_ = getName() + "_propQ"; + propSunName_ = getName() + "_propSun"; + propTadName_ = getName() + "_propTad"; + phaseName_.clear(); + muGFSrcName_.clear(); + muProp0Name_.clear(); + muPropQName_.clear(); + muPropSunName_.clear(); + muPropTadName_.clear(); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { phaseName_.push_back("_shiftphase_" + std::to_string(mu)); + muGFSrcName.push_back("_" + getName() + "_DinvSrc_" + std::to_string(mu)); + muProp0Name_.push_back(getName() + "_prop0_" + std::to_string(mu)); + muPropQName_.push_back(getName() + "_propQ_" + std::to_string(mu)); + muPropSunName_.push_back(getName() + "_propSun_" + std::to_string(mu)); + muPropTadName_.push_back(getName() + "_propTad_" + std::to_string(mu)); } + if (!env().hasRegisteredObject(freeMomPropName_)) + { + env().registerLattice(freeMomPropName_); + } + if (!env().hasRegisteredObject(phaseName_[0])) + { + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + env().registerLattice(phaseName_[mu]); + } + } + if (!env().hasRegisteredObject(GFSrcName_)) + { + env().registerLattice(GFSrcName_); + } + if (!env().hasRegisteredObject(muGFSrcName_[0])) + { + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + env().registerLattice(muGFSrcName_[mu]); + } + } + if (!env().hasRegisteredObject(prop0Name_)) + { + env().registerLattice(prop0Name_); + } + if (!env().hasRegisteredObject(muProp0Name_[0])) + { + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + env().registerLattice(muProp0Name_[mu]); + } + } + env().registerLattice(propQName_); + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + env().registerLattice(muPropQName_[mu]); + } + env().registerLattice(propSunName_); + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + env().registerLattice(muPropSunName_[mu]); + } + env().registerLattice(propTadName_); + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + env().registerLattice(muPropTadName_[mu]); + } + env().registerLattice(getName()); } // execution /////////////////////////////////////////////////////////////////// void TScalarVP::execute(void) { - for (unsigned int mu = 0; mu < env().getNd(); ++mu) + // CACHING ANALYTIC EXPRESSIONS + ScalarField &source = *env().getObject(par().source); + Complex ci(0.0,1.0); + FFT fft(env().getGrid()); + + // cache momentum-space free scalar propagator + if (!env().hasCreatedObject(freeMomPropName_)) { - phase_.push_back(env().getObject(phaseName_[mu])); + LOG(Message) << "Caching momentum space free scalar propagator" + << " (mass= " << par().mass << ")..." << std::endl; + freeMomProp_ = env().createLattice(freeMomPropName_); + Scalar::MomentumSpacePropagator(*freeMomProp_, par().mass); + } + else + { + freeMomProp_ = env().getObject(freeMomPropName_); + } + // cache phases + if (!env().hasCreatedObject(phaseName_[0])) + { + std::vector &l = env().getGrid()->_fdimensions; + + LOG(Message) << "Caching shift phases..." << std::endl; + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + Real twoPiL = M_PI*2./l[mu]; + + phase_.push_back(env().createLattice(phaseName_[mu])); + LatticeCoordinate(*(phase_[mu]), mu); + *(phase_[mu]) = exp(ci*twoPiL*(*(phase_[mu]))); + } + } + else + { + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + phase_.push_back(env().getObject(phaseName_[mu])); + } + } + // cache G*F*src + if (!env().hasCreatedObject(GFSrcName_)) + { + GFSrc_ = env().createLattice(GFSrcName_); + fft.FFT_all_dim(*GFSrc_, source, FFT::forward); + *GFSrc_ = (*freeMomProp_)*(*GFSrc_); + } + else + { + GFSrc_ = env().getObject(GFSrcName_); + } + // cache G*exp(i*k_mu)*F*src + if (!env().hasCreatedObject(muGFSrcName_[0])) + { + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + muGFSrc_.push_back(env().createLattice(muGFSrcName_[mu])); + fft.FFT_all_dim(*(muGFSrc_[mu]), source, FFT::forward); + *(muGFSrc_[mu]) = (*freeMomProp_)*(*phase_[mu])*(*muGFSrc_[mu]); + } + } + else + { + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + muGFSrc_.push_back(env().getObject(muGFSrcName_[mu])); + } + } + // cache position-space free scalar propagators + if (!env().hasCreatedObject(prop0Name_)) + { + prop0_ = env().createLattice(prop0Name_); + fft.FFT_all_dim(*prop0_, *GFSrc_, FFT::backward); + } + else + { + prop0_ = env().getObject(prop0Name_); + } + if (!env().hasCreatedObject(muProp0Name_[0])) + { + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + muProp0_.push_back(env().createLattice(muProp0Name_[mu])); + fft.FFT_all_dim(*(muProp0_[mu]), *(muGFSrc_[mu]), FFT::backward); + } + } + else + { + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + muProp0_.push_back(env().getObject(muProp0Name_[mu])); + } } + // PROPAGATOR CALCULATION + // Propagator from unshifted source + ScalarField &propQ = *env().createLattice(propQName_); + ScalarField &propSun = *env().createLattice(propSunName_); + ScalarField &propTad = *env().createLattice(propTadName_); + chargedProp(propQ, propSun, propTad, *GFSrc_, fft); + + // Propagators from shifted sources + std::vector muPropQ_, muPropSun_, muPropTad_; + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + muPropQ_.push_back(env().createLattice(muPropQName_[mu])); + muPropSun_.push_back(env().createLattice(muPropSunName_[mu])); + muPropTad_.push_back(env().createLattice(muPropTadName_[mu])); + chargedProp(*(muPropQ_[mu]), *(muPropSun_[mu]), *(muPropTad_[mu]), + *(muGFSrc_[mu]), fft); + } + } -void TScalarVP::momD1(ScalarField &s, EmField &A, FFT &fft) +// Calculate O(q) and O(q^2) terms of momentum-space charged propagator +void TScalarVP::chargedProp(ScalarField &prop_q, ScalarField &prop_sun, + ScalarField &prop_tad, ScalarField &GFSrc, + FFT &fft) { + Complex ci(0.0,1.0); + double q = par().charge; + ScalarField &G = *freeMomProp_; + ScalarField buf(env().getGrid()); + + LOG(Message) << "Computing charged scalar propagator" + << " (mass= " << par().mass + << ", charge= " << q << ")..." << std::endl; + + // -q*G*momD1*G*F*Src (momD1 = F*D1*Finv) + buf = GFSrc; + momD1(buf, fft); + buf = G*buf; + prop_q = -q*buf; + + // q*q*G*momD1*G*momD1*G*F*Src + momD1(buf, fft); + prop_sun = q*q*G*buf; + + // -q*q*G*momD2*G*F*Src (momD2 = F*D2*Finv) + buf = GFSrc; + momD2(buf, fft); + prop_tad = -q*q*G*buf; +} + +void TScalarVP::momD1(ScalarField &s, FFT &fft) +{ + EmField &A = *env().getObject(par().emField); ScalarField buf(env().getGrid()), result(env().getGrid()), Amu(env().getGrid()); Complex ci(0.0,1.0); @@ -83,27 +280,28 @@ void TScalarVP::momD1(ScalarField &s, EmField &A, FFT &fft) s = result; } -void TScalarVP::momD2(ScalarField &s, EmField &Asquared, FFT &fft) +void TScalarVP::momD2(ScalarField &s, FFT &fft) { + EmField &A = *env().getObject(par().emField); ScalarField buf(env().getGrid()), result(env().getGrid()), - A2mu(env().getGrid()); + Amu(env().getGrid()); result = zero; for (unsigned int mu = 0; mu < env().getNd(); ++mu) { - A2mu = peekLorentz(Asquared, mu); + Amu = peekLorentz(A, mu); buf = (*phase_[mu])*s; fft.FFT_all_dim(buf, buf, FFT::backward); - buf = A2mu*buf; + buf = Amu*Amu*buf; fft.FFT_all_dim(buf, buf, FFT::forward); result = result + .5*buf; } fft.FFT_all_dim(s, s, FFT::backward); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { - A2mu = peekLorentz(Asquared, mu); - buf = A2mu*s; + Amu = peekLorentz(A, mu); + buf = Amu*Amu*s; fft.FFT_all_dim(buf, buf, FFT::forward); result = result + .5*adj(*phase_[mu])*buf; } diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index 92a4f246..9d57a62a 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -18,7 +18,7 @@ public: GRID_SERIALIZABLE_CLASS_MEMBERS(ScalarVPPar, std::string, emField, std::string, source, - std::string, scalarProp, + double, mass, double, charge, std::string, output); }; @@ -42,12 +42,16 @@ public: // execution virtual void execute(void); private: - void momD1(ScalarField &s, EmField &A, FFT &fft); - void momD2(ScalarField &s, EmField &Asquared, FFT &fft); + void momD1(ScalarField &s, FFT &fft); + void momD2(ScalarField &s, FFT &fft); private: - std::string prop0Name_, propD1Name_, propD1D1Name_, propD2Name_; - std::vector phaseName_; - std::vector phase_; + std::string freeMomPropName_, GFSrcName_, prop0Name_, + propQName_, propSunName_, propTadName_; + std::vector phaseName_, muGFSrcName_, muProp0Name_, + muPropQName, muPropSunName_, muPropTadName_; + ScalarField *freeMomProp_, *GFSrc_, *prop0_; + std::vector phase_, muGFSrc_, muProp0_; + emField *A; }; MODULE_REGISTER_NS(ScalarVP, TScalarVP, MScalar); From c8e6f58e24ac04b0387bafd33334189528212627 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Thu, 13 Apr 2017 17:04:37 +0100 Subject: [PATCH 009/267] Fix typos in ScalarVP --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 3 ++- extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 66cdea7e..79cc5574 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -1,4 +1,5 @@ #include +#include using namespace Grid; using namespace Hadrons; @@ -46,7 +47,7 @@ void TScalarVP::setup(void) for (unsigned int mu = 0; mu < env().getNd(); ++mu) { phaseName_.push_back("_shiftphase_" + std::to_string(mu)); - muGFSrcName.push_back("_" + getName() + "_DinvSrc_" + std::to_string(mu)); + muGFSrcName_.push_back("_" + getName() + "_DinvSrc_" + std::to_string(mu)); muProp0Name_.push_back(getName() + "_prop0_" + std::to_string(mu)); muPropQName_.push_back(getName() + "_propQ_" + std::to_string(mu)); muPropSunName_.push_back(getName() + "_propSun_" + std::to_string(mu)); diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index 9d57a62a..1a2b82fb 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -42,16 +42,19 @@ public: // execution virtual void execute(void); private: + void chargedProp(ScalarField &prop_q, ScalarField &prop_sun, + ScalarField &prop_tad, ScalarField &GFSrc, + FFT &fft); void momD1(ScalarField &s, FFT &fft); void momD2(ScalarField &s, FFT &fft); private: std::string freeMomPropName_, GFSrcName_, prop0Name_, propQName_, propSunName_, propTadName_; std::vector phaseName_, muGFSrcName_, muProp0Name_, - muPropQName, muPropSunName_, muPropTadName_; + muPropQName_, muPropSunName_, muPropTadName_; ScalarField *freeMomProp_, *GFSrc_, *prop0_; std::vector phase_, muGFSrc_, muProp0_; - emField *A; + EmField *A; }; MODULE_REGISTER_NS(ScalarVP, TScalarVP, MScalar); From bd466a55a89b98c54dbc1287e15feb558a372de4 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Tue, 25 Apr 2017 10:04:03 +0100 Subject: [PATCH 010/267] QedFVol: remove charge dependence in chargedProp function of ScalarVP --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 30 ++++++++++++++-------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 79cc5574..ed777387 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -23,8 +23,17 @@ std::vector TScalarVP::getInput(void) std::vector TScalarVP::getOutput(void) { - std::vector out = {getName()}; + std::vector out = {getName(), getName()+"_propQ", + getName()+"_propSun", + getName()+"_propTad"}; + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + out.push_back(getName() + "_propQ_" + std::to_string(mu)); + out.push_back(getName() + "_propSun_" + std::to_string(mu)); + out.push_back(getName() + "_propTad_" + std::to_string(mu)); + } + return out; } @@ -112,6 +121,7 @@ void TScalarVP::execute(void) ScalarField &source = *env().getObject(par().source); Complex ci(0.0,1.0); FFT fft(env().getGrid()); + double q = par().charge; // cache momentum-space free scalar propagator if (!env().hasCreatedObject(freeMomPropName_)) @@ -227,28 +237,28 @@ void TScalarVP::chargedProp(ScalarField &prop_q, ScalarField &prop_sun, FFT &fft) { Complex ci(0.0,1.0); - double q = par().charge; - ScalarField &G = *freeMomProp_; + ScalarField &G = *freeMomProp_; ScalarField buf(env().getGrid()); LOG(Message) << "Computing charged scalar propagator" << " (mass= " << par().mass - << ", charge= " << q << ")..." << std::endl; + << ", charge= " << par().charge << ")..." + << std::endl; - // -q*G*momD1*G*F*Src (momD1 = F*D1*Finv) + // -G*momD1*G*F*Src (momD1 = F*D1*Finv) buf = GFSrc; momD1(buf, fft); buf = G*buf; - prop_q = -q*buf; + prop_q = -buf; - // q*q*G*momD1*G*momD1*G*F*Src + // G*momD1*G*momD1*G*F*Src momD1(buf, fft); - prop_sun = q*q*G*buf; + prop_sun = G*buf; - // -q*q*G*momD2*G*F*Src (momD2 = F*D2*Finv) + // -G*momD2*G*F*Src (momD2 = F*D2*Finv) buf = GFSrc; momD2(buf, fft); - prop_tad = -q*q*G*buf; + prop_tad = -G*buf; } void TScalarVP::momD1(ScalarField &s, FFT &fft) From 3ac27e559678f456d512f58670617b26ca1529e5 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Thu, 27 Apr 2017 14:17:50 +0100 Subject: [PATCH 011/267] QedFVol: remove unnecessary copies of free propagator from shifted sources in ScalarVP --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 57 ++------------------- extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 6 +-- 2 files changed, 8 insertions(+), 55 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index ed777387..5a5ef4f0 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -48,16 +48,12 @@ void TScalarVP::setup(void) propTadName_ = getName() + "_propTad"; phaseName_.clear(); - muGFSrcName_.clear(); - muProp0Name_.clear(); muPropQName_.clear(); muPropSunName_.clear(); muPropTadName_.clear(); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { phaseName_.push_back("_shiftphase_" + std::to_string(mu)); - muGFSrcName_.push_back("_" + getName() + "_DinvSrc_" + std::to_string(mu)); - muProp0Name_.push_back(getName() + "_prop0_" + std::to_string(mu)); muPropQName_.push_back(getName() + "_propQ_" + std::to_string(mu)); muPropSunName_.push_back(getName() + "_propSun_" + std::to_string(mu)); muPropTadName_.push_back(getName() + "_propTad_" + std::to_string(mu)); @@ -78,24 +74,10 @@ void TScalarVP::setup(void) { env().registerLattice(GFSrcName_); } - if (!env().hasRegisteredObject(muGFSrcName_[0])) - { - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - env().registerLattice(muGFSrcName_[mu]); - } - } if (!env().hasRegisteredObject(prop0Name_)) { env().registerLattice(prop0Name_); } - if (!env().hasRegisteredObject(muProp0Name_[0])) - { - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - env().registerLattice(muProp0Name_[mu]); - } - } env().registerLattice(propQName_); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { @@ -168,23 +150,6 @@ void TScalarVP::execute(void) { GFSrc_ = env().getObject(GFSrcName_); } - // cache G*exp(i*k_mu)*F*src - if (!env().hasCreatedObject(muGFSrcName_[0])) - { - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - muGFSrc_.push_back(env().createLattice(muGFSrcName_[mu])); - fft.FFT_all_dim(*(muGFSrc_[mu]), source, FFT::forward); - *(muGFSrc_[mu]) = (*freeMomProp_)*(*phase_[mu])*(*muGFSrc_[mu]); - } - } - else - { - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - muGFSrc_.push_back(env().getObject(muGFSrcName_[mu])); - } - } // cache position-space free scalar propagators if (!env().hasCreatedObject(prop0Name_)) { @@ -195,21 +160,6 @@ void TScalarVP::execute(void) { prop0_ = env().getObject(prop0Name_); } - if (!env().hasCreatedObject(muProp0Name_[0])) - { - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - muProp0_.push_back(env().createLattice(muProp0Name_[mu])); - fft.FFT_all_dim(*(muProp0_[mu]), *(muGFSrc_[mu]), FFT::backward); - } - } - else - { - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - muProp0_.push_back(env().getObject(muProp0Name_[mu])); - } - } // PROPAGATOR CALCULATION // Propagator from unshifted source @@ -220,15 +170,18 @@ void TScalarVP::execute(void) // Propagators from shifted sources std::vector muPropQ_, muPropSun_, muPropTad_; + ScalarField buf(env().getGrid()); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { muPropQ_.push_back(env().createLattice(muPropQName_[mu])); muPropSun_.push_back(env().createLattice(muPropSunName_[mu])); muPropTad_.push_back(env().createLattice(muPropTadName_[mu])); + + buf = adj(*phase_[mu])*(*GFSrc_); chargedProp(*(muPropQ_[mu]), *(muPropSun_[mu]), *(muPropTad_[mu]), - *(muGFSrc_[mu]), fft); + buf, fft); } - + } // Calculate O(q) and O(q^2) terms of momentum-space charged propagator diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index 1a2b82fb..0d93dc45 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -50,10 +50,10 @@ private: private: std::string freeMomPropName_, GFSrcName_, prop0Name_, propQName_, propSunName_, propTadName_; - std::vector phaseName_, muGFSrcName_, muProp0Name_, - muPropQName_, muPropSunName_, muPropTadName_; + std::vector phaseName_, muPropQName_, muPropSunName_, + muPropTadName_; ScalarField *freeMomProp_, *GFSrc_, *prop0_; - std::vector phase_, muGFSrc_, muProp0_; + std::vector phase_; EmField *A; }; From 2f0dd83016075d7541a0ef86289af64cfae73fed Mon Sep 17 00:00:00 2001 From: James Harrison Date: Wed, 3 May 2017 12:53:41 +0100 Subject: [PATCH 012/267] Calculate HVP using a single contraction of O(alpha) charged propagators. --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 131 ++++++++++++++++++++ extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 18 +-- 2 files changed, 142 insertions(+), 7 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 5a5ef4f0..9689a63f 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -32,6 +32,11 @@ std::vector TScalarVP::getOutput(void) out.push_back(getName() + "_propQ_" + std::to_string(mu)); out.push_back(getName() + "_propSun_" + std::to_string(mu)); out.push_back(getName() + "_propTad_" + std::to_string(mu)); + + for (unsigned int nu = 0; nu < env().getNd(); ++nu) + { + out.push_back(getName() + "_" + std::to_string(mu) + "_" + std::to_string(nu)); + } } return out; @@ -51,12 +56,22 @@ void TScalarVP::setup(void) muPropQName_.clear(); muPropSunName_.clear(); muPropTadName_.clear(); + vpTensorName_.clear(); + for (unsigned int mu = 0; mu < env().getNd(); ++mu) { phaseName_.push_back("_shiftphase_" + std::to_string(mu)); muPropQName_.push_back(getName() + "_propQ_" + std::to_string(mu)); muPropSunName_.push_back(getName() + "_propSun_" + std::to_string(mu)); muPropTadName_.push_back(getName() + "_propTad_" + std::to_string(mu)); + + std::vector vpTensorName_mu; + for (unsigned int nu = 0; nu < env().getNd(); ++nu) + { + vpTensorName_mu.push_back(getName() + "_" + std::to_string(mu) + + "_" + std::to_string(nu)); + } + vpTensorName_.push_back(vpTensorName_mu); } if (!env().hasRegisteredObject(freeMomPropName_)) @@ -93,6 +108,13 @@ void TScalarVP::setup(void) { env().registerLattice(muPropTadName_[mu]); } + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + for (unsigned int nu = 0; nu < env().getNd(); ++nu) + { + env().registerLattice(vpTensorName_[mu][nu]); + } + } env().registerLattice(getName()); } @@ -182,6 +204,115 @@ void TScalarVP::execute(void) buf, fft); } + // CONTRACTIONS + vpTensor_.clear(); + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + std::vector vpTensor_mu; + for (unsigned int nu = 0; nu < env().getNd(); ++nu) + { + vpTensor_mu.push_back(env().createLattice(vpTensorName_[mu][nu])); + } + vpTensor_.push_back(vpTensor_mu); + } + ScalarField prop1(env().getGrid()), prop2(env().getGrid()); + EmField &A = *env().getObject(par().emField); + ScalarField Amu(env().getGrid()); + TComplex Anu0; + std::vector coor0 = {0, 0, 0, 0}; + + // Position-space implementation + prop1 = *GFSrc_ + q*propQ + q*q*propSun + q*q*propTad; + fft.FFT_all_dim(prop1, prop1, FFT::backward); + for (unsigned int nu = 0; nu < env().getNd(); ++nu) + { + peekSite(Anu0, peekLorentz(A, nu), coor0); + prop2 = adj(*phase_[nu])*(*GFSrc_) + q*(*(muPropQ_[nu])) + + q*q*(*(muPropSun_[nu]) + *(muPropTad_[nu])); + fft.FFT_all_dim(prop2, prop2, FFT::backward); + + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + LOG(Message) << "Computing Pi[" << mu << "][" << nu << "]..." + << std::endl; + Amu = peekLorentz(A, mu); + ScalarField &pi_mu_nu = *(vpTensor_[mu][nu]); + pi_mu_nu = adj(prop2) + * (1.0 + ci*q*Amu - 0.5*q*q*Amu*Amu) + * Cshift(prop1, mu, 1) + * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); + pi_mu_nu -= Cshift(adj(prop2), mu, 1) + * (1.0 - ci*q*Amu - 0.5*q*q*Amu*Amu) + * prop1 + * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); + pi_mu_nu = 2.0*real(pi_mu_nu); + } + } + + // // Momentum-space implementation + // ScalarField propbuf1(env().getGrid()), propbuf2(env().getGrid()); + // prop1 = *GFSrc_ + q*propQ + q*q*propSun + q*q*propTad; + // for (unsigned int nu = 0; nu < env().getNd(); ++nu) + // { + // peekSite(Anu0, peekLorentz(A, nu), coor0); + // prop2 = adj(*phase_[nu])*(*GFSrc_) + q*(*(muPropQ_[nu])) + // + q*q*(*(muPropSun_[nu]) + *(muPropTad_[nu])); + + // for (unsigned int mu = 0; mu < env().getNd(); ++mu) + // { + // LOG(Message) << "Computing Pi[" << mu << "][" << nu << "]..." + // << std::endl; + // Amu = peekLorentz(A, mu); + // ScalarField &pi_mu_nu = *(vpTensor_[mu][nu]); + // propbuf1 = (*phase_[mu])*prop1; + // fft.FFT_all_dim(propbuf1, propbuf1, FFT::backward); + // fft.FFT_all_dim(propbuf2, prop2, FFT::backward); + // pi_mu_nu = adj(propbuf2) + // * (1.0 + ci*q*Amu - 0.5*q*q*Amu*Amu) + // * propbuf1 + // * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); + // propbuf2 = (*phase_[mu])*prop2; + // fft.FFT_all_dim(propbuf1, prop1, FFT::backward); + // fft.FFT_all_dim(propbuf2, propbuf2, FFT::backward); + // pi_mu_nu -= adj(propbuf2) + // * (1.0 - ci*q*Amu - 0.5*q*q*Amu*Amu) + // * propbuf1 + // * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); + // pi_mu_nu = 2.0*real(pi_mu_nu); + // } + // } + + // OUTPUT IF NECESSARY + if (!par().output.empty()) + { + std::string filename = par().output + "." + + std::to_string(env().getTrajectory()); + + LOG(Message) << "Saving zero-momentum projection to '" + << filename << "'..." << std::endl; + + CorrWriter writer(filename); + std::vector vecBuf; + std::vector result; + + write(writer, "charge", q); + write(writer, "mass", par().mass); + + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + for (unsigned int nu = 0; nu < env().getNd(); ++nu) + { + sliceSum(*(vpTensor_[mu][nu]), vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "Pi_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } + } + } } // Calculate O(q) and O(q^2) terms of momentum-space charged propagator diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index 0d93dc45..fbe73d85 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -48,13 +48,17 @@ private: void momD1(ScalarField &s, FFT &fft); void momD2(ScalarField &s, FFT &fft); private: - std::string freeMomPropName_, GFSrcName_, prop0Name_, - propQName_, propSunName_, propTadName_; - std::vector phaseName_, muPropQName_, muPropSunName_, - muPropTadName_; - ScalarField *freeMomProp_, *GFSrc_, *prop0_; - std::vector phase_; - EmField *A; + std::string freeMomPropName_, GFSrcName_, + prop0Name_, propQName_, + propSunName_, propTadName_; + std::vector phaseName_, muPropQName_, + muPropSunName_, muPropTadName_; + std::vector > vpTensorName_; + ScalarField *freeMomProp_, *GFSrc_, + *prop0_; + std::vector phase_; + std::vector > vpTensor_; + EmField *A; }; MODULE_REGISTER_NS(ScalarVP, TScalarVP, MScalar); From db3837be22a6f654e2da45414a4692886ea38d56 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Wed, 3 May 2017 13:26:49 +0100 Subject: [PATCH 013/267] =?UTF-8?q?QedFVol:=20Change=20=E2=80=9Cdouble?= =?UTF-8?q?=E2=80=9D=20to=20=E2=80=9CReal=E2=80=9D=20in=20ScalarVP.cc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 9689a63f..7745c40e 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -125,7 +125,7 @@ void TScalarVP::execute(void) ScalarField &source = *env().getObject(par().source); Complex ci(0.0,1.0); FFT fft(env().getGrid()); - double q = par().charge; + Real q = par().charge; // cache momentum-space free scalar propagator if (!env().hasCreatedObject(freeMomPropName_)) From 6cb563a40c97c4a443e6f2d5621d7c8c12f5b04e Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 5 May 2017 17:12:41 +0100 Subject: [PATCH 014/267] QedFVol: Access HVP tensor using a vector> instead of vector> --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 64 +++++---------------- extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 1 - 2 files changed, 15 insertions(+), 50 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 7745c40e..880b3ffd 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -205,15 +205,15 @@ void TScalarVP::execute(void) } // CONTRACTIONS - vpTensor_.clear(); + std::vector > vpTensor; for (unsigned int mu = 0; mu < env().getNd(); ++mu) { - std::vector vpTensor_mu; + std::vector vpTensor_mu; for (unsigned int nu = 0; nu < env().getNd(); ++nu) { - vpTensor_mu.push_back(env().createLattice(vpTensorName_[mu][nu])); + vpTensor_mu.push_back(*env().createLattice(vpTensorName_[mu][nu])); } - vpTensor_.push_back(vpTensor_mu); + vpTensor.push_back(vpTensor_mu); } ScalarField prop1(env().getGrid()), prop2(env().getGrid()); EmField &A = *env().getObject(par().emField); @@ -221,7 +221,6 @@ void TScalarVP::execute(void) TComplex Anu0; std::vector coor0 = {0, 0, 0, 0}; - // Position-space implementation prop1 = *GFSrc_ + q*propQ + q*q*propSun + q*q*propTad; fft.FFT_all_dim(prop1, prop1, FFT::backward); for (unsigned int nu = 0; nu < env().getNd(); ++nu) @@ -231,57 +230,24 @@ void TScalarVP::execute(void) + q*q*(*(muPropSun_[nu]) + *(muPropTad_[nu])); fft.FFT_all_dim(prop2, prop2, FFT::backward); + std::vector pi_nu; for (unsigned int mu = 0; mu < env().getNd(); ++mu) { LOG(Message) << "Computing Pi[" << mu << "][" << nu << "]..." << std::endl; Amu = peekLorentz(A, mu); - ScalarField &pi_mu_nu = *(vpTensor_[mu][nu]); - pi_mu_nu = adj(prop2) - * (1.0 + ci*q*Amu - 0.5*q*q*Amu*Amu) - * Cshift(prop1, mu, 1) - * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); - pi_mu_nu -= Cshift(adj(prop2), mu, 1) - * (1.0 - ci*q*Amu - 0.5*q*q*Amu*Amu) - * prop1 - * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); - pi_mu_nu = 2.0*real(pi_mu_nu); + vpTensor[mu][nu] = adj(prop2) + * (1.0 + ci*q*Amu - 0.5*q*q*Amu*Amu) + * Cshift(prop1, mu, 1) + * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); + vpTensor[mu][nu] -= Cshift(adj(prop2), mu, 1) + * (1.0 - ci*q*Amu - 0.5*q*q*Amu*Amu) + * prop1 + * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); + vpTensor[mu][nu] = 2.0*real(vpTensor[mu][nu]); } } - // // Momentum-space implementation - // ScalarField propbuf1(env().getGrid()), propbuf2(env().getGrid()); - // prop1 = *GFSrc_ + q*propQ + q*q*propSun + q*q*propTad; - // for (unsigned int nu = 0; nu < env().getNd(); ++nu) - // { - // peekSite(Anu0, peekLorentz(A, nu), coor0); - // prop2 = adj(*phase_[nu])*(*GFSrc_) + q*(*(muPropQ_[nu])) - // + q*q*(*(muPropSun_[nu]) + *(muPropTad_[nu])); - - // for (unsigned int mu = 0; mu < env().getNd(); ++mu) - // { - // LOG(Message) << "Computing Pi[" << mu << "][" << nu << "]..." - // << std::endl; - // Amu = peekLorentz(A, mu); - // ScalarField &pi_mu_nu = *(vpTensor_[mu][nu]); - // propbuf1 = (*phase_[mu])*prop1; - // fft.FFT_all_dim(propbuf1, propbuf1, FFT::backward); - // fft.FFT_all_dim(propbuf2, prop2, FFT::backward); - // pi_mu_nu = adj(propbuf2) - // * (1.0 + ci*q*Amu - 0.5*q*q*Amu*Amu) - // * propbuf1 - // * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); - // propbuf2 = (*phase_[mu])*prop2; - // fft.FFT_all_dim(propbuf1, prop1, FFT::backward); - // fft.FFT_all_dim(propbuf2, propbuf2, FFT::backward); - // pi_mu_nu -= adj(propbuf2) - // * (1.0 - ci*q*Amu - 0.5*q*q*Amu*Amu) - // * propbuf1 - // * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); - // pi_mu_nu = 2.0*real(pi_mu_nu); - // } - // } - // OUTPUT IF NECESSARY if (!par().output.empty()) { @@ -302,7 +268,7 @@ void TScalarVP::execute(void) { for (unsigned int nu = 0; nu < env().getNd(); ++nu) { - sliceSum(*(vpTensor_[mu][nu]), vecBuf, Tp); + sliceSum(vpTensor[mu][nu], vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) { diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index fbe73d85..9d884575 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -57,7 +57,6 @@ private: ScalarField *freeMomProp_, *GFSrc_, *prop0_; std::vector phase_; - std::vector > vpTensor_; EmField *A; }; From 914f180fa31ca19b0710d393221f56785141b67c Mon Sep 17 00:00:00 2001 From: James Harrison Date: Tue, 9 May 2017 11:46:25 +0100 Subject: [PATCH 015/267] QedFVol: Implement exact O(alpha) vacuum polarisation. --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 119 ++++++++++++++------ extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 3 +- 2 files changed, 85 insertions(+), 37 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 880b3ffd..6e9be923 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -30,8 +30,6 @@ std::vector TScalarVP::getOutput(void) for (unsigned int mu = 0; mu < env().getNd(); ++mu) { out.push_back(getName() + "_propQ_" + std::to_string(mu)); - out.push_back(getName() + "_propSun_" + std::to_string(mu)); - out.push_back(getName() + "_propTad_" + std::to_string(mu)); for (unsigned int nu = 0; nu < env().getNd(); ++nu) { @@ -54,16 +52,12 @@ void TScalarVP::setup(void) phaseName_.clear(); muPropQName_.clear(); - muPropSunName_.clear(); - muPropTadName_.clear(); vpTensorName_.clear(); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { phaseName_.push_back("_shiftphase_" + std::to_string(mu)); muPropQName_.push_back(getName() + "_propQ_" + std::to_string(mu)); - muPropSunName_.push_back(getName() + "_propSun_" + std::to_string(mu)); - muPropTadName_.push_back(getName() + "_propTad_" + std::to_string(mu)); std::vector vpTensorName_mu; for (unsigned int nu = 0; nu < env().getNd(); ++nu) @@ -99,16 +93,8 @@ void TScalarVP::setup(void) env().registerLattice(muPropQName_[mu]); } env().registerLattice(propSunName_); - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - env().registerLattice(muPropSunName_[mu]); - } env().registerLattice(propTadName_); for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - env().registerLattice(muPropTadName_[mu]); - } - for (unsigned int mu = 0; mu < env().getNd(); ++mu) { for (unsigned int nu = 0; nu < env().getNd(); ++nu) { @@ -191,17 +177,16 @@ void TScalarVP::execute(void) chargedProp(propQ, propSun, propTad, *GFSrc_, fft); // Propagators from shifted sources - std::vector muPropQ_, muPropSun_, muPropTad_; - ScalarField buf(env().getGrid()); + std::vector muPropQ; for (unsigned int mu = 0; mu < env().getNd(); ++mu) { - muPropQ_.push_back(env().createLattice(muPropQName_[mu])); - muPropSun_.push_back(env().createLattice(muPropSunName_[mu])); - muPropTad_.push_back(env().createLattice(muPropTadName_[mu])); + muPropQ.push_back(*env().createLattice(muPropQName_[mu])); - buf = adj(*phase_[mu])*(*GFSrc_); - chargedProp(*(muPropQ_[mu]), *(muPropSun_[mu]), *(muPropTad_[mu]), - buf, fft); + // -G*momD1*G*F*tau_mu*Src (momD1 = F*D1*Finv) + muPropQ[mu] = adj(*phase_[mu])*(*GFSrc_); + momD1(muPropQ[mu], fft); + muPropQ[mu] = -(*freeMomProp_)*muPropQ[mu]; + fft.FFT_all_dim(muPropQ[mu], muPropQ[mu], FFT::backward); } // CONTRACTIONS @@ -221,33 +206,94 @@ void TScalarVP::execute(void) TComplex Anu0; std::vector coor0 = {0, 0, 0, 0}; - prop1 = *GFSrc_ + q*propQ + q*q*propSun + q*q*propTad; - fft.FFT_all_dim(prop1, prop1, FFT::backward); + // Free VP + + // Charged VP for (unsigned int nu = 0; nu < env().getNd(); ++nu) { peekSite(Anu0, peekLorentz(A, nu), coor0); - prop2 = adj(*phase_[nu])*(*GFSrc_) + q*(*(muPropQ_[nu])) - + q*q*(*(muPropSun_[nu]) + *(muPropTad_[nu])); - fft.FFT_all_dim(prop2, prop2, FFT::backward); - std::vector pi_nu; for (unsigned int mu = 0; mu < env().getNd(); ++mu) { LOG(Message) << "Computing Pi[" << mu << "][" << nu << "]..." << std::endl; Amu = peekLorentz(A, mu); - vpTensor[mu][nu] = adj(prop2) - * (1.0 + ci*q*Amu - 0.5*q*q*Amu*Amu) - * Cshift(prop1, mu, 1) - * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); + + // "Exchange" terms + prop1 = *prop0_ + q*propQ; + prop2 = Cshift(*prop0_, nu, -1) + q*muPropQ[nu]; + vpTensor[mu][nu] = adj(prop2) * (1.0 + ci*q*Amu) + * Cshift(prop1, mu, 1) * (1.0 + ci*q*Anu0); + vpTensor[mu][nu] -= Cshift(adj(prop2), mu, 1) * (1.0 - ci*q*Amu) + * prop1 * (1.0 + ci*q*Anu0); + + // Subtract O(alpha^2) term + prop1 = q*propQ; + prop2 = q*muPropQ[nu]; + vpTensor[mu][nu] -= adj(prop2) * ci*q*Amu + * Cshift(prop1, mu, 1) * ci*q*Anu0; + vpTensor[mu][nu] += Cshift(adj(prop2), mu, 1) * (-ci)*q*Amu + * prop1 * ci*q*Anu0; + + // Sunset+tadpole from source + prop1 = q*q*(propSun + propTad); + prop2 = Cshift(*prop0_, nu, -1); + vpTensor[mu][nu] += adj(prop2) * Cshift(prop1, mu, 1); + vpTensor[mu][nu] -= Cshift(adj(prop2), mu, 1) * prop1; + + // Sunset+tadpole from shifted source + prop1 = Cshift(prop1, nu, -1); + vpTensor[mu][nu] += Cshift(adj(*prop0_), mu, 1) * prop1; + vpTensor[mu][nu] -= adj(*prop0_) * Cshift(prop1, mu, 1); + + // Source tadpole + prop1 = *prop0_; + vpTensor[mu][nu] += adj(prop2) + * Cshift(prop1, mu, 1) + * (-0.5)*q*q*Anu0*Anu0; vpTensor[mu][nu] -= Cshift(adj(prop2), mu, 1) - * (1.0 - ci*q*Amu - 0.5*q*q*Amu*Amu) * prop1 - * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); + * (-0.5)*q*q*Anu0*Anu0; + + // Sink tadpole + vpTensor[mu][nu] += adj(prop2) + * (-0.5)*q*q*Amu*Amu + * Cshift(prop1, mu, 1); + vpTensor[mu][nu] -= Cshift(adj(prop2), mu, 1) + * (-0.5)*q*q*Amu*Amu + * prop1; + vpTensor[mu][nu] = 2.0*real(vpTensor[mu][nu]); } } + // prop1 = *GFSrc_ + q*propQ + q*q*propSun + q*q*propTad; + // fft.FFT_all_dim(prop1, prop1, FFT::backward); + // for (unsigned int nu = 0; nu < env().getNd(); ++nu) + // { + // peekSite(Anu0, peekLorentz(A, nu), coor0); + // prop2 = adj(*phase_[nu])*(*GFSrc_) + q*(*(muPropQ_[nu])) + // + q*q*(*(muPropSun_[nu]) + *(muPropTad_[nu])); + // fft.FFT_all_dim(prop2, prop2, FFT::backward); + + // std::vector pi_nu; + // for (unsigned int mu = 0; mu < env().getNd(); ++mu) + // { + // LOG(Message) << "Computing Pi[" << mu << "][" << nu << "]..." + // << std::endl; + // Amu = peekLorentz(A, mu); + // vpTensor[mu][nu] = adj(prop2) + // * (1.0 + ci*q*Amu - 0.5*q*q*Amu*Amu) + // * Cshift(prop1, mu, 1) + // * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); + // vpTensor[mu][nu] -= Cshift(adj(prop2), mu, 1) + // * (1.0 - ci*q*Amu - 0.5*q*q*Amu*Amu) + // * prop1 + // * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); + // vpTensor[mu][nu] = 2.0*real(vpTensor[mu][nu]); + // } + // } + // OUTPUT IF NECESSARY if (!par().output.empty()) { @@ -281,7 +327,7 @@ void TScalarVP::execute(void) } } -// Calculate O(q) and O(q^2) terms of momentum-space charged propagator +// Calculate O(q) and O(q^2) terms of position-space charged propagator void TScalarVP::chargedProp(ScalarField &prop_q, ScalarField &prop_sun, ScalarField &prop_tad, ScalarField &GFSrc, FFT &fft) @@ -300,15 +346,18 @@ void TScalarVP::chargedProp(ScalarField &prop_q, ScalarField &prop_sun, momD1(buf, fft); buf = G*buf; prop_q = -buf; + fft.FFT_all_dim(prop_q, prop_q, FFT::backward); // G*momD1*G*momD1*G*F*Src momD1(buf, fft); prop_sun = G*buf; + fft.FFT_all_dim(prop_sun, prop_sun, FFT::backward); // -G*momD2*G*F*Src (momD2 = F*D2*Finv) buf = GFSrc; momD2(buf, fft); prop_tad = -G*buf; + fft.FFT_all_dim(prop_tad, prop_tad, FFT::backward); } void TScalarVP::momD1(ScalarField &s, FFT &fft) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index 9d884575..e0bdd034 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -51,8 +51,7 @@ private: std::string freeMomPropName_, GFSrcName_, prop0Name_, propQName_, propSunName_, propTadName_; - std::vector phaseName_, muPropQName_, - muPropSunName_, muPropTadName_; + std::vector phaseName_, muPropQName_; std::vector > vpTensorName_; ScalarField *freeMomProp_, *GFSrc_, *prop0_; From 5cfc0180aaab83f80c0d8b92d25bbbe97cce57f7 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Tue, 9 May 2017 12:46:57 +0100 Subject: [PATCH 016/267] QedFVol: Output free VP along with charged VP. --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 96 ++++++++++----------- extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 3 +- 2 files changed, 48 insertions(+), 51 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 6e9be923..f6f40700 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -23,7 +23,7 @@ std::vector TScalarVP::getInput(void) std::vector TScalarVP::getOutput(void) { - std::vector out = {getName(), getName()+"_propQ", + std::vector out = {getName()+"_propQ", getName()+"_propSun", getName()+"_propTad"}; @@ -34,6 +34,7 @@ std::vector TScalarVP::getOutput(void) for (unsigned int nu = 0; nu < env().getNd(); ++nu) { out.push_back(getName() + "_" + std::to_string(mu) + "_" + std::to_string(nu)); + out.push_back(getName() + "_free_" + std::to_string(mu) + "_" + std::to_string(nu)); } } @@ -53,6 +54,7 @@ void TScalarVP::setup(void) phaseName_.clear(); muPropQName_.clear(); vpTensorName_.clear(); + freeVpTensorName_.clear(); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { @@ -60,12 +62,16 @@ void TScalarVP::setup(void) muPropQName_.push_back(getName() + "_propQ_" + std::to_string(mu)); std::vector vpTensorName_mu; + std::vector freeVpTensorName_mu; for (unsigned int nu = 0; nu < env().getNd(); ++nu) { vpTensorName_mu.push_back(getName() + "_" + std::to_string(mu) + "_" + std::to_string(nu)); + freeVpTensorName_mu.push_back(getName() + "_free_" + std::to_string(mu) + + "_" + std::to_string(nu)); } vpTensorName_.push_back(vpTensorName_mu); + freeVpTensorName_.push_back(freeVpTensorName_mu); } if (!env().hasRegisteredObject(freeMomPropName_)) @@ -90,7 +96,7 @@ void TScalarVP::setup(void) env().registerLattice(propQName_); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { - env().registerLattice(muPropQName_[mu]); + env().registerLattice(muPropQName_[mu]); } env().registerLattice(propSunName_); env().registerLattice(propTadName_); @@ -99,9 +105,9 @@ void TScalarVP::setup(void) for (unsigned int nu = 0; nu < env().getNd(); ++nu) { env().registerLattice(vpTensorName_[mu][nu]); + env().registerLattice(freeVpTensorName_[mu][nu]); } } - env().registerLattice(getName()); } // execution /////////////////////////////////////////////////////////////////// @@ -171,12 +177,18 @@ void TScalarVP::execute(void) // PROPAGATOR CALCULATION // Propagator from unshifted source + LOG(Message) << "Computing O(alpha) charged scalar propagator" + << " (mass= " << par().mass + << ", charge= " << q << ")..." + << std::endl; ScalarField &propQ = *env().createLattice(propQName_); ScalarField &propSun = *env().createLattice(propSunName_); ScalarField &propTad = *env().createLattice(propTadName_); chargedProp(propQ, propSun, propTad, *GFSrc_, fft); // Propagators from shifted sources + LOG(Message) << "Computing O(q) charged scalar propagators..." + << std::endl; std::vector muPropQ; for (unsigned int mu = 0; mu < env().getNd(); ++mu) { @@ -190,25 +202,25 @@ void TScalarVP::execute(void) } // CONTRACTIONS - std::vector > vpTensor; - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - std::vector vpTensor_mu; - for (unsigned int nu = 0; nu < env().getNd(); ++nu) - { - vpTensor_mu.push_back(*env().createLattice(vpTensorName_[mu][nu])); - } - vpTensor.push_back(vpTensor_mu); - } ScalarField prop1(env().getGrid()), prop2(env().getGrid()); EmField &A = *env().getObject(par().emField); ScalarField Amu(env().getGrid()); TComplex Anu0; std::vector coor0 = {0, 0, 0, 0}; + std::vector > vpTensor, freeVpTensor; + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + std::vector vpTensor_mu; + std::vector freeVpTensor_mu; + for (unsigned int nu = 0; nu < env().getNd(); ++nu) + { + vpTensor_mu.push_back(*env().createLattice(vpTensorName_[mu][nu])); + freeVpTensor_mu.push_back(*env().createLattice(freeVpTensorName_[mu][nu])); + } + vpTensor.push_back(vpTensor_mu); + freeVpTensor.push_back(freeVpTensor_mu); + } - // Free VP - - // Charged VP for (unsigned int nu = 0; nu < env().getNd(); ++nu) { peekSite(Anu0, peekLorentz(A, nu), coor0); @@ -219,9 +231,15 @@ void TScalarVP::execute(void) << std::endl; Amu = peekLorentz(A, mu); + // Free VP + prop1 = *prop0_; + prop2 = Cshift(*prop0_, nu, -1); + freeVpTensor[mu][nu] = adj(prop2) * Cshift(prop1, mu, 1); + freeVpTensor[mu][nu] -= Cshift(adj(prop2), mu, 1) * prop1; + // "Exchange" terms - prop1 = *prop0_ + q*propQ; - prop2 = Cshift(*prop0_, nu, -1) + q*muPropQ[nu]; + prop1 += q*propQ; + prop2 += q*muPropQ[nu]; vpTensor[mu][nu] = adj(prop2) * (1.0 + ci*q*Amu) * Cshift(prop1, mu, 1) * (1.0 + ci*q*Anu0); vpTensor[mu][nu] -= Cshift(adj(prop2), mu, 1) * (1.0 - ci*q*Amu) @@ -267,33 +285,6 @@ void TScalarVP::execute(void) } } - // prop1 = *GFSrc_ + q*propQ + q*q*propSun + q*q*propTad; - // fft.FFT_all_dim(prop1, prop1, FFT::backward); - // for (unsigned int nu = 0; nu < env().getNd(); ++nu) - // { - // peekSite(Anu0, peekLorentz(A, nu), coor0); - // prop2 = adj(*phase_[nu])*(*GFSrc_) + q*(*(muPropQ_[nu])) - // + q*q*(*(muPropSun_[nu]) + *(muPropTad_[nu])); - // fft.FFT_all_dim(prop2, prop2, FFT::backward); - - // std::vector pi_nu; - // for (unsigned int mu = 0; mu < env().getNd(); ++mu) - // { - // LOG(Message) << "Computing Pi[" << mu << "][" << nu << "]..." - // << std::endl; - // Amu = peekLorentz(A, mu); - // vpTensor[mu][nu] = adj(prop2) - // * (1.0 + ci*q*Amu - 0.5*q*q*Amu*Amu) - // * Cshift(prop1, mu, 1) - // * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); - // vpTensor[mu][nu] -= Cshift(adj(prop2), mu, 1) - // * (1.0 - ci*q*Amu - 0.5*q*q*Amu*Amu) - // * prop1 - // * (1.0 + ci*q*Anu0 - 0.5*q*q*Anu0*Anu0); - // vpTensor[mu][nu] = 2.0*real(vpTensor[mu][nu]); - // } - // } - // OUTPUT IF NECESSARY if (!par().output.empty()) { @@ -322,6 +313,16 @@ void TScalarVP::execute(void) } write(writer, "Pi_"+std::to_string(mu)+"_"+std::to_string(nu), result); + + sliceSum(freeVpTensor[mu][nu], vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, + "Pi_"+std::to_string(mu)+"_"+std::to_string(nu)+"_free", + result); } } } @@ -335,11 +336,6 @@ void TScalarVP::chargedProp(ScalarField &prop_q, ScalarField &prop_sun, Complex ci(0.0,1.0); ScalarField &G = *freeMomProp_; ScalarField buf(env().getGrid()); - - LOG(Message) << "Computing charged scalar propagator" - << " (mass= " << par().mass - << ", charge= " << par().charge << ")..." - << std::endl; // -G*momD1*G*F*Src (momD1 = F*D1*Finv) buf = GFSrc; diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index e0bdd034..4629f6e6 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -52,7 +52,8 @@ private: prop0Name_, propQName_, propSunName_, propTadName_; std::vector phaseName_, muPropQName_; - std::vector > vpTensorName_; + std::vector > vpTensorName_, + freeVpTensorName_; ScalarField *freeMomProp_, *GFSrc_, *prop0_; std::vector phase_; From 009f48a9045c87c13ec2fde2b3630446bd65bbb6 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Wed, 7 Jun 2017 16:34:09 +0100 Subject: [PATCH 017/267] QedFVol: Add missing factor of 2 in free vacuum polarisation --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index f6f40700..13591d83 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -185,6 +185,63 @@ void TScalarVP::execute(void) ScalarField &propSun = *env().createLattice(propSunName_); ScalarField &propTad = *env().createLattice(propTadName_); chargedProp(propQ, propSun, propTad, *GFSrc_, fft); + // // OUTPUT IF NECESSARY + // if (!par().output.empty()) + // { + // ScalarField fullProp = (*prop0_) + q*propQ + q*q*propSun + q*q*propTad; + // std::string filename = par().output + "_prop_000." + + // std::to_string(env().getTrajectory()); + + // LOG(Message) << "Saving zero-momentum projection to '" + // << filename << "'..." << std::endl; + + // CorrWriter writer(filename); + // std::vector vecBuf; + // std::vector result; + + // write(writer, "charge", q); + + // // Write full propagator + // sliceSum(fullProp, vecBuf, Tp); + // result.resize(vecBuf.size()); + // for (unsigned int t = 0; t < vecBuf.size(); ++t) + // { + // result[t] = TensorRemove(vecBuf[t]); + // } + // write(writer, "prop", result); + + // // Write free propagator + // sliceSum(*prop0_, vecBuf, Tp); + // for (unsigned int t = 0; t < vecBuf.size(); ++t) + // { + // result[t] = TensorRemove(vecBuf[t]); + // } + // write(writer, "prop_0", result); + + // // Write propagator D1 term + // sliceSum(propD1, vecBuf, Tp); + // for (unsigned int t = 0; t < vecBuf.size(); ++t) + // { + // result[t] = TensorRemove(vecBuf[t]); + // } + // write(writer, "prop_q", result); + + // // Write propagator D1D1 term + // sliceSum(propD1D1, vecBuf, Tp); + // for (unsigned int t = 0; t < vecBuf.size(); ++t) + // { + // result[t] = TensorRemove(vecBuf[t]); + // } + // write(writer, "prop_sun", result); + + // // Write propagator D2 term + // sliceSum(propD2, vecBuf, Tp); + // for (unsigned int t = 0; t < vecBuf.size(); ++t) + // { + // result[t] = TensorRemove(vecBuf[t]); + // } + // write(writer, "prop_tad", result); + // } // Propagators from shifted sources LOG(Message) << "Computing O(q) charged scalar propagators..." @@ -281,6 +338,7 @@ void TScalarVP::execute(void) * (-0.5)*q*q*Amu*Amu * prop1; + freeVpTensor[mu][nu] = 2.0*real(freeVpTensor[mu][nu]); vpTensor[mu][nu] = 2.0*real(vpTensor[mu][nu]); } } From e38612e6fa71c57bf64fca975580a036be021cbb Mon Sep 17 00:00:00 2001 From: James Harrison Date: Wed, 7 Jun 2017 17:42:00 +0100 Subject: [PATCH 018/267] QedFVol: Update ScalarVP module for compatibility with new scalar action --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 2 +- extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 13591d83..c91b98ae 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -125,7 +125,7 @@ void TScalarVP::execute(void) LOG(Message) << "Caching momentum space free scalar propagator" << " (mass= " << par().mass << ")..." << std::endl; freeMomProp_ = env().createLattice(freeMomPropName_); - Scalar::MomentumSpacePropagator(*freeMomProp_, par().mass); + SIMPL::MomentumSpacePropagator(*freeMomProp_, par().mass); } else { diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index 4629f6e6..fdbad6f6 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -1,5 +1,5 @@ -#ifndef Hadrons_ScalarVP_hpp_ -#define Hadrons_ScalarVP_hpp_ +#ifndef Hadrons_MScalar_ScalarVP_hpp_ +#define Hadrons_MScalar_ScalarVP_hpp_ #include #include @@ -66,4 +66,4 @@ END_MODULE_NAMESPACE END_HADRONS_NAMESPACE -#endif // Hadrons_ScalarVP_hpp_ +#endif // Hadrons_MScalar_ScalarVP_hpp_ From 20ac13fdf36d2d82fd0403b1d92d9771849889d6 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Thu, 8 Jun 2017 17:43:39 +0100 Subject: [PATCH 019/267] QedFVol: add ChargedProp as an input to ScalarVP module, instead of calculating scalar propagator within ScalarVP. --- extras/Hadrons/Modules/MScalar/ChargedProp.cc | 50 ++-- .../Hadrons/Modules/MScalar/ChargedProp.hpp | 2 +- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 240 ++---------------- extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 8 +- 4 files changed, 51 insertions(+), 249 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index be64b5ec..a9089056 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -23,8 +23,8 @@ std::vector TChargedProp::getInput(void) std::vector TChargedProp::getOutput(void) { - std::vector out = {getName(), getName()+"_0", getName()+"_D1", - getName()+"_D1D1", getName()+"_D2"}; + std::vector out = {getName(), getName()+"_Q", + getName()+"_Sun", getName()+"_Tad"}; return out; } @@ -40,9 +40,9 @@ void TChargedProp::setup(void) } GFSrcName_ = "_" + getName() + "_DinvSrc"; prop0Name_ = getName() + "_0"; - propD1Name_ = getName() + "_D1"; - propD1D1Name_ = getName() + "_D1D1"; - propD2Name_ = getName() + "_D2"; + propQName_ = getName() + "_Q"; + propSunName_ = getName() + "_Sun"; + propTadName_ = getName() + "_Tad"; if (!env().hasRegisteredObject(freeMomPropName_)) { env().registerLattice(freeMomPropName_); @@ -63,9 +63,9 @@ void TChargedProp::setup(void) env().registerLattice(prop0Name_); } env().registerLattice(getName()); - env().registerLattice(propD1Name_); - env().registerLattice(propD1D1Name_); - env().registerLattice(propD2Name_); + env().registerLattice(propQName_); + env().registerLattice(propSunName_); + env().registerLattice(propTadName_); } // execution /////////////////////////////////////////////////////////////////// @@ -140,9 +140,9 @@ void TChargedProp::execute(void) << ", charge= " << par().charge << ")..." << std::endl; ScalarField &prop = *env().createLattice(getName()); - ScalarField &propD1 = *env().createLattice(propD1Name_); - ScalarField &propD1D1 = *env().createLattice(propD1D1Name_); - ScalarField &propD2 = *env().createLattice(propD2Name_); + ScalarField &propQ = *env().createLattice(propQName_); + ScalarField &propSun = *env().createLattice(propSunName_); + ScalarField &propTad = *env().createLattice(propTadName_); ScalarField buf(env().getGrid()); ScalarField &GFSrc = *GFSrc_, &G = *freeMomProp_; double q = par().charge; @@ -151,22 +151,22 @@ void TChargedProp::execute(void) buf = GFSrc; momD1(buf, fft); buf = -G*buf; - fft.FFT_all_dim(propD1, buf, FFT::backward); + fft.FFT_all_dim(propQ, buf, FFT::backward); // G*momD1*G*momD1*G*F*Src (here buf = G*momD1*G*F*Src) buf = -buf; momD1(buf, fft); - propD1D1 = G*buf; - fft.FFT_all_dim(propD1D1, propD1D1, FFT::backward); + propSun = G*buf; + fft.FFT_all_dim(propSun, propSun, FFT::backward); // -G*momD2*G*F*Src (momD2 = F*D2*Finv) buf = GFSrc; momD2(buf, fft); buf = -G*buf; - fft.FFT_all_dim(propD2, buf, FFT::backward); + fft.FFT_all_dim(propTad, buf, FFT::backward); // full charged scalar propagator - prop = (*prop0_) + q*propD1 + q*q*propD1D1 + q*q*propD2; + prop = (*prop0_) + q*propQ + q*q*propSun + q*q*propTad; // OUTPUT IF NECESSARY if (!par().output.empty()) @@ -200,29 +200,29 @@ void TChargedProp::execute(void) } write(writer, "prop_0", result); - // Write propagator D1 term - sliceSum(propD1, vecBuf, Tp); + // Write propagator O(q) term + sliceSum(propQ, vecBuf, Tp); for (unsigned int t = 0; t < vecBuf.size(); ++t) { result[t] = TensorRemove(vecBuf[t]); } - write(writer, "prop_D1", result); + write(writer, "prop_Q", result); - // Write propagator D1D1 term - sliceSum(propD1D1, vecBuf, Tp); + // Write propagator sunset term + sliceSum(propSun, vecBuf, Tp); for (unsigned int t = 0; t < vecBuf.size(); ++t) { result[t] = TensorRemove(vecBuf[t]); } - write(writer, "prop_D1D1", result); + write(writer, "prop_Sun", result); - // Write propagator D2 term - sliceSum(propD2, vecBuf, Tp); + // Write propagator tadpole term + sliceSum(propTad, vecBuf, Tp); for (unsigned int t = 0; t < vecBuf.size(); ++t) { result[t] = TensorRemove(vecBuf[t]); } - write(writer, "prop_D2", result); + write(writer, "prop_Tad", result); } } diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp index aeb92179..369fff30 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp @@ -46,7 +46,7 @@ private: void momD2(ScalarField &s, FFT &fft); private: std::string freeMomPropName_, GFSrcName_, prop0Name_, - propD1Name_, propD1D1Name_, propD2Name_; + propQName_, propSunName_, propTadName_; std::vector phaseName_; ScalarField *freeMomProp_, *GFSrc_, *prop0_; std::vector phase_; diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index c91b98ae..7a3b4f9e 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -1,3 +1,4 @@ +#include #include #include @@ -16,16 +17,19 @@ TScalarVP::TScalarVP(const std::string name) // dependencies/products /////////////////////////////////////////////////////// std::vector TScalarVP::getInput(void) { - std::vector in = {par().source, par().emField}; + propQName_ = par().scalarProp + "_Q"; + propSunName_ = par().scalarProp + "_Sun"; + propTadName_ = par().scalarProp + "_Tad"; + + std::vector in = {par().emField, propQName_, propSunName_, + propTadName_}; return in; } std::vector TScalarVP::getOutput(void) { - std::vector out = {getName()+"_propQ", - getName()+"_propSun", - getName()+"_propTad"}; + std::vector out; for (unsigned int mu = 0; mu < env().getNd(); ++mu) { @@ -44,12 +48,9 @@ std::vector TScalarVP::getOutput(void) // setup /////////////////////////////////////////////////////////////////////// void TScalarVP::setup(void) { - freeMomPropName_ = FREEMOMPROP(par().mass); - GFSrcName_ = "_" + getName() + "_DinvSrc"; - prop0Name_ = getName() + "_prop0"; - propQName_ = getName() + "_propQ"; - propSunName_ = getName() + "_propSun"; - propTadName_ = getName() + "_propTad"; + freeMomPropName_ = FREEMOMPROP(static_cast(env().getModule(par().scalarProp))->par().mass); + GFSrcName_ = "_" + par().scalarProp + "_DinvSrc"; + prop0Name_ = par().scalarProp + "_0"; phaseName_.clear(); muPropQName_.clear(); @@ -74,174 +75,38 @@ void TScalarVP::setup(void) freeVpTensorName_.push_back(freeVpTensorName_mu); } - if (!env().hasRegisteredObject(freeMomPropName_)) - { - env().registerLattice(freeMomPropName_); - } - if (!env().hasRegisteredObject(phaseName_[0])) - { - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - env().registerLattice(phaseName_[mu]); - } - } - if (!env().hasRegisteredObject(GFSrcName_)) - { - env().registerLattice(GFSrcName_); - } - if (!env().hasRegisteredObject(prop0Name_)) - { - env().registerLattice(prop0Name_); - } - env().registerLattice(propQName_); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { env().registerLattice(muPropQName_[mu]); - } - env().registerLattice(propSunName_); - env().registerLattice(propTadName_); - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { + for (unsigned int nu = 0; nu < env().getNd(); ++nu) { env().registerLattice(vpTensorName_[mu][nu]); env().registerLattice(freeVpTensorName_[mu][nu]); } - } + } } // execution /////////////////////////////////////////////////////////////////// void TScalarVP::execute(void) { - // CACHING ANALYTIC EXPRESSIONS - ScalarField &source = *env().getObject(par().source); + // Get objects cached by ChargedProp module Complex ci(0.0,1.0); FFT fft(env().getGrid()); - Real q = par().charge; + Real q = static_cast(env().getModule(par().scalarProp))->par().charge; - // cache momentum-space free scalar propagator - if (!env().hasCreatedObject(freeMomPropName_)) + freeMomProp_ = env().getObject(freeMomPropName_); + for (unsigned int mu = 0; mu < env().getNd(); ++mu) { - LOG(Message) << "Caching momentum space free scalar propagator" - << " (mass= " << par().mass << ")..." << std::endl; - freeMomProp_ = env().createLattice(freeMomPropName_); - SIMPL::MomentumSpacePropagator(*freeMomProp_, par().mass); - } - else - { - freeMomProp_ = env().getObject(freeMomPropName_); - } - // cache phases - if (!env().hasCreatedObject(phaseName_[0])) - { - std::vector &l = env().getGrid()->_fdimensions; - - LOG(Message) << "Caching shift phases..." << std::endl; - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - Real twoPiL = M_PI*2./l[mu]; - - phase_.push_back(env().createLattice(phaseName_[mu])); - LatticeCoordinate(*(phase_[mu]), mu); - *(phase_[mu]) = exp(ci*twoPiL*(*(phase_[mu]))); - } - } - else - { - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - phase_.push_back(env().getObject(phaseName_[mu])); - } - } - // cache G*F*src - if (!env().hasCreatedObject(GFSrcName_)) - { - GFSrc_ = env().createLattice(GFSrcName_); - fft.FFT_all_dim(*GFSrc_, source, FFT::forward); - *GFSrc_ = (*freeMomProp_)*(*GFSrc_); - } - else - { - GFSrc_ = env().getObject(GFSrcName_); - } - // cache position-space free scalar propagators - if (!env().hasCreatedObject(prop0Name_)) - { - prop0_ = env().createLattice(prop0Name_); - fft.FFT_all_dim(*prop0_, *GFSrc_, FFT::backward); - } - else - { - prop0_ = env().getObject(prop0Name_); + phase_.push_back(env().getObject(phaseName_[mu])); } + GFSrc_ = env().getObject(GFSrcName_); + prop0_ = env().getObject(prop0Name_); - // PROPAGATOR CALCULATION // Propagator from unshifted source - LOG(Message) << "Computing O(alpha) charged scalar propagator" - << " (mass= " << par().mass - << ", charge= " << q << ")..." - << std::endl; - ScalarField &propQ = *env().createLattice(propQName_); - ScalarField &propSun = *env().createLattice(propSunName_); - ScalarField &propTad = *env().createLattice(propTadName_); - chargedProp(propQ, propSun, propTad, *GFSrc_, fft); - // // OUTPUT IF NECESSARY - // if (!par().output.empty()) - // { - // ScalarField fullProp = (*prop0_) + q*propQ + q*q*propSun + q*q*propTad; - // std::string filename = par().output + "_prop_000." + - // std::to_string(env().getTrajectory()); - - // LOG(Message) << "Saving zero-momentum projection to '" - // << filename << "'..." << std::endl; - - // CorrWriter writer(filename); - // std::vector vecBuf; - // std::vector result; - - // write(writer, "charge", q); - - // // Write full propagator - // sliceSum(fullProp, vecBuf, Tp); - // result.resize(vecBuf.size()); - // for (unsigned int t = 0; t < vecBuf.size(); ++t) - // { - // result[t] = TensorRemove(vecBuf[t]); - // } - // write(writer, "prop", result); - - // // Write free propagator - // sliceSum(*prop0_, vecBuf, Tp); - // for (unsigned int t = 0; t < vecBuf.size(); ++t) - // { - // result[t] = TensorRemove(vecBuf[t]); - // } - // write(writer, "prop_0", result); - - // // Write propagator D1 term - // sliceSum(propD1, vecBuf, Tp); - // for (unsigned int t = 0; t < vecBuf.size(); ++t) - // { - // result[t] = TensorRemove(vecBuf[t]); - // } - // write(writer, "prop_q", result); - - // // Write propagator D1D1 term - // sliceSum(propD1D1, vecBuf, Tp); - // for (unsigned int t = 0; t < vecBuf.size(); ++t) - // { - // result[t] = TensorRemove(vecBuf[t]); - // } - // write(writer, "prop_sun", result); - - // // Write propagator D2 term - // sliceSum(propD2, vecBuf, Tp); - // for (unsigned int t = 0; t < vecBuf.size(); ++t) - // { - // result[t] = TensorRemove(vecBuf[t]); - // } - // write(writer, "prop_tad", result); - // } + ScalarField &propQ = *env().getObject(propQName_); + ScalarField &propSun = *env().getObject(propSunName_); + ScalarField &propTad = *env().getObject(propTadName_); // Propagators from shifted sources LOG(Message) << "Computing O(q) charged scalar propagators..." @@ -357,7 +222,7 @@ void TScalarVP::execute(void) std::vector result; write(writer, "charge", q); - write(writer, "mass", par().mass); + write(writer, "mass", static_cast(env().getModule(par().scalarProp))->par().mass); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { @@ -386,34 +251,6 @@ void TScalarVP::execute(void) } } -// Calculate O(q) and O(q^2) terms of position-space charged propagator -void TScalarVP::chargedProp(ScalarField &prop_q, ScalarField &prop_sun, - ScalarField &prop_tad, ScalarField &GFSrc, - FFT &fft) -{ - Complex ci(0.0,1.0); - ScalarField &G = *freeMomProp_; - ScalarField buf(env().getGrid()); - - // -G*momD1*G*F*Src (momD1 = F*D1*Finv) - buf = GFSrc; - momD1(buf, fft); - buf = G*buf; - prop_q = -buf; - fft.FFT_all_dim(prop_q, prop_q, FFT::backward); - - // G*momD1*G*momD1*G*F*Src - momD1(buf, fft); - prop_sun = G*buf; - fft.FFT_all_dim(prop_sun, prop_sun, FFT::backward); - - // -G*momD2*G*F*Src (momD2 = F*D2*Finv) - buf = GFSrc; - momD2(buf, fft); - prop_tad = -G*buf; - fft.FFT_all_dim(prop_tad, prop_tad, FFT::backward); -} - void TScalarVP::momD1(ScalarField &s, FFT &fft) { EmField &A = *env().getObject(par().emField); @@ -443,32 +280,3 @@ void TScalarVP::momD1(ScalarField &s, FFT &fft) s = result; } - -void TScalarVP::momD2(ScalarField &s, FFT &fft) -{ - EmField &A = *env().getObject(par().emField); - ScalarField buf(env().getGrid()), result(env().getGrid()), - Amu(env().getGrid()); - - result = zero; - - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - Amu = peekLorentz(A, mu); - buf = (*phase_[mu])*s; - fft.FFT_all_dim(buf, buf, FFT::backward); - buf = Amu*Amu*buf; - fft.FFT_all_dim(buf, buf, FFT::forward); - result = result + .5*buf; - } - fft.FFT_all_dim(s, s, FFT::backward); - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - Amu = peekLorentz(A, mu); - buf = Amu*Amu*s; - fft.FFT_all_dim(buf, buf, FFT::forward); - result = result + .5*adj(*phase_[mu])*buf; - } - - s = result; -} diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index fdbad6f6..81071ca0 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -17,9 +17,7 @@ class ScalarVPPar: Serializable public: GRID_SERIALIZABLE_CLASS_MEMBERS(ScalarVPPar, std::string, emField, - std::string, source, - double, mass, - double, charge, + std::string, scalarProp, std::string, output); }; @@ -42,11 +40,7 @@ public: // execution virtual void execute(void); private: - void chargedProp(ScalarField &prop_q, ScalarField &prop_sun, - ScalarField &prop_tad, ScalarField &GFSrc, - FFT &fft); void momD1(ScalarField &s, FFT &fft); - void momD2(ScalarField &s, FFT &fft); private: std::string freeMomPropName_, GFSrcName_, prop0Name_, propQName_, From 42f0afcbfa7c1ecbaf57380a8722f46d00d892d7 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 9 Jun 2017 18:08:40 +0100 Subject: [PATCH 020/267] QedFVol: Output all scalar VP diagrams separately --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 276 ++++++++++++++++----- 1 file changed, 214 insertions(+), 62 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 7a3b4f9e..19cdbb9a 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -126,7 +126,7 @@ void TScalarVP::execute(void) // CONTRACTIONS ScalarField prop1(env().getGrid()), prop2(env().getGrid()); EmField &A = *env().getObject(par().emField); - ScalarField Amu(env().getGrid()); + ScalarField Amu(env().getGrid()), tmp_vp(env().getGrid()); TComplex Anu0; std::vector coor0 = {0, 0, 0, 0}; std::vector > vpTensor, freeVpTensor; @@ -143,6 +143,33 @@ void TScalarVP::execute(void) freeVpTensor.push_back(freeVpTensor_mu); } + // Open output files if necessary + CorrWriter *writer, *writer0, *writerD; + std::vector vecBuf; + std::vector result; + if (!par().output.empty()) + { + std::string filename = par().output + "." + + std::to_string(env().getTrajectory()); + std::string filename0 = par().output + "_free." + + std::to_string(env().getTrajectory()); + std::string filenameD = par().output + "_diagrams." + + std::to_string(env().getTrajectory()); + + // LOG(Message) << "Saving zero-momentum projection to '" + // << filename << "'..." << std::endl; + writer = new CorrWriter(filename); + writer0 = new CorrWriter(filename0); + writerD = new CorrWriter(filenameD); + + write(*writer, "charge", q); + write(*writer, "mass", static_cast(env().getModule(par().scalarProp))->par().mass); + write(*writer0, "charge", 0.0); + write(*writer0, "mass", static_cast(env().getModule(par().scalarProp))->par().mass); + write(*writerD, "charge", q); + write(*writerD, "mass", static_cast(env().getModule(par().scalarProp))->par().mass); + } + for (unsigned int nu = 0; nu < env().getNd(); ++nu) { peekSite(Anu0, peekLorentz(A, nu), coor0); @@ -158,75 +185,207 @@ void TScalarVP::execute(void) prop2 = Cshift(*prop0_, nu, -1); freeVpTensor[mu][nu] = adj(prop2) * Cshift(prop1, mu, 1); freeVpTensor[mu][nu] -= Cshift(adj(prop2), mu, 1) * prop1; + freeVpTensor[mu][nu] = 2.0*real(freeVpTensor[mu][nu]); + + // Output if necessary + if (!par().output.empty()) + { + sliceSum(freeVpTensor[mu][nu], vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writer0, + "Pi_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } // "Exchange" terms prop1 += q*propQ; prop2 += q*muPropQ[nu]; - vpTensor[mu][nu] = adj(prop2) * (1.0 + ci*q*Amu) - * Cshift(prop1, mu, 1) * (1.0 + ci*q*Anu0); - vpTensor[mu][nu] -= Cshift(adj(prop2), mu, 1) * (1.0 - ci*q*Amu) - * prop1 * (1.0 + ci*q*Anu0); + tmp_vp = adj(prop2) * (1.0 + ci*q*Amu) + * Cshift(prop1, mu, 1) * (1.0 + ci*q*Anu0); + tmp_vp -= Cshift(adj(prop2), mu, 1) * (1.0 - ci*q*Amu) + * prop1 * (1.0 + ci*q*Anu0); + tmp_vp = 2.0*real(tmp_vp); + vpTensor[mu][nu] = tmp_vp*1.0; + + // Output if necessary + if (!par().output.empty()) + { + sliceSum(tmp_vp, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD, + "Pi_exchange_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } // Subtract O(alpha^2) term prop1 = q*propQ; prop2 = q*muPropQ[nu]; - vpTensor[mu][nu] -= adj(prop2) * ci*q*Amu - * Cshift(prop1, mu, 1) * ci*q*Anu0; - vpTensor[mu][nu] += Cshift(adj(prop2), mu, 1) * (-ci)*q*Amu - * prop1 * ci*q*Anu0; + tmp_vp = Cshift(adj(prop2), mu, 1) * (-ci)*q*Amu + * prop1 * ci*q*Anu0; + tmp_vp -= adj(prop2) * ci*q*Amu + * Cshift(prop1, mu, 1) * ci*q*Anu0; + tmp_vp = 2.0*real(tmp_vp); + vpTensor[mu][nu] += tmp_vp; - // Sunset+tadpole from source - prop1 = q*q*(propSun + propTad); + // Output if necessary + if (!par().output.empty()) + { + sliceSum(tmp_vp, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD, + "Pi_alpha2_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } + + // Sunset from unshifted source + prop1 = q*q*propSun; prop2 = Cshift(*prop0_, nu, -1); - vpTensor[mu][nu] += adj(prop2) * Cshift(prop1, mu, 1); - vpTensor[mu][nu] -= Cshift(adj(prop2), mu, 1) * prop1; + tmp_vp = adj(prop2) * Cshift(prop1, mu, 1); + tmp_vp -= Cshift(adj(prop2), mu, 1) * prop1; + tmp_vp = 2.0*real(tmp_vp); + vpTensor[mu][nu] += tmp_vp; - // Sunset+tadpole from shifted source + // Output if necessary + if (!par().output.empty()) + { + sliceSum(tmp_vp, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD, + "Pi_sunset_unshifted_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } + + // Sunset from shifted source prop1 = Cshift(prop1, nu, -1); - vpTensor[mu][nu] += Cshift(adj(*prop0_), mu, 1) * prop1; - vpTensor[mu][nu] -= adj(*prop0_) * Cshift(prop1, mu, 1); + tmp_vp = Cshift(adj(*prop0_), mu, 1) * prop1; + tmp_vp -= adj(*prop0_) * Cshift(prop1, mu, 1); + tmp_vp = 2.0*real(tmp_vp); + vpTensor[mu][nu] += tmp_vp; + + // Output if necessary + if (!par().output.empty()) + { + sliceSum(tmp_vp, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD, + "Pi_sunset_shifted_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } + + // Tadpole from unshifted source + prop1 = q*q*propTad; + prop2 = Cshift(*prop0_, nu, -1); + tmp_vp = adj(prop2) * Cshift(prop1, mu, 1); + tmp_vp -= Cshift(adj(prop2), mu, 1) * prop1; + tmp_vp = 2.0*real(tmp_vp); + vpTensor[mu][nu] += tmp_vp; + + // Output if necessary + if (!par().output.empty()) + { + sliceSum(tmp_vp, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD, + "Pi_tadpole_unshifted_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } + + // Tadpole from shifted source + prop1 = Cshift(prop1, nu, -1); + tmp_vp = Cshift(adj(*prop0_), mu, 1) * prop1; + tmp_vp -= adj(*prop0_) * Cshift(prop1, mu, 1); + tmp_vp = 2.0*real(tmp_vp); + vpTensor[mu][nu] += tmp_vp; + + // Output if necessary + if (!par().output.empty()) + { + sliceSum(tmp_vp, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD, + "Pi_tadpole_shifted_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } // Source tadpole prop1 = *prop0_; - vpTensor[mu][nu] += adj(prop2) - * Cshift(prop1, mu, 1) - * (-0.5)*q*q*Anu0*Anu0; - vpTensor[mu][nu] -= Cshift(adj(prop2), mu, 1) - * prop1 - * (-0.5)*q*q*Anu0*Anu0; + tmp_vp = adj(prop2) + * Cshift(prop1, mu, 1) + * (-0.5)*q*q*Anu0*Anu0; + tmp_vp -= Cshift(adj(prop2), mu, 1) + * prop1 + * (-0.5)*q*q*Anu0*Anu0; + tmp_vp = 2.0*real(tmp_vp); + vpTensor[mu][nu] += tmp_vp; + + // Output if necessary + if (!par().output.empty()) + { + sliceSum(tmp_vp, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD, + "Pi_sourcetadpole_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } // Sink tadpole - vpTensor[mu][nu] += adj(prop2) - * (-0.5)*q*q*Amu*Amu - * Cshift(prop1, mu, 1); - vpTensor[mu][nu] -= Cshift(adj(prop2), mu, 1) - * (-0.5)*q*q*Amu*Amu - * prop1; + tmp_vp = adj(prop2) + * (-0.5)*q*q*Amu*Amu + * Cshift(prop1, mu, 1); + tmp_vp -= Cshift(adj(prop2), mu, 1) + * (-0.5)*q*q*Amu*Amu + * prop1; + tmp_vp = 2.0*real(tmp_vp); + vpTensor[mu][nu] += tmp_vp; - freeVpTensor[mu][nu] = 2.0*real(freeVpTensor[mu][nu]); - vpTensor[mu][nu] = 2.0*real(vpTensor[mu][nu]); - } - } + // Output if necessary + if (!par().output.empty()) + { + sliceSum(tmp_vp, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD, + "Pi_sinktadpole_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } - // OUTPUT IF NECESSARY - if (!par().output.empty()) - { - std::string filename = par().output + "." + - std::to_string(env().getTrajectory()); - - LOG(Message) << "Saving zero-momentum projection to '" - << filename << "'..." << std::endl; - - CorrWriter writer(filename); - std::vector vecBuf; - std::vector result; - - write(writer, "charge", q); - write(writer, "mass", static_cast(env().getModule(par().scalarProp))->par().mass); - - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - for (unsigned int nu = 0; nu < env().getNd(); ++nu) + // Output if necessary + if (!par().output.empty()) { sliceSum(vpTensor[mu][nu], vecBuf, Tp); result.resize(vecBuf.size()); @@ -234,21 +393,14 @@ void TScalarVP::execute(void) { result[t] = TensorRemove(vecBuf[t]); } - write(writer, "Pi_"+std::to_string(mu)+"_"+std::to_string(nu), - result); - - sliceSum(freeVpTensor[mu][nu], vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, - "Pi_"+std::to_string(mu)+"_"+std::to_string(nu)+"_free", + write(*writer, "Pi_"+std::to_string(mu)+"_"+std::to_string(nu), result); } } } + delete writer; + delete writer0; + delete writerD; } void TScalarVP::momD1(ScalarField &s, FFT &fft) From 20e92a7009fe8c0e5523bd7c4b2d689f600cb5b4 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Mon, 12 Jun 2017 18:27:32 +0100 Subject: [PATCH 021/267] QedVFol: Allow output of scalar propagator and vacuum polarisation projected to arbitrary lattice momentum, not just zero-momentum. --- extras/Hadrons/Modules/MScalar/ChargedProp.cc | 121 ++++--- .../Hadrons/Modules/MScalar/ChargedProp.hpp | 3 +- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 318 ++++++++++++------ extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 3 +- 4 files changed, 302 insertions(+), 143 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index a9089056..285b237a 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -171,58 +171,91 @@ void TChargedProp::execute(void) // OUTPUT IF NECESSARY if (!par().output.empty()) { - std::string filename = par().output + "." + + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + std::vector mom = strToVec(par().outputMom[i_p]); + std::string filename = par().output + "_" + std::to_string(mom[0]) + + std::to_string(mom[1]) + + std::to_string(mom[2]) + + "." + std::to_string(env().getTrajectory()); - - LOG(Message) << "Saving zero-momentum projection to '" + + LOG(Message) << "Saving (" << par().outputMom[i_p] << ") momentum projection to '" << filename << "'..." << std::endl; - - CorrWriter writer(filename); - std::vector vecBuf; - std::vector result; - - write(writer, "charge", q); - // Write full propagator - sliceSum(prop, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop", result); + CorrWriter writer(filename); + std::vector vecBuf; + std::vector result; - // Write free propagator - sliceSum(*prop0_, vecBuf, Tp); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop_0", result); + write(writer, "charge", q); + write(writer, "mass", par().mass); - // Write propagator O(q) term - sliceSum(propQ, vecBuf, Tp); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop_Q", result); + // Write full propagator + buf = prop; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + buf = buf*pow(adj(*phase_[j]), mom[j]); + } + sliceSum(buf, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop", result); - // Write propagator sunset term - sliceSum(propSun, vecBuf, Tp); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop_Sun", result); + // Write free propagator + buf = *prop0_; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + buf = buf*pow(adj(*phase_[j]), mom[j]); + } + sliceSum(buf, vecBuf, Tp); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_0", result); - // Write propagator tadpole term - sliceSum(propTad, vecBuf, Tp); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); + // Write propagator O(q) term + buf = propQ; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + buf = buf*pow(adj(*phase_[j]), mom[j]); + } + sliceSum(buf, vecBuf, Tp); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_Q", result); + + // Write propagator sunset term + buf = propSun; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + buf = buf*pow(adj(*phase_[j]), mom[j]); + } + sliceSum(buf, vecBuf, Tp); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_Sun", result); + + // Write propagator tadpole term + buf = propTad; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + buf = buf*pow(adj(*phase_[j]), mom[j]); + } + sliceSum(buf, vecBuf, Tp); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_Tad", result); } - write(writer, "prop_Tad", result); } } diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp index 369fff30..92b89f9f 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp @@ -20,7 +20,8 @@ public: std::string, source, double, mass, double, charge, - std::string, output); + std::string, output, + std::vector, outputMom); }; class TChargedProp: public Module diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 19cdbb9a..e4f4e820 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -90,7 +90,7 @@ void TScalarVP::setup(void) // execution /////////////////////////////////////////////////////////////////// void TScalarVP::execute(void) { - // Get objects cached by ChargedProp module + // Get objects cached by ChargedProp module Complex ci(0.0,1.0); FFT fft(env().getGrid()); Real q = static_cast(env().getModule(par().scalarProp))->par().charge; @@ -144,32 +144,49 @@ void TScalarVP::execute(void) } // Open output files if necessary - CorrWriter *writer, *writer0, *writerD; - std::vector vecBuf; - std::vector result; + std::vector writer, writer0, writerD; if (!par().output.empty()) { - std::string filename = par().output + "." + - std::to_string(env().getTrajectory()); - std::string filename0 = par().output + "_free." + - std::to_string(env().getTrajectory()); - std::string filenameD = par().output + "_diagrams." + - std::to_string(env().getTrajectory()); - - // LOG(Message) << "Saving zero-momentum projection to '" - // << filename << "'..." << std::endl; - writer = new CorrWriter(filename); - writer0 = new CorrWriter(filename0); - writerD = new CorrWriter(filenameD); - - write(*writer, "charge", q); - write(*writer, "mass", static_cast(env().getModule(par().scalarProp))->par().mass); - write(*writer0, "charge", 0.0); - write(*writer0, "mass", static_cast(env().getModule(par().scalarProp))->par().mass); - write(*writerD, "charge", q); - write(*writerD, "mass", static_cast(env().getModule(par().scalarProp))->par().mass); - } + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + std::vector mom = strToVec(par().outputMom[i_p]); + std::string filename = par().output + "_" + std::to_string(mom[0]) + + std::to_string(mom[1]) + + std::to_string(mom[2]) + + "." + + std::to_string(env().getTrajectory()); + std::string filename0 = par().output + "_" + std::to_string(mom[0]) + + std::to_string(mom[1]) + + std::to_string(mom[2]) + + "_free." + + std::to_string(env().getTrajectory()); + std::string filenameD = par().output + "_" + std::to_string(mom[0]) + + std::to_string(mom[1]) + + std::to_string(mom[2]) + + "_diagrams." + + std::to_string(env().getTrajectory()); + + CorrWriter *writer_i = new CorrWriter(filename); + writer.push_back(writer_i); + CorrWriter *writer0_i = new CorrWriter(filename0); + writer0.push_back(writer0_i); + CorrWriter *writerD_i = new CorrWriter(filenameD); + writerD.push_back(writerD_i); + + write(*writer[i_p], "charge", q); + write(*writer[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); + write(*writer0[i_p], "charge", 0.0); + write(*writer0[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); + write(*writerD[i_p], "charge", q); + write(*writerD[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); + } + } + std::vector vecBuf; + std::vector result; + ScalarField vpPhase(env().getGrid()); + + // Do contractions for (unsigned int nu = 0; nu < env().getNd(); ++nu) { peekSite(Anu0, peekLorentz(A, nu), coor0); @@ -190,15 +207,25 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - sliceSum(freeVpTensor[mu][nu], vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) + std::vector mom; + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - result[t] = TensorRemove(vecBuf[t]); + mom = strToVec(par().outputMom[i_p]); + vpPhase = freeVpTensor[mu][nu]; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]); + } + sliceSum(vpPhase, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writer0[i_p], + "Pi_"+std::to_string(mu)+"_"+std::to_string(nu), + result); } - write(*writer0, - "Pi_"+std::to_string(mu)+"_"+std::to_string(nu), - result); } // "Exchange" terms @@ -209,20 +236,30 @@ void TScalarVP::execute(void) tmp_vp -= Cshift(adj(prop2), mu, 1) * (1.0 - ci*q*Amu) * prop1 * (1.0 + ci*q*Anu0); tmp_vp = 2.0*real(tmp_vp); - vpTensor[mu][nu] = tmp_vp*1.0; + vpTensor[mu][nu] = tmp_vp; // Output if necessary if (!par().output.empty()) { - sliceSum(tmp_vp, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) + std::vector mom; + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - result[t] = TensorRemove(vecBuf[t]); + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]); + } + sliceSum(vpPhase, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD[i_p], + "Pi_exchange_"+std::to_string(mu)+"_"+std::to_string(nu), + result); } - write(*writerD, - "Pi_exchange_"+std::to_string(mu)+"_"+std::to_string(nu), - result); } // Subtract O(alpha^2) term @@ -238,15 +275,25 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - sliceSum(tmp_vp, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) + std::vector mom; + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - result[t] = TensorRemove(vecBuf[t]); + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]); + } + sliceSum(vpPhase, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD[i_p], + "Pi_alpha2_"+std::to_string(mu)+"_"+std::to_string(nu), + result); } - write(*writerD, - "Pi_alpha2_"+std::to_string(mu)+"_"+std::to_string(nu), - result); } // Sunset from unshifted source @@ -260,15 +307,25 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - sliceSum(tmp_vp, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) + std::vector mom; + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - result[t] = TensorRemove(vecBuf[t]); + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]); + } + sliceSum(vpPhase, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD[i_p], + "Pi_sunset_unshifted_"+std::to_string(mu)+"_"+std::to_string(nu), + result); } - write(*writerD, - "Pi_sunset_unshifted_"+std::to_string(mu)+"_"+std::to_string(nu), - result); } // Sunset from shifted source @@ -281,15 +338,25 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - sliceSum(tmp_vp, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) + std::vector mom; + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - result[t] = TensorRemove(vecBuf[t]); + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]); + } + sliceSum(vpPhase, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD[i_p], + "Pi_sunset_shifted_"+std::to_string(mu)+"_"+std::to_string(nu), + result); } - write(*writerD, - "Pi_sunset_shifted_"+std::to_string(mu)+"_"+std::to_string(nu), - result); } // Tadpole from unshifted source @@ -303,15 +370,25 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - sliceSum(tmp_vp, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) + std::vector mom; + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - result[t] = TensorRemove(vecBuf[t]); + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]); + } + sliceSum(vpPhase, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD[i_p], + "Pi_tadpole_unshifted_"+std::to_string(mu)+"_"+std::to_string(nu), + result); } - write(*writerD, - "Pi_tadpole_unshifted_"+std::to_string(mu)+"_"+std::to_string(nu), - result); } // Tadpole from shifted source @@ -324,15 +401,25 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - sliceSum(tmp_vp, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) + std::vector mom; + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - result[t] = TensorRemove(vecBuf[t]); + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]); + } + sliceSum(vpPhase, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD[i_p], + "Pi_tadpole_shifted_"+std::to_string(mu)+"_"+std::to_string(nu), + result); } - write(*writerD, - "Pi_tadpole_shifted_"+std::to_string(mu)+"_"+std::to_string(nu), - result); } // Source tadpole @@ -349,15 +436,25 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - sliceSum(tmp_vp, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) + std::vector mom; + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - result[t] = TensorRemove(vecBuf[t]); + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]); + } + sliceSum(vpPhase, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD[i_p], + "Pi_sourcetadpole_"+std::to_string(mu)+"_"+std::to_string(nu), + result); } - write(*writerD, - "Pi_sourcetadpole_"+std::to_string(mu)+"_"+std::to_string(nu), - result); } // Sink tadpole @@ -373,34 +470,61 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - sliceSum(tmp_vp, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) + std::vector mom; + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - result[t] = TensorRemove(vecBuf[t]); + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]); + } + sliceSum(vpPhase, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writerD[i_p], + "Pi_sinktadpole_"+std::to_string(mu)+"_"+std::to_string(nu), + result); } - write(*writerD, - "Pi_sinktadpole_"+std::to_string(mu)+"_"+std::to_string(nu), - result); } // Output if necessary if (!par().output.empty()) { - sliceSum(vpTensor[mu][nu], vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) + std::vector mom; + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - result[t] = TensorRemove(vecBuf[t]); + mom = strToVec(par().outputMom[i_p]); + vpPhase = vpTensor[mu][nu]; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + vpPhase = vpPhase*pow(adj(*phase_[j]), mom[j]); + } + sliceSum(vpPhase, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(*writer[i_p], + "Pi_"+std::to_string(mu)+"_"+std::to_string(nu), + result); } - write(*writer, "Pi_"+std::to_string(mu)+"_"+std::to_string(nu), - result); } } } - delete writer; - delete writer0; - delete writerD; + if (!par().output.empty()) + { + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + delete writer[i_p]; + delete writer0[i_p]; + delete writerD[i_p]; + } + } } void TScalarVP::momD1(ScalarField &s, FFT &fft) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index 81071ca0..e4a6e825 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -18,7 +18,8 @@ public: GRID_SERIALIZABLE_CLASS_MEMBERS(ScalarVPPar, std::string, emField, std::string, scalarProp, - std::string, output); + std::string, output, + std::vector, outputMom); }; class TScalarVP: public Module From cc4afb978d0defaa8e81a5a555fd5ff11c8e8437 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Thu, 24 Aug 2017 17:31:44 +0100 Subject: [PATCH 022/267] Fix bug in non-zero momentum projection --- extras/Hadrons/Modules/MScalar/ChargedProp.cc | 25 ++++++++-- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 50 +++++++++++++++---- 2 files changed, 60 insertions(+), 15 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index 285b237a..1b901bf1 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -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) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index e4f4e820..4d923802 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -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()); From 91676d1dda82e0e4779dbe64f0605be3db102142 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 1 Sep 2017 15:48:30 +0100 Subject: [PATCH 023/267] =?UTF-8?q?Fix=20=E2=80=9CMAP=5FANONYMOUS=20undefi?= =?UTF-8?q?ned=E2=80=9D=20error=20on=20OSX.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/communicator/Communicator_base.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/communicator/Communicator_base.cc b/lib/communicator/Communicator_base.cc index 956de0d2..ba9de1cc 100644 --- a/lib/communicator/Communicator_base.cc +++ b/lib/communicator/Communicator_base.cc @@ -148,6 +148,11 @@ void *CartesianCommunicator::ShmBufferTranslate(int rank,void * local_p) { void CartesianCommunicator::ShmInitGeneric(void){ #if 1 +#if !defined(MAP_ANONYMOUS) + #define NO_MAP_ANONYMOUS + #define MAP_ANONYMOUS MAP_ANON +#endif + int mmap_flag = MAP_SHARED | MAP_ANONYMOUS; #ifdef MAP_HUGETLB if ( Hugepages ) mmap_flag |= MAP_HUGETLB; @@ -162,6 +167,11 @@ void CartesianCommunicator::ShmInitGeneric(void){ ShmCommBuf=(void *)&ShmBufStorageVector[0]; #endif bzero(ShmCommBuf,MAX_MPI_SHM_BYTES); + +#if defined(NO_MAP_ANONYMOUS) + #undef MAP_ANONYMOUS + #undef NO_MAP_ANONYMOUS +#endif } #endif From b99622d9fbdb1a74dec9c5424c214772cdd7845c Mon Sep 17 00:00:00 2001 From: James Harrison Date: Thu, 28 Sep 2017 13:34:33 -0400 Subject: [PATCH 024/267] QedFVol: fix problem with JSON wanting gcc 4.9 --- lib/json/json.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/json/json.hpp b/lib/json/json.hpp index e7c42920..9d589120 100644 --- a/lib/json/json.hpp +++ b/lib/json/json.hpp @@ -63,7 +63,7 @@ SOFTWARE. #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" #endif #elif defined(__GNUC__) - #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40900 + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40805 #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" #endif #endif From a80e43dbcf4b3106f75ee2c35ea56e6145fd4c9b Mon Sep 17 00:00:00 2001 From: James Harrison Date: Wed, 11 Oct 2017 16:44:51 -0400 Subject: [PATCH 025/267] Added infinite-volume photon in Photon.h (not checked yet) --- lib/qcd/action/gauge/Photon.h | 112 +++++++++++++++++++++++++++++----- 1 file changed, 96 insertions(+), 16 deletions(-) diff --git a/lib/qcd/action/gauge/Photon.h b/lib/qcd/action/gauge/Photon.h index 7e21a1de..c8e3109a 100644 --- a/lib/qcd/action/gauge/Photon.h +++ b/lib/qcd/action/gauge/Photon.h @@ -58,7 +58,7 @@ namespace QCD{ public: INHERIT_GIMPL_TYPES(Gimpl); GRID_SERIALIZABLE_ENUM(Gauge, undef, feynman, 1, coulomb, 2, landau, 3); - GRID_SERIALIZABLE_ENUM(ZmScheme, undef, qedL, 1, qedTL, 2); + GRID_SERIALIZABLE_ENUM(ZmScheme, undef, qedL, 1, qedTL, 2, qedInf, 3); public: Photon(Gauge gauge, ZmScheme zmScheme); virtual ~Photon(void) = default; @@ -69,6 +69,7 @@ namespace QCD{ void StochasticField(GaugeField &out, GridParallelRNG &rng, const GaugeLinkField &weight); private: + void infVolPropagator(GaugeLinkField &out); void invKHatSquared(GaugeLinkField &out); void zmSub(GaugeLinkField &out); private: @@ -95,6 +96,32 @@ namespace QCD{ MomentumSpacePropagator(prop_k,in_k); theFFT.FFT_all_dim(out,prop_k,FFT::backward); } + + template + void Photon::infVolPropagator(GaugeLinkField &out) + { + GridBase *grid = out._grid; + GaugeLinkField xmu(grid), one(grid); + const unsigned int nd = grid->_ndimension; + std::vector &l = grid->_fdimensions; + std::vector x0(nd,0); + TComplex Tone = Complex(1.0,0.0); + TComplex Tzero = Complex(0.0,0.0); + FFT fft(grid); + + one = Complex(1.0,0.0); + out = zero; + for(int mu = 0; mu < nd; mu++) + { + LatticeCoordinate(xmu,mu); + xmu = where(xmu < latt_size[mu]/2, xmu, xmu-latt_size[mu]/2); + out = out + 4*M_PI*M_PI*xmu*xmu; + } + pokeSite(Tone, out, x0); + out = one/out; + pokeSite(Tzero, out, x0); + fft.FFT_all_dim(out, out, FFT::forward); + } template void Photon::invKHatSquared(GaugeLinkField &out) @@ -163,13 +190,28 @@ namespace QCD{ void Photon::MomentumSpacePropagator(const GaugeField &in, GaugeField &out) { - GridBase *grid = out._grid; - LatticeComplex k2Inv(grid); + GridBase *grid = out._grid; + LatticeComplex momProp(grid); - invKHatSquared(k2Inv); - zmSub(k2Inv); + switch (zmScheme_) + { + case ZmScheme::qedTL: + case ZmScheme::qedL: + { + invKHatSquared(momProp); + zmSub(momProp); + break; + } + case ZmScheme::qedInf: + { + infVolPropagator(momProp); + break; + } + default: + break; + } - out = in*k2Inv; + out = in*momProp; } template @@ -179,14 +221,30 @@ namespace QCD{ const unsigned int nd = grid->_ndimension; std::vector latt_size = grid->_fdimensions; - Integer vol = 1; - for(int d = 0; d < nd; d++) + switch (zmScheme_) { - vol = vol * latt_size[d]; + case ZmScheme::qedTL: + case ZmScheme::qedL: + { + Integer vol = 1; + for(int d = 0; d < nd; d++) + { + vol = vol * latt_size[d]; + } + invKHatSquared(weight); + weight = sqrt(vol*real(weight)); + zmSub(weight); + break; + } + case ZmScheme::qedInf: + { + infVolPropagator(weight); + weight = sqrt(real(weight)); + break; + } + default: + break; } - invKHatSquared(weight); - weight = sqrt(vol*real(weight)); - zmSub(weight); } template @@ -209,12 +267,34 @@ namespace QCD{ GaugeField aTilde(grid); FFT fft(grid); - for(int mu = 0; mu < nd; mu++) + switch (zmScheme_) { - gaussian(rng, r); - r = weight*r; - pokeLorentz(aTilde, r, mu); + case ZmScheme::qedTL: + case ZmScheme::qedL: + { + for(int mu = 0; mu < nd; mu++) + { + gaussian(rng, r); + r = weight*r; + pokeLorentz(aTilde, r, mu); + } + break; + } + case ZmScheme::qedInf: + { + Complex shift(1., 1.); // This needs to be a GaugeLink element? + for(int mu = 0; mu < nd; mu++) + { + bernoulli(rng, r); + r = weight*(2.*r - shift); + pokeLorentz(aTilde, r, mu); + } + break; + } + default: + break; } + fft.FFT_all_dim(out, aTilde, FFT::backward); out = real(out); From 564738b1ff57810f46e9209840cc5daeb637157b Mon Sep 17 00:00:00 2001 From: James Harrison Date: Tue, 17 Oct 2017 14:03:57 +0100 Subject: [PATCH 026/267] Add module for unit EM field --- extras/Hadrons/Modules.hpp | 1 + extras/Hadrons/Modules/MGauge/UnitEm.cc | 68 ++++++++++++++++++++++++ extras/Hadrons/Modules/MGauge/UnitEm.hpp | 67 +++++++++++++++++++++++ extras/Hadrons/modules.inc | 2 + lib/qcd/action/gauge/Photon.h | 18 +++++++ 5 files changed, 156 insertions(+) create mode 100644 extras/Hadrons/Modules/MGauge/UnitEm.cc create mode 100644 extras/Hadrons/Modules/MGauge/UnitEm.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 4e1e62f7..78bb213d 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.cc b/extras/Hadrons/Modules/MGauge/UnitEm.cc new file mode 100644 index 00000000..906be4cc --- /dev/null +++ b/extras/Hadrons/Modules/MGauge/UnitEm.cc @@ -0,0 +1,68 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MGauge/StochEm.cc + +Copyright (C) 2015 +Copyright (C) 2016 + + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MGauge; + +/****************************************************************************** +* TStochEm implementation * +******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +TUnitEm::TUnitEm(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +std::vector TUnitEm::getInput(void) +{ + return std::vector(); +} + +std::vector TUnitEm::getOutput(void) +{ + std::vector out = {getName()}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +void TUnitEm::setup(void) +{ + env().registerLattice(getName()); +} + +// execution /////////////////////////////////////////////////////////////////// +void TUnitEm::execute(void) +{ + PhotonR photon(); + EmField &a = *env().createLattice(getName()); + LOG(Message) << "Generating unit EM potential..." << std::endl; + photon.UnitField(a); +} diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.hpp b/extras/Hadrons/Modules/MGauge/UnitEm.hpp new file mode 100644 index 00000000..ea910929 --- /dev/null +++ b/extras/Hadrons/Modules/MGauge/UnitEm.hpp @@ -0,0 +1,67 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MGauge/StochEm.hpp + +Copyright (C) 2015 +Copyright (C) 2016 + + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ +#ifndef Hadrons_MGauge_UnitEm_hpp_ +#define Hadrons_MGauge_UnitEm_hpp_ + +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * StochEm * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MGauge) + +class TUnitEm: public Module +{ +public: + typedef PhotonR::GaugeField EmField; + typedef PhotonR::GaugeLinkField EmComp; +public: + // constructor + TUnitEm(const std::string name); + // destructor + virtual ~TUnitEm(void) = default; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER_NS(UnitEm, TUnitEm, MGauge); + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MGauge_UnitEm_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 29d63f58..b3c65de0 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -6,6 +6,7 @@ modules_cc =\ Modules/MGauge/Random.cc \ Modules/MGauge/StochEm.cc \ Modules/MGauge/Unit.cc \ + Modules/MGauge/UnitEm.cc \ Modules/MScalar/ChargedProp.cc \ Modules/MScalar/FreeProp.cc \ Modules/MScalar/ScalarVP.cc @@ -26,6 +27,7 @@ modules_hpp =\ Modules/MGauge/Random.hpp \ Modules/MGauge/StochEm.hpp \ Modules/MGauge/Unit.hpp \ + Modules/MGauge/UnitEm.hpp \ Modules/MLoop/NoiseLoop.hpp \ Modules/MScalar/ChargedProp.hpp \ Modules/MScalar/FreeProp.hpp \ diff --git a/lib/qcd/action/gauge/Photon.h b/lib/qcd/action/gauge/Photon.h index 7e21a1de..1429c2ba 100644 --- a/lib/qcd/action/gauge/Photon.h +++ b/lib/qcd/action/gauge/Photon.h @@ -68,6 +68,7 @@ namespace QCD{ void StochasticField(GaugeField &out, GridParallelRNG &rng); void StochasticField(GaugeField &out, GridParallelRNG &rng, const GaugeLinkField &weight); + void UnitField(GaugeField &out); private: void invKHatSquared(GaugeLinkField &out); void zmSub(GaugeLinkField &out); @@ -219,6 +220,23 @@ namespace QCD{ out = real(out); } + + template + void Photon::UnitField(GaugeField &out) + { + auto *grid = dynamic_cast(out._grid); + const unsigned int nd = grid->_ndimension; + GaugeLinkField r(grid); + + r = Complex(1.0,0.0); + + for(int mu = 0; mu < nd; mu++) + { + pokeLorentz(out, r, mu); + } + + out = real(out); + } // template // void Photon::FeynmanGaugeMomentumSpacePropagator_L(GaugeField &out, // const GaugeField &in) From 98b1439ff9d1f2ebbe5def84d9e792cc12748672 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 20 Oct 2017 16:24:09 +0100 Subject: [PATCH 027/267] QedFVol: pass arbitrary input values to photon constructor in UnitEm --- extras/Hadrons/Modules/MGauge/UnitEm.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.cc b/extras/Hadrons/Modules/MGauge/UnitEm.cc index 906be4cc..f33dfed3 100644 --- a/extras/Hadrons/Modules/MGauge/UnitEm.cc +++ b/extras/Hadrons/Modules/MGauge/UnitEm.cc @@ -61,7 +61,7 @@ void TUnitEm::setup(void) // execution /////////////////////////////////////////////////////////////////// void TUnitEm::execute(void) { - PhotonR photon(); + PhotonR photon(0, 0); // Just chose arbitrary input values here EmField &a = *env().createLattice(getName()); LOG(Message) << "Generating unit EM potential..." << std::endl; photon.UnitField(a); From c4339397956396c0deeba1ab9638a350183a734e Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 20 Oct 2017 16:27:58 +0100 Subject: [PATCH 028/267] QedFVol: Temporarily remove incomplete implementation of infinite-volume photon --- lib/qcd/action/gauge/Photon.h | 112 +++++----------------------------- 1 file changed, 16 insertions(+), 96 deletions(-) diff --git a/lib/qcd/action/gauge/Photon.h b/lib/qcd/action/gauge/Photon.h index 3744d56a..1429c2ba 100644 --- a/lib/qcd/action/gauge/Photon.h +++ b/lib/qcd/action/gauge/Photon.h @@ -58,7 +58,7 @@ namespace QCD{ public: INHERIT_GIMPL_TYPES(Gimpl); GRID_SERIALIZABLE_ENUM(Gauge, undef, feynman, 1, coulomb, 2, landau, 3); - GRID_SERIALIZABLE_ENUM(ZmScheme, undef, qedL, 1, qedTL, 2, qedInf, 3); + GRID_SERIALIZABLE_ENUM(ZmScheme, undef, qedL, 1, qedTL, 2); public: Photon(Gauge gauge, ZmScheme zmScheme); virtual ~Photon(void) = default; @@ -70,7 +70,6 @@ namespace QCD{ const GaugeLinkField &weight); void UnitField(GaugeField &out); private: - void infVolPropagator(GaugeLinkField &out); void invKHatSquared(GaugeLinkField &out); void zmSub(GaugeLinkField &out); private: @@ -97,32 +96,6 @@ namespace QCD{ MomentumSpacePropagator(prop_k,in_k); theFFT.FFT_all_dim(out,prop_k,FFT::backward); } - - template - void Photon::infVolPropagator(GaugeLinkField &out) - { - GridBase *grid = out._grid; - GaugeLinkField xmu(grid), one(grid); - const unsigned int nd = grid->_ndimension; - std::vector &l = grid->_fdimensions; - std::vector x0(nd,0); - TComplex Tone = Complex(1.0,0.0); - TComplex Tzero = Complex(0.0,0.0); - FFT fft(grid); - - one = Complex(1.0,0.0); - out = zero; - for(int mu = 0; mu < nd; mu++) - { - LatticeCoordinate(xmu,mu); - xmu = where(xmu < latt_size[mu]/2, xmu, xmu-latt_size[mu]/2); - out = out + 4*M_PI*M_PI*xmu*xmu; - } - pokeSite(Tone, out, x0); - out = one/out; - pokeSite(Tzero, out, x0); - fft.FFT_all_dim(out, out, FFT::forward); - } template void Photon::invKHatSquared(GaugeLinkField &out) @@ -191,28 +164,13 @@ namespace QCD{ void Photon::MomentumSpacePropagator(const GaugeField &in, GaugeField &out) { - GridBase *grid = out._grid; - LatticeComplex momProp(grid); + GridBase *grid = out._grid; + LatticeComplex k2Inv(grid); - switch (zmScheme_) - { - case ZmScheme::qedTL: - case ZmScheme::qedL: - { - invKHatSquared(momProp); - zmSub(momProp); - break; - } - case ZmScheme::qedInf: - { - infVolPropagator(momProp); - break; - } - default: - break; - } + invKHatSquared(k2Inv); + zmSub(k2Inv); - out = in*momProp; + out = in*k2Inv; } template @@ -222,30 +180,14 @@ namespace QCD{ const unsigned int nd = grid->_ndimension; std::vector latt_size = grid->_fdimensions; - switch (zmScheme_) + Integer vol = 1; + for(int d = 0; d < nd; d++) { - case ZmScheme::qedTL: - case ZmScheme::qedL: - { - Integer vol = 1; - for(int d = 0; d < nd; d++) - { - vol = vol * latt_size[d]; - } - invKHatSquared(weight); - weight = sqrt(vol*real(weight)); - zmSub(weight); - break; - } - case ZmScheme::qedInf: - { - infVolPropagator(weight); - weight = sqrt(real(weight)); - break; - } - default: - break; + vol = vol * latt_size[d]; } + invKHatSquared(weight); + weight = sqrt(vol*real(weight)); + zmSub(weight); } template @@ -268,34 +210,12 @@ namespace QCD{ GaugeField aTilde(grid); FFT fft(grid); - switch (zmScheme_) + for(int mu = 0; mu < nd; mu++) { - case ZmScheme::qedTL: - case ZmScheme::qedL: - { - for(int mu = 0; mu < nd; mu++) - { - gaussian(rng, r); - r = weight*r; - pokeLorentz(aTilde, r, mu); - } - break; - } - case ZmScheme::qedInf: - { - Complex shift(1., 1.); // This needs to be a GaugeLink element? - for(int mu = 0; mu < nd; mu++) - { - bernoulli(rng, r); - r = weight*(2.*r - shift); - pokeLorentz(aTilde, r, mu); - } - break; - } - default: - break; + gaussian(rng, r); + r = weight*r; + pokeLorentz(aTilde, r, mu); } - fft.FFT_all_dim(out, aTilde, FFT::backward); out = real(out); From b07a354a3394bc30b3c237580d58418a9494717d Mon Sep 17 00:00:00 2001 From: James Harrison Date: Mon, 30 Oct 2017 14:20:44 +0000 Subject: [PATCH 029/267] QedFVol: output scalar propagator before FFT in spatial directions. --- extras/Hadrons/Modules/MScalar/ChargedProp.cc | 204 +++++++++++------- 1 file changed, 126 insertions(+), 78 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index 1b901bf1..6ffda844 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -151,23 +151,25 @@ void TChargedProp::execute(void) buf = GFSrc; momD1(buf, fft); buf = -G*buf; - fft.FFT_all_dim(propQ, buf, FFT::backward); + fft.FFT_dim(propQ, buf, env().getNd()-1, FFT::backward); // G*momD1*G*momD1*G*F*Src (here buf = G*momD1*G*F*Src) buf = -buf; momD1(buf, fft); propSun = G*buf; - fft.FFT_all_dim(propSun, propSun, FFT::backward); + fft.FFT_dim(propSun, propSun, env().getNd()-1, FFT::backward); // -G*momD2*G*F*Src (momD2 = F*D2*Finv) buf = GFSrc; momD2(buf, fft); buf = -G*buf; - fft.FFT_all_dim(propTad, buf, FFT::backward); - - // full charged scalar propagator - prop = (*prop0_) + q*propQ + q*q*propSun + q*q*propTad; + fft.FFT_dim(propTad, buf, env().getNd()-1, FFT::backward); + // full charged scalar propagator + buf = GFSrc; + fft.FFT_dim(buf, buf, env().getNd()-1, FFT::backward); + prop = buf + q*propQ + q*q*propSun + q*q*propTad; + // OUTPUT IF NECESSARY if (!par().output.empty()) { @@ -184,94 +186,140 @@ void TChargedProp::execute(void) << filename << "'..." << std::endl; CorrWriter writer(filename); - std::vector vecBuf; - std::vector result; + // std::vector vecBuf; + std::vector result, result0, resultQ, resultSun, resultTad; + result.resize(env().getGrid()->_ldimensions[env().getNd()-1]); + result0.resize(env().getGrid()->_ldimensions[env().getNd()-1]); + resultQ.resize(env().getGrid()->_ldimensions[env().getNd()-1]); + resultSun.resize(env().getGrid()->_ldimensions[env().getNd()-1]); + resultTad.resize(env().getGrid()->_ldimensions[env().getNd()-1]); write(writer, "charge", q); write(writer, "mass", par().mass); - // Write full propagator - buf = prop; + TComplex site; + std::vector whichmom; + whichmom.resize(env().getNd()); + for (unsigned int j = 0; j < env().getNd()-1; ++j) { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - buf = buf*adj(*phase_[j]); - } + whichmom[j] = mom[j]; } - sliceSum(buf, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) + + for (unsigned int t = 0; t < env().getGrid()->_ldimensions[env().getNd()-1]; ++t) { - result[t] = TensorRemove(vecBuf[t]); + whichmom[env().getNd()-1] = t; + // Write full propagator + peekSite(site, prop, whichmom); + result[t]=TensorRemove(site); + // Write free propagator + peekSite(site, buf, whichmom); + result0[t]=TensorRemove(site); + // Write propagator O(q) term + peekSite(site, propQ, whichmom); + resultQ[t]=TensorRemove(site); + // Write propagator sunset term + peekSite(site, propSun, whichmom); + resultSun[t]=TensorRemove(site); + // Write propagator tadpole term + peekSite(site, propTad, whichmom); + resultTad[t]=TensorRemove(site); } write(writer, "prop", result); + write(writer, "prop_0", result0); + write(writer, "prop_Q", resultQ); + write(writer, "prop_Sun", resultSun); + write(writer, "prop_Tad", resultTad); - // Write free propagator - buf = *prop0_; - for (unsigned int j = 0; j < env().getNd()-1; ++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) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop_0", result); + // // Write full propagator + // buf = prop; + // for (unsigned int j = 0; j < env().getNd()-1; ++j) + // { + // for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + // { + // buf = buf*adj(*phase_[j]); + // } + // } + // sliceSum(buf, vecBuf, Tp); + // result.resize(vecBuf.size()); + // for (unsigned int t = 0; t < vecBuf.size(); ++t) + // { + // result[t] = TensorRemove(vecBuf[t]); + // } + // write(writer, "prop", result); - // Write propagator O(q) term - buf = propQ; - for (unsigned int j = 0; j < env().getNd()-1; ++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) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop_Q", result); + // // Write free propagator + // buf = *prop0_; + // for (unsigned int j = 0; j < env().getNd()-1; ++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) + // { + // result[t] = TensorRemove(vecBuf[t]); + // } + // write(writer, "prop_0", result); - // Write propagator sunset term - buf = propSun; - for (unsigned int j = 0; j < env().getNd()-1; ++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) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop_Sun", result); + // // Write propagator O(q) term + // buf = propQ; + // for (unsigned int j = 0; j < env().getNd()-1; ++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) + // { + // result[t] = TensorRemove(vecBuf[t]); + // } + // write(writer, "prop_Q", result); - // Write propagator tadpole term - buf = propTad; - for (unsigned int j = 0; j < env().getNd()-1; ++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) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop_Tad", result); + // // Write propagator sunset term + // buf = propSun; + // for (unsigned int j = 0; j < env().getNd()-1; ++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) + // { + // result[t] = TensorRemove(vecBuf[t]); + // } + // write(writer, "prop_Sun", result); + + // // Write propagator tadpole term + // buf = propTad; + // for (unsigned int j = 0; j < env().getNd()-1; ++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) + // { + // result[t] = TensorRemove(vecBuf[t]); + // } + // write(writer, "prop_Tad", result); } } + + std::vector mask(env().getNd(),1); + mask[env().getNd()-1] = 0; + fft.FFT_dim_mask(prop, prop, mask, FFT::backward); + fft.FFT_dim_mask(propQ, propQ, mask, FFT::backward); + fft.FFT_dim_mask(propSun, propSun, mask, FFT::backward); + fft.FFT_dim_mask(propTad, propTad, mask, FFT::backward); } void TChargedProp::momD1(ScalarField &s, FFT &fft) From 0d4e31ca58ff63903b8832838ab7eba3b0f6a4a6 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Mon, 30 Oct 2017 15:46:50 +0000 Subject: [PATCH 030/267] QedFVol: Calculate phase factors for momentum projections once per configuration only. --- extras/Hadrons/Modules/MScalar/ChargedProp.cc | 81 ----------- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 131 ++++-------------- 2 files changed, 28 insertions(+), 184 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index 6ffda844..3aaf3d5e 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -230,87 +230,6 @@ void TChargedProp::execute(void) write(writer, "prop_Q", resultQ); write(writer, "prop_Sun", resultSun); write(writer, "prop_Tad", resultTad); - - // // Write full propagator - // buf = prop; - // for (unsigned int j = 0; j < env().getNd()-1; ++j) - // { - // for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - // { - // buf = buf*adj(*phase_[j]); - // } - // } - // sliceSum(buf, vecBuf, Tp); - // result.resize(vecBuf.size()); - // for (unsigned int t = 0; t < vecBuf.size(); ++t) - // { - // result[t] = TensorRemove(vecBuf[t]); - // } - // write(writer, "prop", result); - - // // Write free propagator - // buf = *prop0_; - // for (unsigned int j = 0; j < env().getNd()-1; ++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) - // { - // result[t] = TensorRemove(vecBuf[t]); - // } - // write(writer, "prop_0", result); - - // // Write propagator O(q) term - // buf = propQ; - // for (unsigned int j = 0; j < env().getNd()-1; ++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) - // { - // result[t] = TensorRemove(vecBuf[t]); - // } - // write(writer, "prop_Q", result); - - // // Write propagator sunset term - // buf = propSun; - // for (unsigned int j = 0; j < env().getNd()-1; ++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) - // { - // result[t] = TensorRemove(vecBuf[t]); - // } - // write(writer, "prop_Sun", result); - - // // Write propagator tadpole term - // buf = propTad; - // for (unsigned int j = 0; j < env().getNd()-1; ++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) - // { - // result[t] = TensorRemove(vecBuf[t]); - // } - // write(writer, "prop_Tad", result); } } diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 4d923802..297a823d 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -144,13 +144,19 @@ void TScalarVP::execute(void) } // Open output files if necessary + std::vector vecBuf; + std::vector result; + ScalarField vpPhase(env().getGrid()); std::vector writer, writer0, writerD; + std::vector momphases; if (!par().output.empty()) { + LOG(Message) << "Preparing output files..." << std::endl; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { std::vector mom = strToVec(par().outputMom[i_p]); + // Open output files std::string filename = par().output + "_" + std::to_string(mom[0]) + std::to_string(mom[1]) + std::to_string(mom[2]) @@ -180,11 +186,20 @@ void TScalarVP::execute(void) write(*writer0[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); write(*writerD[i_p], "charge", q); write(*writerD[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); + + // Calculate phase factors + vpPhase = Complex(1.0,0.0); + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + { + vpPhase = vpPhase*(*phase_[j]); + } + } + vpPhase = adj(vpPhase); + momphases.push_back(vpPhase); } } - std::vector vecBuf; - std::vector result; - ScalarField vpPhase(env().getGrid()); // Do contractions for (unsigned int nu = 0; nu < env().getNd(); ++nu) @@ -207,18 +222,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = freeVpTensor[mu][nu]; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = freeVpTensor[mu][nu]*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -244,18 +250,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -281,18 +278,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -316,18 +304,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -350,18 +329,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -385,18 +355,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -419,18 +380,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -457,18 +409,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -494,18 +437,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -521,18 +455,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = vpTensor[mu][nu]; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = vpTensor[mu][nu]*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) From e0f13495245cfed766448a0c72d522813c426ce2 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 3 Nov 2017 09:22:41 +0000 Subject: [PATCH 031/267] QedFVol: Undo optimisation of charged propagator --- extras/Hadrons/Modules/MScalar/ChargedProp.cc | 131 +++++++++++------- 1 file changed, 82 insertions(+), 49 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index 3aaf3d5e..1b901bf1 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -151,25 +151,23 @@ void TChargedProp::execute(void) buf = GFSrc; momD1(buf, fft); buf = -G*buf; - fft.FFT_dim(propQ, buf, env().getNd()-1, FFT::backward); + fft.FFT_all_dim(propQ, buf, FFT::backward); // G*momD1*G*momD1*G*F*Src (here buf = G*momD1*G*F*Src) buf = -buf; momD1(buf, fft); propSun = G*buf; - fft.FFT_dim(propSun, propSun, env().getNd()-1, FFT::backward); + fft.FFT_all_dim(propSun, propSun, FFT::backward); // -G*momD2*G*F*Src (momD2 = F*D2*Finv) buf = GFSrc; momD2(buf, fft); buf = -G*buf; - fft.FFT_dim(propTad, buf, env().getNd()-1, FFT::backward); - - // full charged scalar propagator - buf = GFSrc; - fft.FFT_dim(buf, buf, env().getNd()-1, FFT::backward); - prop = buf + q*propQ + q*q*propSun + q*q*propTad; + fft.FFT_all_dim(propTad, buf, FFT::backward); + // full charged scalar propagator + prop = (*prop0_) + q*propQ + q*q*propSun + q*q*propTad; + // OUTPUT IF NECESSARY if (!par().output.empty()) { @@ -186,59 +184,94 @@ void TChargedProp::execute(void) << filename << "'..." << std::endl; CorrWriter writer(filename); - // std::vector vecBuf; - std::vector result, result0, resultQ, resultSun, resultTad; - result.resize(env().getGrid()->_ldimensions[env().getNd()-1]); - result0.resize(env().getGrid()->_ldimensions[env().getNd()-1]); - resultQ.resize(env().getGrid()->_ldimensions[env().getNd()-1]); - resultSun.resize(env().getGrid()->_ldimensions[env().getNd()-1]); - resultTad.resize(env().getGrid()->_ldimensions[env().getNd()-1]); + std::vector vecBuf; + std::vector result; write(writer, "charge", q); write(writer, "mass", par().mass); - TComplex site; - std::vector whichmom; - whichmom.resize(env().getNd()); - + // Write full propagator + buf = prop; for (unsigned int j = 0; j < env().getNd()-1; ++j) { - whichmom[j] = mom[j]; + for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + { + buf = buf*adj(*phase_[j]); + } } - - for (unsigned int t = 0; t < env().getGrid()->_ldimensions[env().getNd()-1]; ++t) + sliceSum(buf, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) { - whichmom[env().getNd()-1] = t; - // Write full propagator - peekSite(site, prop, whichmom); - result[t]=TensorRemove(site); - // Write free propagator - peekSite(site, buf, whichmom); - result0[t]=TensorRemove(site); - // Write propagator O(q) term - peekSite(site, propQ, whichmom); - resultQ[t]=TensorRemove(site); - // Write propagator sunset term - peekSite(site, propSun, whichmom); - resultSun[t]=TensorRemove(site); - // Write propagator tadpole term - peekSite(site, propTad, whichmom); - resultTad[t]=TensorRemove(site); + result[t] = TensorRemove(vecBuf[t]); } write(writer, "prop", result); - write(writer, "prop_0", result0); - write(writer, "prop_Q", resultQ); - write(writer, "prop_Sun", resultSun); - write(writer, "prop_Tad", resultTad); + + // Write free propagator + buf = *prop0_; + for (unsigned int j = 0; j < env().getNd()-1; ++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) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_0", result); + + // Write propagator O(q) term + buf = propQ; + for (unsigned int j = 0; j < env().getNd()-1; ++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) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_Q", result); + + // Write propagator sunset term + buf = propSun; + for (unsigned int j = 0; j < env().getNd()-1; ++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) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_Sun", result); + + // Write propagator tadpole term + buf = propTad; + for (unsigned int j = 0; j < env().getNd()-1; ++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) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_Tad", result); } } - - std::vector mask(env().getNd(),1); - mask[env().getNd()-1] = 0; - fft.FFT_dim_mask(prop, prop, mask, FFT::backward); - fft.FFT_dim_mask(propQ, propQ, mask, FFT::backward); - fft.FFT_dim_mask(propSun, propSun, mask, FFT::backward); - fft.FFT_dim_mask(propTad, propTad, mask, FFT::backward); } void TChargedProp::momD1(ScalarField &s, FFT &fft) From c645d33db5a6bab5e3255c0dd2287e7f26bf849c Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 3 Nov 2017 10:59:26 +0000 Subject: [PATCH 032/267] QedFVol: Redo optimisation of charged propagator, and fix I/O bug --- extras/Hadrons/Modules/MScalar/ChargedProp.cc | 131 +++++++----------- 1 file changed, 49 insertions(+), 82 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index 1b901bf1..cb7e6c79 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -151,23 +151,25 @@ void TChargedProp::execute(void) buf = GFSrc; momD1(buf, fft); buf = -G*buf; - fft.FFT_all_dim(propQ, buf, FFT::backward); + fft.FFT_dim(propQ, buf, env().getNd()-1, FFT::backward); // G*momD1*G*momD1*G*F*Src (here buf = G*momD1*G*F*Src) buf = -buf; momD1(buf, fft); propSun = G*buf; - fft.FFT_all_dim(propSun, propSun, FFT::backward); + fft.FFT_dim(propSun, propSun, env().getNd()-1, FFT::backward); // -G*momD2*G*F*Src (momD2 = F*D2*Finv) buf = GFSrc; momD2(buf, fft); buf = -G*buf; - fft.FFT_all_dim(propTad, buf, FFT::backward); - - // full charged scalar propagator - prop = (*prop0_) + q*propQ + q*q*propSun + q*q*propTad; + fft.FFT_dim(propTad, buf, env().getNd()-1, FFT::backward); + // full charged scalar propagator + buf = GFSrc; + fft.FFT_dim(buf, buf, env().getNd()-1, FFT::backward); + prop = buf + q*propQ + q*q*propSun + q*q*propTad; + // OUTPUT IF NECESSARY if (!par().output.empty()) { @@ -184,94 +186,59 @@ void TChargedProp::execute(void) << filename << "'..." << std::endl; CorrWriter writer(filename); - std::vector vecBuf; - std::vector result; + // std::vector vecBuf; + std::vector result, result0, resultQ, resultSun, resultTad; + result.resize(env().getGrid()->_fdimensions[env().getNd()-1]); + result0.resize(env().getGrid()->_fdimensions[env().getNd()-1]); + resultQ.resize(env().getGrid()->_fdimensions[env().getNd()-1]); + resultSun.resize(env().getGrid()->_fdimensions[env().getNd()-1]); + resultTad.resize(env().getGrid()->_fdimensions[env().getNd()-1]); write(writer, "charge", q); write(writer, "mass", par().mass); - // Write full propagator - buf = prop; + TComplex site; + std::vector whichmom; + whichmom.resize(env().getNd()); + for (unsigned int j = 0; j < env().getNd()-1; ++j) { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - buf = buf*adj(*phase_[j]); - } + whichmom[j] = mom[j]; } - sliceSum(buf, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) + + for (unsigned int t = 0; t < env().getGrid()->_fdimensions[env().getNd()-1]; ++t) { - result[t] = TensorRemove(vecBuf[t]); + whichmom[env().getNd()-1] = t; + // Write full propagator + peekSite(site, prop, whichmom); + result[t]=TensorRemove(site); + // Write free propagator + peekSite(site, buf, whichmom); + result0[t]=TensorRemove(site); + // Write propagator O(q) term + peekSite(site, propQ, whichmom); + resultQ[t]=TensorRemove(site); + // Write propagator sunset term + peekSite(site, propSun, whichmom); + resultSun[t]=TensorRemove(site); + // Write propagator tadpole term + peekSite(site, propTad, whichmom); + resultTad[t]=TensorRemove(site); } write(writer, "prop", result); - - // Write free propagator - buf = *prop0_; - for (unsigned int j = 0; j < env().getNd()-1; ++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) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop_0", result); - - // Write propagator O(q) term - buf = propQ; - for (unsigned int j = 0; j < env().getNd()-1; ++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) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop_Q", result); - - // Write propagator sunset term - buf = propSun; - for (unsigned int j = 0; j < env().getNd()-1; ++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) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop_Sun", result); - - // Write propagator tadpole term - buf = propTad; - for (unsigned int j = 0; j < env().getNd()-1; ++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) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop_Tad", result); + write(writer, "prop_0", result0); + write(writer, "prop_Q", resultQ); + write(writer, "prop_Sun", resultSun); + write(writer, "prop_Tad", resultTad); } } + + std::vector mask(env().getNd(),1); + mask[env().getNd()-1] = 0; + fft.FFT_dim_mask(prop, prop, mask, FFT::backward); + fft.FFT_dim_mask(propQ, propQ, mask, FFT::backward); + fft.FFT_dim_mask(propSun, propSun, mask, FFT::backward); + fft.FFT_dim_mask(propTad, propTad, mask, FFT::backward); } void TChargedProp::momD1(ScalarField &s, FFT &fft) From 9f2a57e334876d347e8c7d5c8a4eb83228bed9ae Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 3 Nov 2017 13:10:11 +0000 Subject: [PATCH 033/267] QedFVol: Undo optimisation of scalar VP, to reduce memory requirements --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 131 ++++++++++++++++----- 1 file changed, 103 insertions(+), 28 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 297a823d..4d923802 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -144,19 +144,13 @@ void TScalarVP::execute(void) } // Open output files if necessary - std::vector vecBuf; - std::vector result; - ScalarField vpPhase(env().getGrid()); std::vector writer, writer0, writerD; - std::vector momphases; if (!par().output.empty()) { - LOG(Message) << "Preparing output files..." << std::endl; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { std::vector mom = strToVec(par().outputMom[i_p]); - // Open output files std::string filename = par().output + "_" + std::to_string(mom[0]) + std::to_string(mom[1]) + std::to_string(mom[2]) @@ -186,20 +180,11 @@ void TScalarVP::execute(void) write(*writer0[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); write(*writerD[i_p], "charge", q); write(*writerD[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); - - // Calculate phase factors - vpPhase = Complex(1.0,0.0); - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*(*phase_[j]); - } - } - vpPhase = adj(vpPhase); - momphases.push_back(vpPhase); } } + std::vector vecBuf; + std::vector result; + ScalarField vpPhase(env().getGrid()); // Do contractions for (unsigned int nu = 0; nu < env().getNd(); ++nu) @@ -222,9 +207,18 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { + std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - vpPhase = freeVpTensor[mu][nu]*momphases[i_p]; + mom = strToVec(par().outputMom[i_p]); + vpPhase = freeVpTensor[mu][nu]; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + { + vpPhase = vpPhase*adj(*phase_[j]); + } + } sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -250,9 +244,18 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { + std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - vpPhase = tmp_vp*momphases[i_p]; + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + { + vpPhase = vpPhase*adj(*phase_[j]); + } + } sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -278,9 +281,18 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { + std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - vpPhase = tmp_vp*momphases[i_p]; + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + { + vpPhase = vpPhase*adj(*phase_[j]); + } + } sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -304,9 +316,18 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { + std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - vpPhase = tmp_vp*momphases[i_p]; + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + { + vpPhase = vpPhase*adj(*phase_[j]); + } + } sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -329,9 +350,18 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { + std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - vpPhase = tmp_vp*momphases[i_p]; + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + { + vpPhase = vpPhase*adj(*phase_[j]); + } + } sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -355,9 +385,18 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { + std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - vpPhase = tmp_vp*momphases[i_p]; + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + { + vpPhase = vpPhase*adj(*phase_[j]); + } + } sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -380,9 +419,18 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { + std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - vpPhase = tmp_vp*momphases[i_p]; + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + { + vpPhase = vpPhase*adj(*phase_[j]); + } + } sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -409,9 +457,18 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { + std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - vpPhase = tmp_vp*momphases[i_p]; + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + { + vpPhase = vpPhase*adj(*phase_[j]); + } + } sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -437,9 +494,18 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { + std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - vpPhase = tmp_vp*momphases[i_p]; + mom = strToVec(par().outputMom[i_p]); + vpPhase = tmp_vp; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + { + vpPhase = vpPhase*adj(*phase_[j]); + } + } sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -455,9 +521,18 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { + std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - vpPhase = vpTensor[mu][nu]*momphases[i_p]; + mom = strToVec(par().outputMom[i_p]); + vpPhase = vpTensor[mu][nu]; + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + { + vpPhase = vpPhase*adj(*phase_[j]); + } + } sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) From 95af55128e1c85bdc3028b8012c5f169fa2ef379 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 3 Nov 2017 18:46:16 +0000 Subject: [PATCH 034/267] =?UTF-8?q?QedFVol:=20Redo=20optimisation=20of=20s?= =?UTF-8?q?calar=20VP=20(extra=20memory=20requirements=20were=20not=20the?= =?UTF-8?q?=20problem),=20and=20undo=20optimisation=20of=20charged=20propa?= =?UTF-8?q?gator=20(which=20seemed=20to=20be=20causing=20HDF5=20errors,=20?= =?UTF-8?q?although=20I=20don=E2=80=99t=20know=20why).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extras/Hadrons/Modules/MScalar/ChargedProp.cc | 131 +++++++++++------- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 131 ++++-------------- 2 files changed, 110 insertions(+), 152 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index cb7e6c79..1b901bf1 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -151,25 +151,23 @@ void TChargedProp::execute(void) buf = GFSrc; momD1(buf, fft); buf = -G*buf; - fft.FFT_dim(propQ, buf, env().getNd()-1, FFT::backward); + fft.FFT_all_dim(propQ, buf, FFT::backward); // G*momD1*G*momD1*G*F*Src (here buf = G*momD1*G*F*Src) buf = -buf; momD1(buf, fft); propSun = G*buf; - fft.FFT_dim(propSun, propSun, env().getNd()-1, FFT::backward); + fft.FFT_all_dim(propSun, propSun, FFT::backward); // -G*momD2*G*F*Src (momD2 = F*D2*Finv) buf = GFSrc; momD2(buf, fft); buf = -G*buf; - fft.FFT_dim(propTad, buf, env().getNd()-1, FFT::backward); - - // full charged scalar propagator - buf = GFSrc; - fft.FFT_dim(buf, buf, env().getNd()-1, FFT::backward); - prop = buf + q*propQ + q*q*propSun + q*q*propTad; + fft.FFT_all_dim(propTad, buf, FFT::backward); + // full charged scalar propagator + prop = (*prop0_) + q*propQ + q*q*propSun + q*q*propTad; + // OUTPUT IF NECESSARY if (!par().output.empty()) { @@ -186,59 +184,94 @@ void TChargedProp::execute(void) << filename << "'..." << std::endl; CorrWriter writer(filename); - // std::vector vecBuf; - std::vector result, result0, resultQ, resultSun, resultTad; - result.resize(env().getGrid()->_fdimensions[env().getNd()-1]); - result0.resize(env().getGrid()->_fdimensions[env().getNd()-1]); - resultQ.resize(env().getGrid()->_fdimensions[env().getNd()-1]); - resultSun.resize(env().getGrid()->_fdimensions[env().getNd()-1]); - resultTad.resize(env().getGrid()->_fdimensions[env().getNd()-1]); + std::vector vecBuf; + std::vector result; write(writer, "charge", q); write(writer, "mass", par().mass); - TComplex site; - std::vector whichmom; - whichmom.resize(env().getNd()); - + // Write full propagator + buf = prop; for (unsigned int j = 0; j < env().getNd()-1; ++j) { - whichmom[j] = mom[j]; + for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + { + buf = buf*adj(*phase_[j]); + } } - - for (unsigned int t = 0; t < env().getGrid()->_fdimensions[env().getNd()-1]; ++t) + sliceSum(buf, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) { - whichmom[env().getNd()-1] = t; - // Write full propagator - peekSite(site, prop, whichmom); - result[t]=TensorRemove(site); - // Write free propagator - peekSite(site, buf, whichmom); - result0[t]=TensorRemove(site); - // Write propagator O(q) term - peekSite(site, propQ, whichmom); - resultQ[t]=TensorRemove(site); - // Write propagator sunset term - peekSite(site, propSun, whichmom); - resultSun[t]=TensorRemove(site); - // Write propagator tadpole term - peekSite(site, propTad, whichmom); - resultTad[t]=TensorRemove(site); + result[t] = TensorRemove(vecBuf[t]); } write(writer, "prop", result); - write(writer, "prop_0", result0); - write(writer, "prop_Q", resultQ); - write(writer, "prop_Sun", resultSun); - write(writer, "prop_Tad", resultTad); + + // Write free propagator + buf = *prop0_; + for (unsigned int j = 0; j < env().getNd()-1; ++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) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_0", result); + + // Write propagator O(q) term + buf = propQ; + for (unsigned int j = 0; j < env().getNd()-1; ++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) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_Q", result); + + // Write propagator sunset term + buf = propSun; + for (unsigned int j = 0; j < env().getNd()-1; ++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) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_Sun", result); + + // Write propagator tadpole term + buf = propTad; + for (unsigned int j = 0; j < env().getNd()-1; ++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) + { + result[t] = TensorRemove(vecBuf[t]); + } + write(writer, "prop_Tad", result); } } - - std::vector mask(env().getNd(),1); - mask[env().getNd()-1] = 0; - fft.FFT_dim_mask(prop, prop, mask, FFT::backward); - fft.FFT_dim_mask(propQ, propQ, mask, FFT::backward); - fft.FFT_dim_mask(propSun, propSun, mask, FFT::backward); - fft.FFT_dim_mask(propTad, propTad, mask, FFT::backward); } void TChargedProp::momD1(ScalarField &s, FFT &fft) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 4d923802..297a823d 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -144,13 +144,19 @@ void TScalarVP::execute(void) } // Open output files if necessary + std::vector vecBuf; + std::vector result; + ScalarField vpPhase(env().getGrid()); std::vector writer, writer0, writerD; + std::vector momphases; if (!par().output.empty()) { + LOG(Message) << "Preparing output files..." << std::endl; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { std::vector mom = strToVec(par().outputMom[i_p]); + // Open output files std::string filename = par().output + "_" + std::to_string(mom[0]) + std::to_string(mom[1]) + std::to_string(mom[2]) @@ -180,11 +186,20 @@ void TScalarVP::execute(void) write(*writer0[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); write(*writerD[i_p], "charge", q); write(*writerD[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); + + // Calculate phase factors + vpPhase = Complex(1.0,0.0); + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + { + vpPhase = vpPhase*(*phase_[j]); + } + } + vpPhase = adj(vpPhase); + momphases.push_back(vpPhase); } } - std::vector vecBuf; - std::vector result; - ScalarField vpPhase(env().getGrid()); // Do contractions for (unsigned int nu = 0; nu < env().getNd(); ++nu) @@ -207,18 +222,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = freeVpTensor[mu][nu]; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = freeVpTensor[mu][nu]*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -244,18 +250,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -281,18 +278,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -316,18 +304,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -350,18 +329,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -385,18 +355,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -419,18 +380,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -457,18 +409,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -494,18 +437,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = tmp_vp; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -521,18 +455,9 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - std::vector mom; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - mom = strToVec(par().outputMom[i_p]); - vpPhase = vpTensor[mu][nu]; - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - vpPhase = vpPhase*adj(*phase_[j]); - } - } + vpPhase = vpTensor[mu][nu]*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) From 840814c7769b33c2a6af28e68d85f5517866289c Mon Sep 17 00:00:00 2001 From: James Harrison Date: Mon, 6 Nov 2017 16:34:55 +0000 Subject: [PATCH 035/267] QedFVol: Patch to fix MPI communicators error --- lib/communicator/Communicator_mpi.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/communicator/Communicator_mpi.cc b/lib/communicator/Communicator_mpi.cc index ef612f98..e123aaa4 100644 --- a/lib/communicator/Communicator_mpi.cc +++ b/lib/communicator/Communicator_mpi.cc @@ -55,9 +55,9 @@ void CartesianCommunicator::Init(int *argc, char ***argv) { CartesianCommunicator::~CartesianCommunicator() { - int MPI_is_finalised; - MPI_Finalized(&MPI_is_finalised); - if (communicator && MPI_is_finalised) + // int MPI_is_finalised; + // MPI_Finalized(&MPI_is_finalised); + if (communicator && !MPI::Is_finalized()) MPI_Comm_free(&communicator); } From 0c668bf46aabe20421227d59fe347c1828fa8932 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Tue, 7 Nov 2017 14:46:39 +0000 Subject: [PATCH 036/267] QedFVol: Write to output files from one process only. --- extras/Hadrons/Modules/MScalar/ChargedProp.cc | 136 +++++++----------- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 126 ++++++++++------ 2 files changed, 134 insertions(+), 128 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index 1b901bf1..33c3d4dd 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -151,23 +151,25 @@ void TChargedProp::execute(void) buf = GFSrc; momD1(buf, fft); buf = -G*buf; - fft.FFT_all_dim(propQ, buf, FFT::backward); + fft.FFT_dim(propQ, buf, env().getNd()-1, FFT::backward); // G*momD1*G*momD1*G*F*Src (here buf = G*momD1*G*F*Src) buf = -buf; momD1(buf, fft); propSun = G*buf; - fft.FFT_all_dim(propSun, propSun, FFT::backward); + fft.FFT_dim(propSun, propSun, env().getNd()-1, FFT::backward); // -G*momD2*G*F*Src (momD2 = F*D2*Finv) buf = GFSrc; momD2(buf, fft); buf = -G*buf; - fft.FFT_all_dim(propTad, buf, FFT::backward); - - // full charged scalar propagator - prop = (*prop0_) + q*propQ + q*q*propSun + q*q*propTad; + fft.FFT_dim(propTad, buf, env().getNd()-1, FFT::backward); + // full charged scalar propagator + buf = GFSrc; + fft.FFT_dim(buf, buf, env().getNd()-1, FFT::backward); + prop = buf + q*propQ + q*q*propSun + q*q*propTad; + // OUTPUT IF NECESSARY if (!par().output.empty()) { @@ -183,95 +185,63 @@ void TChargedProp::execute(void) LOG(Message) << "Saving (" << par().outputMom[i_p] << ") momentum projection to '" << filename << "'..." << std::endl; - CorrWriter writer(filename); - std::vector vecBuf; - std::vector result; + // std::vector vecBuf; + std::vector result, result0, resultQ, resultSun, resultTad; + result.resize(env().getGrid()->_fdimensions[env().getNd()-1]); + result0.resize(env().getGrid()->_fdimensions[env().getNd()-1]); + resultQ.resize(env().getGrid()->_fdimensions[env().getNd()-1]); + resultSun.resize(env().getGrid()->_fdimensions[env().getNd()-1]); + resultTad.resize(env().getGrid()->_fdimensions[env().getNd()-1]); - write(writer, "charge", q); - write(writer, "mass", par().mass); + TComplex site; + std::vector whichmom; + whichmom.resize(env().getNd()); - // Write full propagator - buf = prop; for (unsigned int j = 0; j < env().getNd()-1; ++j) { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - buf = buf*adj(*phase_[j]); - } + whichmom[j] = mom[j]; } - sliceSum(buf, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop", result); - // Write free propagator - buf = *prop0_; - for (unsigned int j = 0; j < env().getNd()-1; ++j) + for (unsigned int t = 0; t < env().getGrid()->_fdimensions[env().getNd()-1]; ++t) { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - buf = buf*adj(*phase_[j]); - } + whichmom[env().getNd()-1] = t; + // Write full propagator + peekSite(site, prop, whichmom); + result[t]=TensorRemove(site); + // Write free propagator + peekSite(site, buf, whichmom); + result0[t]=TensorRemove(site); + // Write propagator O(q) term + peekSite(site, propQ, whichmom); + resultQ[t]=TensorRemove(site); + // Write propagator sunset term + peekSite(site, propSun, whichmom); + resultSun[t]=TensorRemove(site); + // Write propagator tadpole term + peekSite(site, propTad, whichmom); + resultTad[t]=TensorRemove(site); } - sliceSum(buf, vecBuf, Tp); - for (unsigned int t = 0; t < vecBuf.size(); ++t) + + if (env().getGrid()->IsBoss()) { - result[t] = TensorRemove(vecBuf[t]); + CorrWriter writer(filename); + write(writer, "charge", q); + write(writer, "mass", par().mass); + write(writer, "prop", result); + write(writer, "prop_0", result0); + write(writer, "prop_Q", resultQ); + write(writer, "prop_Sun", resultSun); + write(writer, "prop_Tad", resultTad); } - write(writer, "prop_0", result); - - // Write propagator O(q) term - buf = propQ; - for (unsigned int j = 0; j < env().getNd()-1; ++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) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop_Q", result); - - // Write propagator sunset term - buf = propSun; - for (unsigned int j = 0; j < env().getNd()-1; ++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) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop_Sun", result); - - // Write propagator tadpole term - buf = propTad; - for (unsigned int j = 0; j < env().getNd()-1; ++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) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(writer, "prop_Tad", result); } } + + std::vector mask(env().getNd(),1); + mask[env().getNd()-1] = 0; + fft.FFT_dim_mask(prop, prop, mask, FFT::backward); + fft.FFT_dim_mask(propQ, propQ, mask, FFT::backward); + fft.FFT_dim_mask(propSun, propSun, mask, FFT::backward); + fft.FFT_dim_mask(propTad, propTad, mask, FFT::backward); } void TChargedProp::momD1(ScalarField &s, FFT &fft) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 297a823d..b8cdb7e3 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -173,19 +173,22 @@ void TScalarVP::execute(void) + "_diagrams." + std::to_string(env().getTrajectory()); - CorrWriter *writer_i = new CorrWriter(filename); - writer.push_back(writer_i); - CorrWriter *writer0_i = new CorrWriter(filename0); - writer0.push_back(writer0_i); - CorrWriter *writerD_i = new CorrWriter(filenameD); - writerD.push_back(writerD_i); + if (env().getGrid()->IsBoss()) + { + CorrWriter *writer_i = new CorrWriter(filename); + writer.push_back(writer_i); + CorrWriter *writer0_i = new CorrWriter(filename0); + writer0.push_back(writer0_i); + CorrWriter *writerD_i = new CorrWriter(filenameD); + writerD.push_back(writerD_i); - write(*writer[i_p], "charge", q); - write(*writer[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); - write(*writer0[i_p], "charge", 0.0); - write(*writer0[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); - write(*writerD[i_p], "charge", q); - write(*writerD[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); + write(*writer[i_p], "charge", q); + write(*writer[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); + write(*writer0[i_p], "charge", 0.0); + write(*writer0[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); + write(*writerD[i_p], "charge", q); + write(*writerD[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); + } // Calculate phase factors vpPhase = Complex(1.0,0.0); @@ -231,9 +234,12 @@ void TScalarVP::execute(void) { result[t] = TensorRemove(vecBuf[t]); } - write(*writer0[i_p], - "Pi_"+std::to_string(mu)+"_"+std::to_string(nu), - result); + if (env().getGrid()->IsBoss()) + { + write(*writer0[i_p], + "Pi_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } } } @@ -259,9 +265,12 @@ void TScalarVP::execute(void) { result[t] = TensorRemove(vecBuf[t]); } - write(*writerD[i_p], - "Pi_exchange_"+std::to_string(mu)+"_"+std::to_string(nu), - result); + if (env().getGrid()->IsBoss()) + { + write(*writerD[i_p], + "Pi_exchange_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } } } @@ -287,9 +296,12 @@ void TScalarVP::execute(void) { result[t] = TensorRemove(vecBuf[t]); } - write(*writerD[i_p], - "Pi_alpha2_"+std::to_string(mu)+"_"+std::to_string(nu), - result); + if (env().getGrid()->IsBoss()) + { + write(*writerD[i_p], + "Pi_alpha2_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } } } @@ -313,9 +325,12 @@ void TScalarVP::execute(void) { result[t] = TensorRemove(vecBuf[t]); } - write(*writerD[i_p], - "Pi_sunset_unshifted_"+std::to_string(mu)+"_"+std::to_string(nu), - result); + if (env().getGrid()->IsBoss()) + { + write(*writerD[i_p], + "Pi_sunset_unshifted_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } } } @@ -338,9 +353,12 @@ void TScalarVP::execute(void) { result[t] = TensorRemove(vecBuf[t]); } - write(*writerD[i_p], - "Pi_sunset_shifted_"+std::to_string(mu)+"_"+std::to_string(nu), - result); + if (env().getGrid()->IsBoss()) + { + write(*writerD[i_p], + "Pi_sunset_shifted_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } } } @@ -364,9 +382,12 @@ void TScalarVP::execute(void) { result[t] = TensorRemove(vecBuf[t]); } - write(*writerD[i_p], - "Pi_tadpole_unshifted_"+std::to_string(mu)+"_"+std::to_string(nu), - result); + if (env().getGrid()->IsBoss()) + { + write(*writerD[i_p], + "Pi_tadpole_unshifted_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } } } @@ -389,9 +410,12 @@ void TScalarVP::execute(void) { result[t] = TensorRemove(vecBuf[t]); } - write(*writerD[i_p], - "Pi_tadpole_shifted_"+std::to_string(mu)+"_"+std::to_string(nu), - result); + if (env().getGrid()->IsBoss()) + { + write(*writerD[i_p], + "Pi_tadpole_shifted_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } } } @@ -418,9 +442,12 @@ void TScalarVP::execute(void) { result[t] = TensorRemove(vecBuf[t]); } - write(*writerD[i_p], - "Pi_sourcetadpole_"+std::to_string(mu)+"_"+std::to_string(nu), - result); + if (env().getGrid()->IsBoss()) + { + write(*writerD[i_p], + "Pi_sourcetadpole_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } } } @@ -446,9 +473,12 @@ void TScalarVP::execute(void) { result[t] = TensorRemove(vecBuf[t]); } - write(*writerD[i_p], - "Pi_sinktadpole_"+std::to_string(mu)+"_"+std::to_string(nu), - result); + if (env().getGrid()->IsBoss()) + { + write(*writerD[i_p], + "Pi_sinktadpole_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } } } @@ -464,9 +494,12 @@ void TScalarVP::execute(void) { result[t] = TensorRemove(vecBuf[t]); } - write(*writer[i_p], - "Pi_"+std::to_string(mu)+"_"+std::to_string(nu), - result); + if (env().getGrid()->IsBoss()) + { + write(*writer[i_p], + "Pi_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } } } } @@ -475,9 +508,12 @@ void TScalarVP::execute(void) { for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - delete writer[i_p]; - delete writer0[i_p]; - delete writerD[i_p]; + if (env().getGrid()->IsBoss()) + { + delete writer[i_p]; + delete writer0[i_p]; + delete writerD[i_p]; + } } } } From 6bc136b1d0b9e5308ce531f67273a525b0549990 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Wed, 13 Dec 2017 17:31:01 +0000 Subject: [PATCH 037/267] Add module for calculating diagrams required for HVP counter-terms --- extras/Hadrons/Modules.hpp | 1 + .../Hadrons/Modules/MScalar/VPCounterTerms.cc | 257 ++++++++++++++++++ .../Modules/MScalar/VPCounterTerms.hpp | 55 ++++ extras/Hadrons/modules.inc | 4 +- 4 files changed, 316 insertions(+), 1 deletion(-) create mode 100644 extras/Hadrons/Modules/MScalar/VPCounterTerms.cc create mode 100644 extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 78bb213d..1aa4b74d 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc b/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc new file mode 100644 index 00000000..17dd1abe --- /dev/null +++ b/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc @@ -0,0 +1,257 @@ +#include +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MScalar; + +/****************************************************************************** +* TVPCounterTerms implementation * +******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +TVPCounterTerms::TVPCounterTerms(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +std::vector TVPCounterTerms::getInput(void) +{ + std::vector in = {par().source}; + + return in; +} + +std::vector TVPCounterTerms::getOutput(void) +{ + std::vector out; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +void TVPCounterTerms::setup(void) +{ + freeMomPropName_ = FREEMOMPROP(par().mass); + phaseName_.clear(); + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + phaseName_.push_back("_shiftphase_" + std::to_string(mu)); + } + GFSrcName_ = "_" + getName() + "_DinvSrc"; + phatsqName_ = "_" + getName() + "_pHatSquared"; + prop0Name_ = getName() + "_freeProp"; + twoscalarName_ = getName() + "_2scalarProp"; + twoscalarVertexName_ = getName() + "_2scalarProp_withvertex"; + psquaredName_ = getName() + "_psquaredProp"; + env().registerLattice(freeMomPropName_); + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + env().registerLattice(phaseName_[mu]); + } + env().registerLattice(phatsqName_); + env().registerLattice(GFSrcName_); + env().registerLattice(prop0Name_); + env().registerLattice(twoscalarName_); + env().registerLattice(twoscalarVertexName_); + env().registerLattice(psquaredName_); +} + +// execution /////////////////////////////////////////////////////////////////// +void TVPCounterTerms::execute(void) +{ + ScalarField &source = *env().getObject(par().source); + Complex ci(0.0,1.0); + FFT fft(env().getGrid()); + ScalarField buf(env().getGrid()), tmp_vp(env().getGrid()); + + // Momentum-space free scalar propagator + ScalarField &G = *env().createLattice(freeMomPropName_); + SIMPL::MomentumSpacePropagator(G, par().mass); + + // Phases and hat{p}^2 + ScalarField &phatsq = *env().createLattice(phatsqName_); + std::vector &l = env().getGrid()->_fdimensions; + + LOG(Message) << "Calculating shift phases..." << std::endl; + phatsq = zero; + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + Real twoPiL = M_PI*2./l[mu]; + + phase_.push_back(env().createLattice(phaseName_[mu])); + LatticeCoordinate(buf, mu); + *(phase_[mu]) = exp(ci*twoPiL*buf); + buf = 2.*sin(.5*twoPiL*buf); + phatsq = phatsq + buf*buf; + } + + // G*F*src + ScalarField &GFSrc = *env().createLattice(GFSrcName_); + fft.FFT_all_dim(GFSrc, source, FFT::forward); + GFSrc = G*GFSrc; + + // Position-space free scalar propagator + ScalarField &prop0 = *env().createLattice(prop0Name_); + prop0 = GFSrc; + fft.FFT_all_dim(prop0, prop0, FFT::backward); + + // Propagators for counter-terms + ScalarField &twoscalarProp = *env().createLattice(twoscalarName_); + ScalarField &twoscalarVertexProp = *env().createLattice(twoscalarVertexName_); + ScalarField &psquaredProp = *env().createLattice(psquaredName_); + + twoscalarProp = G*GFSrc; + fft.FFT_all_dim(twoscalarProp, twoscalarProp, FFT::backward); + + twoscalarVertexProp = zero; + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + buf = GFSrc; + twoscalarVertexProp = twoscalarVertexProp + .5*((*phase_[mu]) + adj(*phase_[mu]))*buf; + } + twoscalarVertexProp = G*twoscalarVertexProp; + fft.FFT_all_dim(twoscalarVertexProp, twoscalarVertexProp, FFT::backward); + + psquaredProp = G*phatsq*GFSrc; + fft.FFT_all_dim(psquaredProp, psquaredProp, FFT::backward); + + // Open output files if necessary + std::vector vecBuf; + std::vector result; + ScalarField vpPhase(env().getGrid()); + std::vector writer; + std::vector momphases; + if (!par().output.empty()) + { + LOG(Message) << "Preparing output files..." << std::endl; + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + std::vector mom = strToVec(par().outputMom[i_p]); + + // Open output files + std::string filename = par().output + "_" + std::to_string(mom[0]) + + std::to_string(mom[1]) + + std::to_string(mom[2]) + + "." + + std::to_string(env().getTrajectory()); + + if (env().getGrid()->IsBoss()) + { + CorrWriter *writer_i = new CorrWriter(filename); + writer.push_back(writer_i); + + write(*writer[i_p], "mass", par().mass); + } + + // Calculate phase factors + vpPhase = Complex(1.0,0.0); + for (unsigned int j = 0; j < env().getNd()-1; ++j) + { + for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) + { + vpPhase = vpPhase*(*phase_[j]); + } + } + vpPhase = adj(vpPhase); + momphases.push_back(vpPhase); + } + } + + // Contractions + for (unsigned int nu = 0; nu < env().getNd(); ++nu) + { + buf = adj(Cshift(prop0, nu, -1)); + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + // Three-scalar loop (no vertex) + tmp_vp = buf * Cshift(twoscalarProp, mu, 1); + tmp_vp -= Cshift(buf, mu, 1) * twoscalarProp; + tmp_vp = 2.0*real(tmp_vp); + + // Output if necessary + if (!par().output.empty()) + { + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + vpPhase = tmp_vp*momphases[i_p]; + sliceSum(vpPhase, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + if (env().getGrid()->IsBoss()) + { + write(*writer[i_p], + "NoVertex_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } + } + } + + // Three-scalar loop (tadpole vertex) + tmp_vp = buf * Cshift(twoscalarVertexProp, mu, 1); + tmp_vp -= Cshift(buf, mu, 1) * twoscalarVertexProp; + tmp_vp = 2.0*real(tmp_vp); + + // Output if necessary + if (!par().output.empty()) + { + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + vpPhase = tmp_vp*momphases[i_p]; + sliceSum(vpPhase, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + if (env().getGrid()->IsBoss()) + { + write(*writer[i_p], + "TadVertex_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } + } + } + + // Three-scalar loop (hat{p}^2 insertion) + tmp_vp = buf * Cshift(psquaredProp, mu, 1); + tmp_vp -= Cshift(buf, mu, 1) * psquaredProp; + tmp_vp = 2.0*real(tmp_vp); + + // Output if necessary + if (!par().output.empty()) + { + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + vpPhase = tmp_vp*momphases[i_p]; + sliceSum(vpPhase, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + if (env().getGrid()->IsBoss()) + { + write(*writer[i_p], + "pSquaredInsertion_"+std::to_string(mu)+"_"+std::to_string(nu), + result); + } + } + } + } + } + + // Close output files if necessary + if (!par().output.empty()) + { + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + if (env().getGrid()->IsBoss()) + { + delete writer[i_p]; + } + } + } +} diff --git a/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp b/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp new file mode 100644 index 00000000..6bd6db8e --- /dev/null +++ b/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp @@ -0,0 +1,55 @@ +#ifndef Hadrons_MScalar_VPCounterTerms_hpp_ +#define Hadrons_MScalar_VPCounterTerms_hpp_ + +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * VPCounterTerms * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MScalar) + +class VPCounterTermsPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(VPCounterTermsPar, + std::string, source, + double, mass, + std::string, output, + std::vector, outputMom); +}; + +class TVPCounterTerms: public Module +{ +public: + SCALAR_TYPE_ALIASES(SIMPL,); +public: + // constructor + TVPCounterTerms(const std::string name); + // destructor + virtual ~TVPCounterTerms(void) = default; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +private: + std::string freeMomPropName_, GFSrcName_, phatsqName_, prop0Name_, + twoscalarName_, twoscalarVertexName_, + psquaredName_, psquaredVertexName_; + std::vector phaseName_; + std::vector phase_; +}; + +MODULE_REGISTER_NS(VPCounterTerms, TVPCounterTerms, MScalar); + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MScalar_VPCounterTerms_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index b3c65de0..fa1fe319 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -9,7 +9,8 @@ modules_cc =\ Modules/MGauge/UnitEm.cc \ Modules/MScalar/ChargedProp.cc \ Modules/MScalar/FreeProp.cc \ - Modules/MScalar/ScalarVP.cc + Modules/MScalar/ScalarVP.cc \ + Modules/MScalar/VPCounterTerms.cc modules_hpp =\ Modules/MAction/DWF.hpp \ @@ -33,6 +34,7 @@ modules_hpp =\ Modules/MScalar/FreeProp.hpp \ Modules/MScalar/Scalar.hpp \ Modules/MScalar/ScalarVP.hpp \ + Modules/MScalar/VPCounterTerms.hpp \ Modules/MSink/Point.hpp \ Modules/MSolver/RBPrecCG.hpp \ Modules/MSource/Point.hpp \ From 581be32ed24b9a39aaf22fd05cda185f13cb884e Mon Sep 17 00:00:00 2001 From: James Harrison Date: Thu, 14 Dec 2017 13:42:41 +0000 Subject: [PATCH 038/267] Implement infrared improvement for v=0 on-shell self-energy --- extras/Hadrons/Modules/MGauge/StochEm.cc | 2 +- extras/Hadrons/Modules/MGauge/StochEm.hpp | 3 +- extras/Hadrons/Modules/MGauge/UnitEm.cc | 2 +- lib/qcd/action/gauge/Photon.h | 34 ++++++++++++++++++++--- 4 files changed, 34 insertions(+), 7 deletions(-) diff --git a/extras/Hadrons/Modules/MGauge/StochEm.cc b/extras/Hadrons/Modules/MGauge/StochEm.cc index c7a9fc4f..8f84fe94 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.cc +++ b/extras/Hadrons/Modules/MGauge/StochEm.cc @@ -67,7 +67,7 @@ void TStochEm::setup(void) // execution /////////////////////////////////////////////////////////////////// void TStochEm::execute(void) { - PhotonR photon(par().gauge, par().zmScheme); + PhotonR photon(par().gauge, par().zmScheme, par().improvement); EmField &a = *env().createLattice(getName()); EmComp *w; diff --git a/extras/Hadrons/Modules/MGauge/StochEm.hpp b/extras/Hadrons/Modules/MGauge/StochEm.hpp index 12ce9fdc..b6bfa262 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.hpp +++ b/extras/Hadrons/Modules/MGauge/StochEm.hpp @@ -44,7 +44,8 @@ class StochEmPar: Serializable public: GRID_SERIALIZABLE_CLASS_MEMBERS(StochEmPar, PhotonR::Gauge, gauge, - PhotonR::ZmScheme, zmScheme); + PhotonR::ZmScheme, zmScheme, + Integer, improvement); }; class TStochEm: public Module diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.cc b/extras/Hadrons/Modules/MGauge/UnitEm.cc index f33dfed3..747ef142 100644 --- a/extras/Hadrons/Modules/MGauge/UnitEm.cc +++ b/extras/Hadrons/Modules/MGauge/UnitEm.cc @@ -61,7 +61,7 @@ void TUnitEm::setup(void) // execution /////////////////////////////////////////////////////////////////// void TUnitEm::execute(void) { - PhotonR photon(0, 0); // Just chose arbitrary input values here + PhotonR photon(0, 0, 0); // Just chose arbitrary input values here EmField &a = *env().createLattice(getName()); LOG(Message) << "Generating unit EM potential..." << std::endl; photon.UnitField(a); diff --git a/lib/qcd/action/gauge/Photon.h b/lib/qcd/action/gauge/Photon.h index 1429c2ba..e0329bed 100644 --- a/lib/qcd/action/gauge/Photon.h +++ b/lib/qcd/action/gauge/Photon.h @@ -60,7 +60,7 @@ namespace QCD{ GRID_SERIALIZABLE_ENUM(Gauge, undef, feynman, 1, coulomb, 2, landau, 3); GRID_SERIALIZABLE_ENUM(ZmScheme, undef, qedL, 1, qedTL, 2); public: - Photon(Gauge gauge, ZmScheme zmScheme); + Photon(Gauge gauge, ZmScheme zmScheme, Integer improvement); virtual ~Photon(void) = default; void FreePropagator(const GaugeField &in, GaugeField &out); void MomentumSpacePropagator(const GaugeField &in, GaugeField &out); @@ -75,13 +75,14 @@ namespace QCD{ private: Gauge gauge_; ZmScheme zmScheme_; + Integer improvement_; }; typedef Photon PhotonR; template - Photon::Photon(Gauge gauge, ZmScheme zmScheme) - : gauge_(gauge), zmScheme_(zmScheme) + Photon::Photon(Gauge gauge, ZmScheme zmScheme, Integer improvement) + : gauge_(gauge), zmScheme_(zmScheme), improvement_(improvement) {} template @@ -128,6 +129,7 @@ namespace QCD{ { GridBase *grid = out._grid; const unsigned int nd = grid->_ndimension; + std::vector &l = grid->_fdimensions; switch (zmScheme_) { @@ -149,9 +151,33 @@ namespace QCD{ for(int d = 0; d < grid->_ndimension - 1; d++) { LatticeCoordinate(coor,d); + coor = where(coor < Integer(l[d]/2), coor, coor-Integer(l[d])); spNrm = spNrm + coor*coor; } out = where(spNrm == Integer(0), 0.*out, out); + + // IR improvement + switch (improvement_) + { + case 0: + break; + case 1: + { + Real f1 = sqrt(2.48560548); + out = where(spNrm == Integer(1), f1*out, out); + break; + } + case 2: + { + Real f1 = sqrt(4.93053406); + Real f2 = sqrt(-1.44492857); + out = where(spNrm == Integer(1), f1*out, out); + out = where(spNrm == Integer(2), f2*out, out); + break; + } + default: + break; + } break; } @@ -159,7 +185,7 @@ namespace QCD{ break; } } - + template void Photon::MomentumSpacePropagator(const GaugeField &in, GaugeField &out) From 55e39df30f1953e0d54b79d2b1c6061093468e76 Mon Sep 17 00:00:00 2001 From: Vera Guelpers Date: Fri, 22 Dec 2017 11:36:31 +0000 Subject: [PATCH 039/267] tadpole insertion for DWF --- lib/qcd/action/fermion/WilsonFermion5D.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/qcd/action/fermion/WilsonFermion5D.cc b/lib/qcd/action/fermion/WilsonFermion5D.cc index 393ee7f3..bc703187 100644 --- a/lib/qcd/action/fermion/WilsonFermion5D.cc +++ b/lib/qcd/action/fermion/WilsonFermion5D.cc @@ -833,9 +833,12 @@ void WilsonFermion5D::SeqConservedCurrent(PropagatorField &q_in, for (unsigned int s = 0; s < LLs; ++s) { bool axial_sign = ((curr_type == Current::Axial) && (s < (LLs / 2))); + bool tadpole_sign = (curr_type == Current::Tadpole); + bool switch_sgn = tadpole_sign || axial_sign; + Kernels::SeqConservedCurrentSiteFwd(tmpFwd._odata[sF], q_out._odata[sF], Umu, sU, - mu, t_mask, axial_sign); + mu, t_mask, switch_sgn); ++sF; } } From 935cd1e173e6f50f5185efb30e6b9c3b92790c3d Mon Sep 17 00:00:00 2001 From: Vera Guelpers Date: Fri, 22 Dec 2017 11:38:45 +0000 Subject: [PATCH 040/267] conserved current insertion summed over Lorentzindex --- extras/Hadrons/Modules.hpp | 67 ++----- .../Modules/MSource/SeqConservedSummed.hpp | 165 ++++++++++++++++++ extras/Hadrons/modules.inc | 46 ++--- 3 files changed, 208 insertions(+), 70 deletions(-) create mode 100644 extras/Hadrons/Modules/MSource/SeqConservedSummed.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index e1f06f32..a52b9a6e 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,60 +1,31 @@ -/************************************************************************************* - -Grid physics library, www.github.com/paboyle/Grid - -Source file: extras/Hadrons/Modules.hpp - -Copyright (C) 2015 -Copyright (C) 2016 -Copyright (C) 2017 - -Author: Antonin Portelli - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -See the full license in the file "LICENSE" in the top level distribution directory -*************************************************************************************/ -/* END LEGAL */ - -#include -#include -#include -#include -#include -#include +#include #include -#include +#include +#include +#include #include -#include +#include +#include #include -#include -#include -#include -#include -#include +#include +#include +#include #include -#include #include +#include #include #include #include -#include +#include +#include +#include #include #include #include -#include #include -#include -#include +#include +#include +#include +#include +#include +#include diff --git a/extras/Hadrons/Modules/MSource/SeqConservedSummed.hpp b/extras/Hadrons/Modules/MSource/SeqConservedSummed.hpp new file mode 100644 index 00000000..2296701a --- /dev/null +++ b/extras/Hadrons/Modules/MSource/SeqConservedSummed.hpp @@ -0,0 +1,165 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MContraction/SeqConservedSummed.hpp + +Copyright (C) 2017 + +Author: Andrew Lawson +Author: Vera Guelpers + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ + +#ifndef Hadrons_MSource_SeqConservedSummed_hpp_ +#define Hadrons_MSource_SeqConservedSummed_hpp_ + +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/* + + Sequential source summed over the Lorentz index of current + ----------------------------- + * src_x = sum_mu q_x * theta(x_3 - tA) * theta(tB - x_3) * J_mu * exp(i x.mom) + + * options: + - q: input propagator (string) + - action: fermion action used for propagator q (string) + - tA: begin timeslice (integer) + - tB: end timesilce (integer) + - curr_type: type of conserved current to insert (Current) + - mom: momentum insertion, space-separated float sequence (e.g ".1 .2 1. 0.") + + */ + +/****************************************************************************** + * SeqConservedSummed * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MSource) + +class SeqConservedSummedPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(SeqConservedSummedPar, + std::string, q, + std::string, action, + unsigned int, tA, + unsigned int, tB, + Current, curr_type, + std::string, mom); +}; + +template +class TSeqConservedSummed: public Module +{ +public: + FERM_TYPE_ALIASES(FImpl,); +public: + // constructor + TSeqConservedSummed(const std::string name); + // destructor + virtual ~TSeqConservedSummed(void) = default; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER_NS(SeqConservedSummed, TSeqConservedSummed, MSource); + +/****************************************************************************** + * TSeqConservedSummed implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TSeqConservedSummed::TSeqConservedSummed(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TSeqConservedSummed::getInput(void) +{ + std::vector in = {par().q, par().action}; + + return in; +} + +template +std::vector TSeqConservedSummed::getOutput(void) +{ + std::vector out = {getName()}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TSeqConservedSummed::setup(void) +{ + auto Ls_ = env().getObjectLs(par().action); + env().template registerLattice(getName(), Ls_); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TSeqConservedSummed::execute(void) +{ + if (par().tA == par().tB) + { + LOG(Message) << "Generating sequential source with conserved " + << par().curr_type << " current insertion summed over mu at " + << "t = " << par().tA << std::endl; + } + else + { + LOG(Message) << "Generating sequential source with conserved " + << par().curr_type << " current insertion summed over mu for " + << par().tA << " <= t <= " + << par().tB << std::endl; + } + PropagatorField &src = *env().template createLattice(getName()); + auto src_buf = src; + PropagatorField &q = *env().template getObject(par().q); + FMat &mat = *(env().template getObject(par().action)); + + std::vector mom = strToVec(par().mom); + src = zero; + for(int mu=0;mu<=3;mu++) + { + mat.SeqConservedCurrent(q, src_buf, par().curr_type, mu, + mom, par().tA, par().tB); + src += src_buf; + + } + +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_SeqConservedSummed_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index fbbb2eb9..1ad4750a 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -1,42 +1,44 @@ modules_cc =\ Modules/MContraction/WeakHamiltonianEye.cc \ - Modules/MContraction/WeakHamiltonianNonEye.cc \ Modules/MContraction/WeakNeutral4ptDisc.cc \ - Modules/MGauge/Load.cc \ + Modules/MContraction/WeakHamiltonianNonEye.cc \ + Modules/MScalar/FreeProp.cc \ + Modules/MScalar/ChargedProp.cc \ Modules/MGauge/Random.cc \ Modules/MGauge/StochEm.cc \ Modules/MGauge/Unit.cc \ - Modules/MScalar/ChargedProp.cc \ - Modules/MScalar/FreeProp.cc + Modules/MGauge/Load.cc modules_hpp =\ - Modules/MAction/DWF.hpp \ - Modules/MAction/Wilson.hpp \ - Modules/MContraction/Baryon.hpp \ - Modules/MContraction/DiscLoop.hpp \ - Modules/MContraction/Gamma3pt.hpp \ - Modules/MContraction/Meson.hpp \ + Modules/MSolver/RBPrecCG.hpp \ Modules/MContraction/WardIdentity.hpp \ - Modules/MContraction/WeakHamiltonian.hpp \ + Modules/MContraction/Meson.hpp \ + Modules/MContraction/Gamma3pt.hpp \ + Modules/MContraction/DiscLoop.hpp \ Modules/MContraction/WeakHamiltonianEye.hpp \ - Modules/MContraction/WeakHamiltonianNonEye.hpp \ + Modules/MContraction/Baryon.hpp \ + Modules/MContraction/WeakHamiltonian.hpp \ Modules/MContraction/WeakNeutral4ptDisc.hpp \ - Modules/MFermion/GaugeProp.hpp \ - Modules/MGauge/Load.hpp \ - Modules/MGauge/Random.hpp \ - Modules/MGauge/StochEm.hpp \ - Modules/MGauge/Unit.hpp \ + Modules/MContraction/WeakHamiltonianNonEye.hpp \ + Modules/MUtilities/TestSeqGamma.hpp \ + Modules/MUtilities/TestSeqConserved.hpp \ Modules/MLoop/NoiseLoop.hpp \ - Modules/MScalar/ChargedProp.hpp \ Modules/MScalar/FreeProp.hpp \ + Modules/MScalar/ChargedProp.hpp \ Modules/MScalar/Scalar.hpp \ Modules/MSink/Point.hpp \ Modules/MSink/Smear.hpp \ - Modules/MSolver/RBPrecCG.hpp \ + Modules/MFermion/GaugeProp.hpp \ + Modules/MSource/SeqConservedSummed.hpp \ + Modules/MSource/Wall.hpp \ Modules/MSource/Point.hpp \ Modules/MSource/SeqConserved.hpp \ Modules/MSource/SeqGamma.hpp \ - Modules/MSource/Wall.hpp \ Modules/MSource/Z2.hpp \ - Modules/MUtilities/TestSeqConserved.hpp \ - Modules/MUtilities/TestSeqGamma.hpp + Modules/MGauge/Load.hpp \ + Modules/MGauge/StochEm.hpp \ + Modules/MGauge/Random.hpp \ + Modules/MGauge/Unit.hpp \ + Modules/MAction/DWF.hpp \ + Modules/MAction/Wilson.hpp + From 219b3bd34f467fba233656519f34e6c5585e9d40 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 19 Jan 2018 17:14:11 +0000 Subject: [PATCH 041/267] Remove freeVpTensor object --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 25 +++++++++------------ extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 3 +-- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index b8cdb7e3..95e74394 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -38,7 +38,6 @@ std::vector TScalarVP::getOutput(void) for (unsigned int nu = 0; nu < env().getNd(); ++nu) { out.push_back(getName() + "_" + std::to_string(mu) + "_" + std::to_string(nu)); - out.push_back(getName() + "_free_" + std::to_string(mu) + "_" + std::to_string(nu)); } } @@ -55,7 +54,6 @@ void TScalarVP::setup(void) phaseName_.clear(); muPropQName_.clear(); vpTensorName_.clear(); - freeVpTensorName_.clear(); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { @@ -63,16 +61,12 @@ void TScalarVP::setup(void) muPropQName_.push_back(getName() + "_propQ_" + std::to_string(mu)); std::vector vpTensorName_mu; - std::vector freeVpTensorName_mu; for (unsigned int nu = 0; nu < env().getNd(); ++nu) { vpTensorName_mu.push_back(getName() + "_" + std::to_string(mu) + "_" + std::to_string(nu)); - freeVpTensorName_mu.push_back(getName() + "_free_" + std::to_string(mu) - + "_" + std::to_string(nu)); } vpTensorName_.push_back(vpTensorName_mu); - freeVpTensorName_.push_back(freeVpTensorName_mu); } for (unsigned int mu = 0; mu < env().getNd(); ++mu) @@ -82,7 +76,6 @@ void TScalarVP::setup(void) for (unsigned int nu = 0; nu < env().getNd(); ++nu) { env().registerLattice(vpTensorName_[mu][nu]); - env().registerLattice(freeVpTensorName_[mu][nu]); } } } @@ -129,18 +122,15 @@ void TScalarVP::execute(void) ScalarField Amu(env().getGrid()), tmp_vp(env().getGrid()); TComplex Anu0; std::vector coor0 = {0, 0, 0, 0}; - std::vector > vpTensor, freeVpTensor; + std::vector > vpTensor; for (unsigned int mu = 0; mu < env().getNd(); ++mu) { std::vector vpTensor_mu; - std::vector freeVpTensor_mu; for (unsigned int nu = 0; nu < env().getNd(); ++nu) { vpTensor_mu.push_back(*env().createLattice(vpTensorName_[mu][nu])); - freeVpTensor_mu.push_back(*env().createLattice(freeVpTensorName_[mu][nu])); } vpTensor.push_back(vpTensor_mu); - freeVpTensor.push_back(freeVpTensor_mu); } // Open output files if necessary @@ -218,16 +208,17 @@ void TScalarVP::execute(void) // Free VP prop1 = *prop0_; prop2 = Cshift(*prop0_, nu, -1); - freeVpTensor[mu][nu] = adj(prop2) * Cshift(prop1, mu, 1); - freeVpTensor[mu][nu] -= Cshift(adj(prop2), mu, 1) * prop1; - freeVpTensor[mu][nu] = 2.0*real(freeVpTensor[mu][nu]); + tmp_vp = adj(prop2) * Cshift(prop1, mu, 1); + tmp_vp -= Cshift(adj(prop2), mu, 1) * prop1; + tmp_vp = 2.0*real(tmp_vp); + vpTensor[mu][nu] = tmp_vp; // Output if necessary if (!par().output.empty()) { for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - vpPhase = freeVpTensor[mu][nu]*momphases[i_p]; + vpPhase = tmp_vp*momphases[i_p]; sliceSum(vpPhase, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) @@ -243,6 +234,10 @@ void TScalarVP::execute(void) } } + // S + // X + // 4C + // "Exchange" terms prop1 += q*propQ; prop2 += q*muPropQ[nu]; diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index e4a6e825..2b9e988b 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -47,8 +47,7 @@ private: prop0Name_, propQName_, propSunName_, propTadName_; std::vector phaseName_, muPropQName_; - std::vector > vpTensorName_, - freeVpTensorName_; + std::vector > vpTensorName_; ScalarField *freeMomProp_, *GFSrc_, *prop0_; std::vector phase_; From 389731d373e5f348c80a29520a4328414470c0a2 Mon Sep 17 00:00:00 2001 From: Vera Guelpers Date: Tue, 23 Jan 2018 10:11:33 +0000 Subject: [PATCH 042/267] changed SeqConservedSummed.hpp to work with new hadrons interface --- .../Modules/MSource/SeqConservedSummed.hpp | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/extras/Hadrons/Modules/MSource/SeqConservedSummed.hpp b/extras/Hadrons/Modules/MSource/SeqConservedSummed.hpp index 2296701a..243d05f2 100644 --- a/extras/Hadrons/Modules/MSource/SeqConservedSummed.hpp +++ b/extras/Hadrons/Modules/MSource/SeqConservedSummed.hpp @@ -4,8 +4,9 @@ Grid physics library, www.github.com/paboyle/Grid Source file: extras/Hadrons/Modules/MContraction/SeqConservedSummed.hpp -Copyright (C) 2017 +Copyright (C) 2015-2018 +Author: Antonin Portelli Author: Andrew Lawson Author: Vera Guelpers @@ -82,6 +83,7 @@ public: // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); +protected: // setup virtual void setup(void); // execution @@ -121,7 +123,8 @@ template void TSeqConservedSummed::setup(void) { auto Ls_ = env().getObjectLs(par().action); - env().template registerLattice(getName(), Ls_); + envCreateLat(PropagatorField, getName(), Ls_); + envTmpLat(PropagatorField, "src_tmp"); } // execution /////////////////////////////////////////////////////////////////// @@ -141,18 +144,19 @@ void TSeqConservedSummed::execute(void) << par().tA << " <= t <= " << par().tB << std::endl; } - PropagatorField &src = *env().template createLattice(getName()); - auto src_buf = src; - PropagatorField &q = *env().template getObject(par().q); - FMat &mat = *(env().template getObject(par().action)); + auto &src = envGet(PropagatorField, getName()); + envGetTmp(PropagatorField, src_tmp); + src_tmp = src; + auto &q = envGet(PropagatorField, par().q); + auto &mat = envGet(FMat, par().action); std::vector mom = strToVec(par().mom); src = zero; for(int mu=0;mu<=3;mu++) { - mat.SeqConservedCurrent(q, src_buf, par().curr_type, mu, + mat.SeqConservedCurrent(q, src_tmp, par().curr_type, mu, mom, par().tA, par().tB); - src += src_buf; + src += src_tmp; } From ab3baeb38fef642e496ad8fb9b08f42ff91f5252 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Tue, 23 Jan 2018 17:07:45 +0000 Subject: [PATCH 043/267] Implement contractions and data output in functions; calculate diagrams S, X and 4C separately; output 2E and 2T instead of sunset_shifted, sunset_unshifted, tadpole_shifted, tadpole_unshifted; add comments. --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 525 +++++++++----------- extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 14 + 2 files changed, 241 insertions(+), 298 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 95e74394..93c51a77 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -6,6 +6,78 @@ using namespace Grid; using namespace Hadrons; using namespace MScalar; +/* + * Scalar QED vacuum polarisation up to O(alpha) + * + * + * _______ + * / \ ( adj(S(a\hat{nu}|x)) U_mu(x) S(0|x+a\hat{mu}) U_nu(0) ) + * Diagram notation: U_nu * * U_mu = 2 Re( - ) + * \_______/ ( adj(S(a\hat{nu}|x+a\hat{mu})) adj(U_mu(x)) S(0|x) U_nu(0) ) + * + * + * + * _______ + * / \ + * free = 1 * * 1 + * \_______/ + * + * + * + * _______ + * / \ + * S = iA_nu * * iA_mu + * \_______/ + * + * + * Delta_1 + * ___*___ + * / \ + * X = 1 * * 1 + * \___*___/ + * Delta_1 + * + * Delta_1 Delta_1 + * ___*___ ___*___ + * / \ / \ + * 1 * * iA_mu + iA_nu * * 1 + * \_______/ \_______/ + * 4C = _______ _______ + * / \ / \ + * + 1 * * iA_mu + iA_nu * * 1 + * \___*___/ \___*___/ + * Delta_1 Delta_1 + * + * Delta_1 Delta_1 + * _*___*_ _______ + * / \ / \ + * 2E = 1 * * 1 + 1 * * 1 + * \_______/ \_*___*_/ + * Delta_1 Delta_1 + * + * Delta_2 + * ___*___ _______ + * / \ / \ + * 2T = 1 * * 1 + 1 * * 1 + * \_______/ \___*___/ + * Delta_2 + * + * + * _______ + * / \ + * srcT = -A_nu^2/2 * * 1 + * \_______/ + * + * + * + * _______ + * / \ + * snkT = 1 * * -A_mu^2/2 + * \_______/ + * + * Full VP to O(alpha) = free + q^2*(S+X+4C+2E+2T+srcT+snkT) + */ + /****************************************************************************** * TScalarVP implementation * ******************************************************************************/ @@ -37,7 +109,8 @@ std::vector TScalarVP::getOutput(void) for (unsigned int nu = 0; nu < env().getNd(); ++nu) { - out.push_back(getName() + "_" + std::to_string(mu) + "_" + std::to_string(nu)); + out.push_back(getName() + "_" + std::to_string(mu) + + "_" + std::to_string(nu)); } } @@ -119,8 +192,9 @@ void TScalarVP::execute(void) // CONTRACTIONS ScalarField prop1(env().getGrid()), prop2(env().getGrid()); EmField &A = *env().getObject(par().emField); - ScalarField Amu(env().getGrid()), tmp_vp(env().getGrid()); - TComplex Anu0; + ScalarField Amu(env().getGrid()), U_snk(env().getGrid()); + ScalarField tmp_vp1(env().getGrid()), tmp_vp2(env().getGrid()); + TComplex Anu0, U_src; std::vector coor0 = {0, 0, 0, 0}; std::vector > vpTensor; for (unsigned int mu = 0; mu < env().getNd(); ++mu) @@ -134,10 +208,7 @@ void TScalarVP::execute(void) } // Open output files if necessary - std::vector vecBuf; - std::vector result; - ScalarField vpPhase(env().getGrid()); - std::vector writer, writer0, writerD; + std::vector writer; std::vector momphases; if (!par().output.empty()) { @@ -147,50 +218,32 @@ void TScalarVP::execute(void) std::vector mom = strToVec(par().outputMom[i_p]); // Open output files - std::string filename = par().output + "_" + std::to_string(mom[0]) - + std::to_string(mom[1]) - + std::to_string(mom[2]) - + "." + - std::to_string(env().getTrajectory()); - std::string filename0 = par().output + "_" + std::to_string(mom[0]) - + std::to_string(mom[1]) - + std::to_string(mom[2]) - + "_free." + - std::to_string(env().getTrajectory()); - std::string filenameD = par().output + "_" + std::to_string(mom[0]) - + std::to_string(mom[1]) - + std::to_string(mom[2]) - + "_diagrams." + - std::to_string(env().getTrajectory()); + std::string filename = par().output + "_" + + std::to_string(mom[0]) + + std::to_string(mom[1]) + + std::to_string(mom[2]) + "." + + std::to_string(env().getTrajectory()); if (env().getGrid()->IsBoss()) { CorrWriter *writer_i = new CorrWriter(filename); writer.push_back(writer_i); - CorrWriter *writer0_i = new CorrWriter(filename0); - writer0.push_back(writer0_i); - CorrWriter *writerD_i = new CorrWriter(filenameD); - writerD.push_back(writerD_i); write(*writer[i_p], "charge", q); write(*writer[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); - write(*writer0[i_p], "charge", 0.0); - write(*writer0[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); - write(*writerD[i_p], "charge", q); - write(*writerD[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); } // Calculate phase factors - vpPhase = Complex(1.0,0.0); + tmp_vp1 = Complex(1.0,0.0); for (unsigned int j = 0; j < env().getNd()-1; ++j) { for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) { - vpPhase = vpPhase*(*phase_[j]); + tmp_vp1 = tmp_vp1*(*phase_[j]); } } - vpPhase = adj(vpPhase); - momphases.push_back(vpPhase); + tmp_vp1 = adj(tmp_vp1); + momphases.push_back(tmp_vp1); } } @@ -205,297 +258,132 @@ void TScalarVP::execute(void) << std::endl; Amu = peekLorentz(A, mu); - // Free VP - prop1 = *prop0_; - prop2 = Cshift(*prop0_, nu, -1); - tmp_vp = adj(prop2) * Cshift(prop1, mu, 1); - tmp_vp -= Cshift(adj(prop2), mu, 1) * prop1; - tmp_vp = 2.0*real(tmp_vp); - vpTensor[mu][nu] = tmp_vp; - + // free + prop1 = *prop0_; // S_0(0|x) + prop2 = Cshift(*prop0_, nu, -1); // S_0(0|x-a\hat{\nu}) + // = S_0(a\hat{\nu}|x) + U_src = Complex(1.0,0.0); + vpContraction(tmp_vp1, prop1, prop2, U_src, mu); + vpTensor[mu][nu] = tmp_vp1; // Output if necessary if (!par().output.empty()) { - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) - { - vpPhase = tmp_vp*momphases[i_p]; - sliceSum(vpPhase, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - if (env().getGrid()->IsBoss()) - { - write(*writer0[i_p], - "Pi_"+std::to_string(mu)+"_"+std::to_string(nu), - result); - } - } + writeVP(writer, tmp_vp1, momphases, + "Pi_free_"+std::to_string(mu)+"_"+std::to_string(nu)); + } + + // srcT + tmp_vp2 = tmp_vp1 * (-0.5)*q*q*Anu0*Anu0; + vpTensor[mu][nu] += tmp_vp2; + // Output if necessary + if (!par().output.empty()) + { + writeVP(writer, tmp_vp2, momphases, + "Pi_srcT_"+std::to_string(mu)+"_"+std::to_string(nu)); + } + + // snkT + tmp_vp2 = tmp_vp1 * (-0.5)*q*q*Amu*Amu; + vpTensor[mu][nu] += tmp_vp2; + // Output if necessary + if (!par().output.empty()) + { + writeVP(writer, tmp_vp2, momphases, + "Pi_snkT_"+std::to_string(mu)+"_"+std::to_string(nu)); } // S - // X + prop1 = *prop0_; // S_0(0|x) + prop2 = Cshift(*prop0_, nu, -1); // S_0(a\hat{\nu}|x) + U_src = ci*q*Anu0; + U_snk = ci*q*Amu; + vpContraction(tmp_vp1, prop1, prop2, U_src, U_snk, mu); + vpTensor[mu][nu] += tmp_vp1; + // Output if necessary + if (!par().output.empty()) + { + writeVP(writer, tmp_vp1, momphases, + "Pi_S_"+std::to_string(mu)+"_"+std::to_string(nu)); + } + // 4C - - // "Exchange" terms - prop1 += q*propQ; - prop2 += q*muPropQ[nu]; - tmp_vp = adj(prop2) * (1.0 + ci*q*Amu) - * Cshift(prop1, mu, 1) * (1.0 + ci*q*Anu0); - tmp_vp -= Cshift(adj(prop2), mu, 1) * (1.0 - ci*q*Amu) - * prop1 * (1.0 + ci*q*Anu0); - tmp_vp = 2.0*real(tmp_vp); - vpTensor[mu][nu] = tmp_vp; - + prop1 = q*propQ; // q*S_1(0|x) + prop2 = Cshift(*prop0_, nu, -1); // S_0(a\hat{\nu}|x) + U_src = Complex(1.0,0.0); + U_snk = ci*q*Amu; + vpContraction(tmp_vp1, prop1, prop2, U_src, U_snk, mu); + U_src = ci*q*Anu0; + vpContraction(tmp_vp2, prop1, prop2, U_src, mu); + tmp_vp1 += tmp_vp2; + prop1 = *prop0_; // S_0(0|x) + prop2 = q*muPropQ[nu]; // q*S_1(a\hat{\nu}|x) + vpContraction(tmp_vp2, prop1, prop2, U_src, mu); + tmp_vp1 += tmp_vp2; + U_src = Complex(1.0,0.0); + U_snk = ci*q*Amu; + vpContraction(tmp_vp2, prop1, prop2, U_src, U_snk, mu); + tmp_vp1 += tmp_vp2; + vpTensor[mu][nu] += tmp_vp1; // Output if necessary if (!par().output.empty()) { - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) - { - vpPhase = tmp_vp*momphases[i_p]; - sliceSum(vpPhase, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - if (env().getGrid()->IsBoss()) - { - write(*writerD[i_p], - "Pi_exchange_"+std::to_string(mu)+"_"+std::to_string(nu), - result); - } - } + writeVP(writer, tmp_vp1, momphases, + "Pi_4C_"+std::to_string(mu)+"_"+std::to_string(nu)); } - // Subtract O(alpha^2) term - prop1 = q*propQ; - prop2 = q*muPropQ[nu]; - tmp_vp = Cshift(adj(prop2), mu, 1) * (-ci)*q*Amu - * prop1 * ci*q*Anu0; - tmp_vp -= adj(prop2) * ci*q*Amu - * Cshift(prop1, mu, 1) * ci*q*Anu0; - tmp_vp = 2.0*real(tmp_vp); - vpTensor[mu][nu] += tmp_vp; - + // X + prop1 = q*propQ; // q*S_1(0|x) + prop2 = q*muPropQ[nu]; // q*S_1(a\hat{\nu}|x) + U_src = Complex(1.0,0.0); + vpContraction(tmp_vp1, prop1, prop2, U_src, mu); + vpTensor[mu][nu] += tmp_vp1; // Output if necessary if (!par().output.empty()) { - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) - { - vpPhase = tmp_vp*momphases[i_p]; - sliceSum(vpPhase, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - if (env().getGrid()->IsBoss()) - { - write(*writerD[i_p], - "Pi_alpha2_"+std::to_string(mu)+"_"+std::to_string(nu), - result); - } - } + writeVP(writer, tmp_vp1, momphases, + "Pi_X_"+std::to_string(mu)+"_"+std::to_string(nu)); } - // Sunset from unshifted source - prop1 = q*q*propSun; - prop2 = Cshift(*prop0_, nu, -1); - tmp_vp = adj(prop2) * Cshift(prop1, mu, 1); - tmp_vp -= Cshift(adj(prop2), mu, 1) * prop1; - tmp_vp = 2.0*real(tmp_vp); - vpTensor[mu][nu] += tmp_vp; - + // 2E + prop1 = q*q*propSun; // q^2*S_\Sigma(0|x) + prop2 = Cshift(*prop0_, nu, -1); // S_0(a\hat{\nu}|x) + U_src = Complex(1.0,0.0); + vpContraction(tmp_vp1, prop1, prop2, U_src, mu); + prop1 = *prop0_; // S_0(0|x) + prop2 = q*q*Cshift(propSun, nu, -1); // q^2*S_\Sigma(0|x-a\hat{\nu}) + //(Note: = ) + vpContraction(tmp_vp2, prop1, prop2, U_src, mu); + tmp_vp1 += tmp_vp2; + vpTensor[mu][nu] += tmp_vp1; // Output if necessary if (!par().output.empty()) { - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) - { - vpPhase = tmp_vp*momphases[i_p]; - sliceSum(vpPhase, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - if (env().getGrid()->IsBoss()) - { - write(*writerD[i_p], - "Pi_sunset_unshifted_"+std::to_string(mu)+"_"+std::to_string(nu), - result); - } - } + writeVP(writer, tmp_vp1, momphases, + "Pi_2E_"+std::to_string(mu)+"_"+std::to_string(nu)); } - // Sunset from shifted source - prop1 = Cshift(prop1, nu, -1); - tmp_vp = Cshift(adj(*prop0_), mu, 1) * prop1; - tmp_vp -= adj(*prop0_) * Cshift(prop1, mu, 1); - tmp_vp = 2.0*real(tmp_vp); - vpTensor[mu][nu] += tmp_vp; - + // 2T + prop1 = q*q*propTad; // q^2*S_T(0|x) + prop2 = Cshift(*prop0_, nu, -1); // S_0(a\hat{\nu}|x) + U_src = Complex(1.0,0.0); + vpContraction(tmp_vp1, prop1, prop2, U_src, mu); + prop1 = *prop0_; // S_0(0|x) + prop2 = q*q*Cshift(propTad, nu, -1); // q^2*S_T(0|x-a\hat{\nu}) + vpContraction(tmp_vp2, prop1, prop2, U_src, mu); + tmp_vp1 += tmp_vp2; + vpTensor[mu][nu] += tmp_vp1; // Output if necessary if (!par().output.empty()) { - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) - { - vpPhase = tmp_vp*momphases[i_p]; - sliceSum(vpPhase, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - if (env().getGrid()->IsBoss()) - { - write(*writerD[i_p], - "Pi_sunset_shifted_"+std::to_string(mu)+"_"+std::to_string(nu), - result); - } - } + writeVP(writer, tmp_vp1, momphases, + "Pi_2T_"+std::to_string(mu)+"_"+std::to_string(nu)); } - // Tadpole from unshifted source - prop1 = q*q*propTad; - prop2 = Cshift(*prop0_, nu, -1); - tmp_vp = adj(prop2) * Cshift(prop1, mu, 1); - tmp_vp -= Cshift(adj(prop2), mu, 1) * prop1; - tmp_vp = 2.0*real(tmp_vp); - vpTensor[mu][nu] += tmp_vp; - - // Output if necessary + // Output full VP if necessary if (!par().output.empty()) { - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) - { - vpPhase = tmp_vp*momphases[i_p]; - sliceSum(vpPhase, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - if (env().getGrid()->IsBoss()) - { - write(*writerD[i_p], - "Pi_tadpole_unshifted_"+std::to_string(mu)+"_"+std::to_string(nu), - result); - } - } - } - - // Tadpole from shifted source - prop1 = Cshift(prop1, nu, -1); - tmp_vp = Cshift(adj(*prop0_), mu, 1) * prop1; - tmp_vp -= adj(*prop0_) * Cshift(prop1, mu, 1); - tmp_vp = 2.0*real(tmp_vp); - vpTensor[mu][nu] += tmp_vp; - - // Output if necessary - if (!par().output.empty()) - { - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) - { - vpPhase = tmp_vp*momphases[i_p]; - sliceSum(vpPhase, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - if (env().getGrid()->IsBoss()) - { - write(*writerD[i_p], - "Pi_tadpole_shifted_"+std::to_string(mu)+"_"+std::to_string(nu), - result); - } - } - } - - // Source tadpole - prop1 = *prop0_; - tmp_vp = adj(prop2) - * Cshift(prop1, mu, 1) - * (-0.5)*q*q*Anu0*Anu0; - tmp_vp -= Cshift(adj(prop2), mu, 1) - * prop1 - * (-0.5)*q*q*Anu0*Anu0; - tmp_vp = 2.0*real(tmp_vp); - vpTensor[mu][nu] += tmp_vp; - - // Output if necessary - if (!par().output.empty()) - { - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) - { - vpPhase = tmp_vp*momphases[i_p]; - sliceSum(vpPhase, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - if (env().getGrid()->IsBoss()) - { - write(*writerD[i_p], - "Pi_sourcetadpole_"+std::to_string(mu)+"_"+std::to_string(nu), - result); - } - } - } - - // Sink tadpole - tmp_vp = adj(prop2) - * (-0.5)*q*q*Amu*Amu - * Cshift(prop1, mu, 1); - tmp_vp -= Cshift(adj(prop2), mu, 1) - * (-0.5)*q*q*Amu*Amu - * prop1; - tmp_vp = 2.0*real(tmp_vp); - vpTensor[mu][nu] += tmp_vp; - - // Output if necessary - if (!par().output.empty()) - { - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) - { - vpPhase = tmp_vp*momphases[i_p]; - sliceSum(vpPhase, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - if (env().getGrid()->IsBoss()) - { - write(*writerD[i_p], - "Pi_sinktadpole_"+std::to_string(mu)+"_"+std::to_string(nu), - result); - } - } - } - - // Output if necessary - if (!par().output.empty()) - { - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) - { - vpPhase = vpTensor[mu][nu]*momphases[i_p]; - sliceSum(vpPhase, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - if (env().getGrid()->IsBoss()) - { - write(*writer[i_p], - "Pi_"+std::to_string(mu)+"_"+std::to_string(nu), - result); - } - } + writeVP(writer, vpTensor[mu][nu], momphases, + "Pi_"+std::to_string(mu)+"_"+std::to_string(nu)); } } } @@ -506,13 +394,54 @@ void TScalarVP::execute(void) if (env().getGrid()->IsBoss()) { delete writer[i_p]; - delete writer0[i_p]; - delete writerD[i_p]; } } } } +void TScalarVP::vpContraction(ScalarField &vp, + ScalarField &prop_0_x, ScalarField &prop_nu_x, + TComplex u_src, ScalarField &u_snk, int mu) +{ + // Note: this function assumes a point source is used. + vp = adj(prop_nu_x) * u_snk * Cshift(prop_0_x, mu, 1) * u_src; + vp -= Cshift(adj(prop_nu_x), mu, 1) * adj(u_snk) * prop_0_x * u_src; + vp = 2.0*real(vp); +} + +void TScalarVP::vpContraction(ScalarField &vp, + ScalarField &prop_0_x, ScalarField &prop_nu_x, + TComplex u_src, int mu) +{ + // Note: this function assumes a point source is used. + vp = adj(prop_nu_x) * Cshift(prop_0_x, mu, 1) * u_src; + vp -= Cshift(adj(prop_nu_x), mu, 1) * prop_0_x * u_src; + vp = 2.0*real(vp); +} + +void TScalarVP::writeVP(const std::vector &writers, const ScalarField &vp, + const std::vector &momphases, std::string dsetName) +{ + std::vector vecBuf; + std::vector result; + ScalarField vpPhase(env().getGrid()); + + for (unsigned int i_p = 0; i_p < momphases.size(); ++i_p) + { + vpPhase = vp*momphases[i_p]; + sliceSum(vpPhase, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + if (env().getGrid()->IsBoss()) + { + write(*writers[i_p], dsetName, result); + } + } +} + void TScalarVP::momD1(ScalarField &s, FFT &fft) { EmField &A = *env().getObject(par().emField); diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index 2b9e988b..564a7f39 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -41,6 +41,20 @@ public: // execution virtual void execute(void); private: + // conserved vector two-point contraction + void vpContraction(ScalarField &vp, + ScalarField &prop_0_x, ScalarField &prop_nu_x, + TComplex u_src, ScalarField &u_snk, int mu); + // conserved vector two-point contraction with unit gauge link at sink + void vpContraction(ScalarField &vp, + ScalarField &prop_0_x, ScalarField &prop_nu_x, + TComplex u_src, int mu); + // write momentum-projected vacuum polarisation to file(s) + void writeVP(const std::vector &writers, + const ScalarField &vp, + const std::vector &momphases, + std::string dsetName); + // momentum-space Delta_1 insertion void momD1(ScalarField &s, FFT &fft); private: std::string freeMomPropName_, GFSrcName_, From a1151fc734667cc6bc7156dbea19b512ee08e1c7 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 23 Jan 2018 17:26:50 +0000 Subject: [PATCH 044/267] Hadrons: MPI-safe serial IO --- extras/Hadrons/Application.cc | 55 +++++++++++-------- extras/Hadrons/Module.hpp | 7 +++ .../Hadrons/Modules/MContraction/Baryon.hpp | 3 +- .../Hadrons/Modules/MContraction/DiscLoop.hpp | 5 +- .../Hadrons/Modules/MContraction/Gamma3pt.hpp | 4 +- extras/Hadrons/Modules/MContraction/Meson.hpp | 3 +- .../MContraction/WeakHamiltonianEye.cc | 4 +- .../MContraction/WeakHamiltonianNonEye.cc | 4 +- .../MContraction/WeakNeutral4ptDisc.cc | 4 +- extras/Hadrons/Modules/MScalar/ChargedProp.cc | 5 +- extras/Hadrons/Modules/MScalar/FreeProp.cc | 4 +- extras/Hadrons/Modules/MScalarSUN/Div.hpp | 3 +- extras/Hadrons/Modules/MScalarSUN/TrMag.hpp | 3 +- extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp | 4 +- .../Hadrons/Modules/MScalarSUN/TwoPoint.hpp | 3 +- 15 files changed, 55 insertions(+), 56 deletions(-) diff --git a/extras/Hadrons/Application.cc b/extras/Hadrons/Application.cc index 39c898bc..8b2aba4a 100644 --- a/extras/Hadrons/Application.cc +++ b/extras/Hadrons/Application.cc @@ -132,24 +132,27 @@ void Application::parseParameterFile(const std::string parameterFileName) void Application::saveParameterFile(const std::string parameterFileName) { - XmlWriter writer(parameterFileName); - ObjectId id; - const unsigned int nMod = vm().getNModule(); - LOG(Message) << "Saving application to '" << parameterFileName << "'..." << std::endl; - write(writer, "parameters", getPar()); - push(writer, "modules"); - for (unsigned int i = 0; i < nMod; ++i) + if (env().getGrid()->IsBoss()) { - push(writer, "module"); - id.name = vm().getModuleName(i); - id.type = vm().getModule(i)->getRegisteredName(); - write(writer, "id", id); - vm().getModule(i)->saveParameters(writer, "options"); + XmlWriter writer(parameterFileName); + ObjectId id; + const unsigned int nMod = vm().getNModule(); + + write(writer, "parameters", getPar()); + push(writer, "modules"); + for (unsigned int i = 0; i < nMod; ++i) + { + push(writer, "module"); + id.name = vm().getModuleName(i); + id.type = vm().getModule(i)->getRegisteredName(); + write(writer, "id", id); + vm().getModule(i)->saveParameters(writer, "options"); + pop(writer); + } + pop(writer); pop(writer); } - pop(writer); - pop(writer); } // schedule computation //////////////////////////////////////////////////////// @@ -164,20 +167,24 @@ void Application::schedule(void) void Application::saveSchedule(const std::string filename) { - TextWriter writer(filename); - std::vector program; - - if (!scheduled_) - { - HADRON_ERROR(Definition, "Computation not scheduled"); - } LOG(Message) << "Saving current schedule to '" << filename << "'..." << std::endl; - for (auto address: program_) + if (env().getGrid()->IsBoss()) { - program.push_back(vm().getModuleName(address)); + TextWriter writer(filename); + std::vector program; + + if (!scheduled_) + { + HADRON_ERROR(Definition, "Computation not scheduled"); + } + + for (auto address: program_) + { + program.push_back(vm().getModuleName(address)); + } + write(writer, "schedule", program); } - write(writer, "schedule", program); } void Application::loadSchedule(const std::string filename) diff --git a/extras/Hadrons/Module.hpp b/extras/Hadrons/Module.hpp index 2ba425e4..018a26f7 100644 --- a/extras/Hadrons/Module.hpp +++ b/extras/Hadrons/Module.hpp @@ -137,6 +137,13 @@ envTmp(type, name, Ls, env().getGrid(Ls)) #define envTmpLat(...)\ MACRO_REDIRECT(__VA_ARGS__, envTmpLat5, envTmpLat4)(__VA_ARGS__) +#define saveResult(ioStem, name, result)\ +if (env().getGrid()->IsBoss())\ +{\ + ResultWriter _writer(RESULT_FILE_NAME(ioStem));\ + write(_writer, name, result);\ +} + /****************************************************************************** * Module class * ******************************************************************************/ diff --git a/extras/Hadrons/Modules/MContraction/Baryon.hpp b/extras/Hadrons/Modules/MContraction/Baryon.hpp index 8966d95b..f3bf360d 100644 --- a/extras/Hadrons/Modules/MContraction/Baryon.hpp +++ b/extras/Hadrons/Modules/MContraction/Baryon.hpp @@ -122,7 +122,6 @@ void TBaryon::execute(void) << " quarks '" << par().q1 << "', '" << par().q2 << "', and '" << par().q3 << "'" << std::endl; - ResultWriter writer(RESULT_FILE_NAME(par().output)); auto &q1 = envGet(PropagatorField1, par().q1); auto &q2 = envGet(PropagatorField2, par().q2); auto &q3 = envGet(PropagatorField3, par().q2); @@ -131,7 +130,7 @@ void TBaryon::execute(void) // FIXME: do contractions - // write(writer, "meson", result); + // saveResult(par().output, "meson", result); } END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MContraction/DiscLoop.hpp b/extras/Hadrons/Modules/MContraction/DiscLoop.hpp index 539abbbb..4a30963f 100644 --- a/extras/Hadrons/Modules/MContraction/DiscLoop.hpp +++ b/extras/Hadrons/Modules/MContraction/DiscLoop.hpp @@ -119,7 +119,6 @@ void TDiscLoop::execute(void) << "' using '" << par().q_loop << "' with " << par().gamma << " insertion." << std::endl; - ResultWriter writer(RESULT_FILE_NAME(par().output)); auto &q_loop = envGet(PropagatorField, par().q_loop); Gamma gamma(par().gamma); std::vector buf; @@ -128,15 +127,13 @@ void TDiscLoop::execute(void) envGetTmp(LatticeComplex, c); c = trace(gamma*q_loop); sliceSum(c, buf, Tp); - result.gamma = par().gamma; result.corr.resize(buf.size()); for (unsigned int t = 0; t < buf.size(); ++t) { result.corr[t] = TensorRemove(buf[t]); } - - write(writer, "disc", result); + saveResult(par().output, "disc", result); } END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MContraction/Gamma3pt.hpp b/extras/Hadrons/Modules/MContraction/Gamma3pt.hpp index b4327a13..b615cd7b 100644 --- a/extras/Hadrons/Modules/MContraction/Gamma3pt.hpp +++ b/extras/Hadrons/Modules/MContraction/Gamma3pt.hpp @@ -153,7 +153,6 @@ void TGamma3pt::execute(void) // Initialise variables. q2 and q3 are normal propagators, q1 may be // sink smeared. - ResultWriter writer(RESULT_FILE_NAME(par().output)); auto &q1 = envGet(SlicedPropagator1, par().q1); auto &q2 = envGet(PropagatorField2, par().q2); auto &q3 = envGet(PropagatorField2, par().q3); @@ -175,8 +174,7 @@ void TGamma3pt::execute(void) { result.corr[t] = TensorRemove(buf[t]); } - - write(writer, "gamma3pt", result); + saveResult(par().output, "gamma3pt", result); } END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MContraction/Meson.hpp b/extras/Hadrons/Modules/MContraction/Meson.hpp index 0197534d..5d27c526 100644 --- a/extras/Hadrons/Modules/MContraction/Meson.hpp +++ b/extras/Hadrons/Modules/MContraction/Meson.hpp @@ -172,7 +172,6 @@ void TMeson::execute(void) << " quarks '" << par().q1 << "' and '" << par().q2 << "'" << std::endl; - ResultWriter writer(RESULT_FILE_NAME(par().output)); std::vector buf; std::vector result; Gamma g5(Gamma::Algebra::Gamma5); @@ -239,7 +238,7 @@ void TMeson::execute(void) } } } - write(writer, "meson", result); + saveResult(par().output, "meson", result); } END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MContraction/WeakHamiltonianEye.cc b/extras/Hadrons/Modules/MContraction/WeakHamiltonianEye.cc index 1d257fc7..da1c877e 100644 --- a/extras/Hadrons/Modules/MContraction/WeakHamiltonianEye.cc +++ b/extras/Hadrons/Modules/MContraction/WeakHamiltonianEye.cc @@ -104,7 +104,6 @@ void TWeakHamiltonianEye::execute(void) << par().q2 << ", '" << par().q3 << "' and '" << par().q4 << "'." << std::endl; - ResultWriter writer(RESULT_FILE_NAME(par().output)); auto &q1 = envGet(SlicedPropagator, par().q1); auto &q2 = envGet(PropagatorField, par().q2); auto &q3 = envGet(PropagatorField, par().q3); @@ -147,5 +146,6 @@ void TWeakHamiltonianEye::execute(void) SUM_MU(expbuf, E_body[mu]*E_loop[mu]) MAKE_DIAG(expbuf, corrbuf, result[E_diag], "HW_E") - write(writer, "HW_Eye", result); + // IO + saveResult(par().output, "HW_Eye", result); } diff --git a/extras/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.cc b/extras/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.cc index 2ad2e7dc..e7824d33 100644 --- a/extras/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.cc +++ b/extras/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.cc @@ -104,7 +104,6 @@ void TWeakHamiltonianNonEye::execute(void) << par().q2 << ", '" << par().q3 << "' and '" << par().q4 << "'." << std::endl; - ResultWriter writer(RESULT_FILE_NAME(par().output)); auto &q1 = envGet(PropagatorField, par().q1); auto &q2 = envGet(PropagatorField, par().q2); auto &q3 = envGet(PropagatorField, par().q3); @@ -144,5 +143,6 @@ void TWeakHamiltonianNonEye::execute(void) SUM_MU(expbuf, W_i_side_loop[mu]*W_f_side_loop[mu]) MAKE_DIAG(expbuf, corrbuf, result[W_diag], "HW_W") - write(writer, "HW_NonEye", result); + // IO + saveResult(par().output, "HW_NonEye", result); } diff --git a/extras/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.cc b/extras/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.cc index 2c94b2ba..0b7a2cde 100644 --- a/extras/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.cc +++ b/extras/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.cc @@ -104,7 +104,6 @@ void TWeakNeutral4ptDisc::execute(void) << par().q2 << ", '" << par().q3 << "' and '" << par().q4 << "'." << std::endl; - ResultWriter writer(RESULT_FILE_NAME(par().output)); auto &q1 = envGet(PropagatorField, par().q1); auto &q2 = envGet(PropagatorField, par().q2); auto &q3 = envGet(PropagatorField, par().q3); @@ -138,5 +137,6 @@ void TWeakNeutral4ptDisc::execute(void) expbuf *= curr; MAKE_DIAG(expbuf, corrbuf, result[neut_disc_2_diag], "HW_disc0_2") - write(writer, "HW_disc0", result); + // IO + saveResult(par().output, "HW_disc0", result); } diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index 1470f1ad..7d59ac3e 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -133,7 +133,6 @@ void TChargedProp::execute(void) LOG(Message) << "Saving zero-momentum projection to '" << filename << "'..." << std::endl; - ResultWriter writer(RESULT_FILE_NAME(par().output)); std::vector vecBuf; std::vector result; @@ -143,8 +142,8 @@ void TChargedProp::execute(void) { result[t] = TensorRemove(vecBuf[t]); } - write(writer, "charge", q); - write(writer, "prop", result); + saveResult(par().output, "charge", q); + saveResult(par().output, "prop", result); } } diff --git a/extras/Hadrons/Modules/MScalar/FreeProp.cc b/extras/Hadrons/Modules/MScalar/FreeProp.cc index ee86b9db..8d256e3c 100644 --- a/extras/Hadrons/Modules/MScalar/FreeProp.cc +++ b/extras/Hadrons/Modules/MScalar/FreeProp.cc @@ -83,8 +83,6 @@ void TFreeProp::execute(void) if (!par().output.empty()) { - TextWriter writer(par().output + "." + - std::to_string(vm().getTrajectory())); std::vector buf; std::vector result; @@ -94,6 +92,6 @@ void TFreeProp::execute(void) { result[t] = TensorRemove(buf[t]); } - write(writer, "prop", result); + saveResult(par().output, "freeprop", result); } } diff --git a/extras/Hadrons/Modules/MScalarSUN/Div.hpp b/extras/Hadrons/Modules/MScalarSUN/Div.hpp index 6680cd79..cab6e88c 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Div.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/Div.hpp @@ -151,11 +151,10 @@ void TDiv::execute(void) if (!par().output.empty()) { Result r; - ResultWriter writer(RESULT_FILE_NAME(par().output)); r.type = par().type; r.value = TensorRemove(sum(div)); - write(writer, "div", r); + saveResult(par().output, "div", r); } } diff --git a/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp b/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp index 96eb794e..2858984c 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp @@ -120,7 +120,6 @@ void TTrMag::execute(void) << "..." << std::endl; std::vector result; - ResultWriter writer(RESULT_FILE_NAME(par().output)); auto &phi = envGet(Field, par().field); auto m2 = sum(phi), mn = m2; @@ -136,7 +135,7 @@ void TTrMag::execute(void) r.value = TensorRemove(trace(mn)).real(); result.push_back(r); } - write(writer, "trmag", result); + saveResult(par().output, "trmag", result); } END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp b/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp index 4586663d..4b305128 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp @@ -162,9 +162,7 @@ void TTrPhi::execute(void) } if (result.size() > 0) { - ResultWriter writer(RESULT_FILE_NAME(par().output)); - - write(writer, "trphi", result); + saveResult(par().output, "trphi", result); } } diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp index abfbf609..58570dd5 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp @@ -129,7 +129,6 @@ void TTwoPoint::execute(void) LOG(Message) << " '" << o << "'" << std::endl; } - ResultWriter writer(RESULT_FILE_NAME(par().output)); const unsigned int nd = env().getDim().size(); std::vector result; @@ -150,7 +149,7 @@ void TTwoPoint::execute(void) r.data = makeTwoPoint(slicedOp[i], slicedOp[j]); result.push_back(r); } - write(writer, "twopt", result); + saveResult(par().output, "twopt", result); } // make 2-pt function ////////////////////////////////////////////////////////// From 3db7a5387b4e3f1621cda9d21cd8010b3bc46079 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 26 Jan 2018 16:33:48 +0000 Subject: [PATCH 045/267] BROKEN: Adapted scalarVP, UnitEm and VPCounterTerms modules to new Hadrons. Currently getting an assertion error from Communicator_mpi3.cc when I try to run. --- extras/Hadrons/Modules/MGauge/UnitEm.cc | 4 +- extras/Hadrons/Modules/MGauge/UnitEm.hpp | 1 + extras/Hadrons/Modules/MScalar/ChargedProp.cc | 33 +- .../Hadrons/Modules/MScalar/ChargedProp.hpp | 3 +- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 327 ++++++++++-------- extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 24 +- .../Hadrons/Modules/MScalar/VPCounterTerms.cc | 180 +++++----- .../Modules/MScalar/VPCounterTerms.hpp | 7 +- extras/Hadrons/modules.inc | 2 +- 9 files changed, 292 insertions(+), 289 deletions(-) diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.cc b/extras/Hadrons/Modules/MGauge/UnitEm.cc index 747ef142..a19161ac 100644 --- a/extras/Hadrons/Modules/MGauge/UnitEm.cc +++ b/extras/Hadrons/Modules/MGauge/UnitEm.cc @@ -55,14 +55,14 @@ std::vector TUnitEm::getOutput(void) // setup /////////////////////////////////////////////////////////////////////// void TUnitEm::setup(void) { - env().registerLattice(getName()); + envCreateLat(EmField, getName()); } // execution /////////////////////////////////////////////////////////////////// void TUnitEm::execute(void) { PhotonR photon(0, 0, 0); // Just chose arbitrary input values here - EmField &a = *env().createLattice(getName()); + auto &a = envGet(EmField, getName()); LOG(Message) << "Generating unit EM potential..." << std::endl; photon.UnitField(a); } diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.hpp b/extras/Hadrons/Modules/MGauge/UnitEm.hpp index ea910929..1df45d4a 100644 --- a/extras/Hadrons/Modules/MGauge/UnitEm.hpp +++ b/extras/Hadrons/Modules/MGauge/UnitEm.hpp @@ -52,6 +52,7 @@ public: // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); +protected: // setup virtual void setup(void); // execution diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index ee215116..5e65c43e 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -145,16 +145,16 @@ void TChargedProp::execute(void) for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { std::vector mom = strToVec(par().outputMom[i_p]); - std::string filename = par().output + "_" + std::to_string(mom[0]) - + std::to_string(mom[1]) - + std::to_string(mom[2]) - + "." + - std::to_string(vm().getTrajectory()); + std::string filename = par().output + "_" + + std::to_string(mom[0]) + + std::to_string(mom[1]) + + std::to_string(mom[2]); - LOG(Message) << "Saving (" << par().outputMom[i_p] << ") momentum projection to '" - << filename << "'..." << std::endl; + LOG(Message) << "Saving (" << par().outputMom[i_p] + << ") momentum projection to '" << filename << "'..." + << std::endl; - std::vector result, result0, resultQ, resultSun, resultTad; + std::vector result, result0, resultQ, resultSun, resultTad; result.resize(env().getGrid()->_fdimensions[env().getNd()-1]); result0.resize(result.size()); resultQ.resize(result.size()); @@ -189,13 +189,13 @@ void TChargedProp::execute(void) peekSite(site, propTad, whichmom); resultTad[t]=TensorRemove(site); } - saveResult(par().output, "charge", q); - saveResult(par().output, "mass", par().mass); - saveResult(par().output, "prop", result); - saveResult(par().output, "prop_0", result0); - saveResult(par().output, "prop_Q", resultQ); - saveResult(par().output, "prop_Sun", resultSun); - saveResult(par().output, "prop_Tad", resultTad); + saveResult(filename, "charge", q); + saveResult(filename, "mass", par().mass); + saveResult(filename, "prop", result); + saveResult(filename, "prop_0", result0); + saveResult(filename, "prop_Q", resultQ); + saveResult(filename, "prop_Sun", resultSun); + saveResult(filename, "prop_Tad", resultTad); } } @@ -231,7 +231,8 @@ void TChargedProp::makeCaches(void) } if (!prop0Done_) { - LOG(Message) << "Caching position-space free scalar propagator..." << std::endl; + LOG(Message) << "Caching position-space free scalar propagator..." + << std::endl; fft.FFT_all_dim(prop0, GFSrc, FFT::backward); } if (!phasesDone_) diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp index 9dd3ce31..3a711361 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp @@ -75,7 +75,8 @@ private: void momD1(ScalarField &s, FFT &fft); void momD2(ScalarField &s, FFT &fft); private: - bool freeMomPropDone_, GFSrcDone_, prop0Done_, phasesDone_; + bool freeMomPropDone_, GFSrcDone_, prop0Done_, + phasesDone_; std::string freeMomPropName_, GFSrcName_, prop0Name_, propQName_, propSunName_, propTadName_, fftName_; std::vector phaseName_; diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 93c51a77..9a6106eb 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -9,12 +9,15 @@ using namespace MScalar; /* * Scalar QED vacuum polarisation up to O(alpha) * + * Conserved vector 2-point function diagram notation: + * _______ + * / \ + * U_nu * * U_mu + * \_______/ * - * _______ - * / \ ( adj(S(a\hat{nu}|x)) U_mu(x) S(0|x+a\hat{mu}) U_nu(0) ) - * Diagram notation: U_nu * * U_mu = 2 Re( - ) - * \_______/ ( adj(S(a\hat{nu}|x+a\hat{mu})) adj(U_mu(x)) S(0|x) U_nu(0) ) - * + * ( adj(S(a\hat{nu}|x)) U_mu(x) S(0|x+a\hat{mu}) U_nu(0) ) + * = 2 Re( - ) + * ( adj(S(a\hat{nu}|x+a\hat{mu})) adj(U_mu(x)) S(0|x) U_nu(0) ) * * * _______ @@ -89,12 +92,13 @@ TScalarVP::TScalarVP(const std::string name) // dependencies/products /////////////////////////////////////////////////////// std::vector TScalarVP::getInput(void) { + prop0Name_ = par().scalarProp + "_0"; propQName_ = par().scalarProp + "_Q"; propSunName_ = par().scalarProp + "_Sun"; propTadName_ = par().scalarProp + "_Tad"; - std::vector in = {par().emField, propQName_, propSunName_, - propTadName_}; + std::vector in = {par().emField, prop0Name_, propQName_, + propSunName_, propTadName_}; return in; } @@ -105,7 +109,7 @@ std::vector TScalarVP::getOutput(void) for (unsigned int mu = 0; mu < env().getNd(); ++mu) { - out.push_back(getName() + "_propQ_" + std::to_string(mu)); + // out.push_back(getName() + "_propQ_" + std::to_string(mu)); for (unsigned int nu = 0; nu < env().getNd(); ++nu) { @@ -120,14 +124,13 @@ std::vector TScalarVP::getOutput(void) // setup /////////////////////////////////////////////////////////////////////// void TScalarVP::setup(void) { - freeMomPropName_ = FREEMOMPROP(static_cast(env().getModule(par().scalarProp))->par().mass); - GFSrcName_ = "_" + par().scalarProp + "_DinvSrc"; - prop0Name_ = par().scalarProp + "_0"; - + freeMomPropName_ = FREEMOMPROP(static_cast(vm().getModule(par().scalarProp))->par().mass); + GFSrcName_ = par().scalarProp + "_DinvSrc"; + fftName_ = par().scalarProp + "_fft"; phaseName_.clear(); muPropQName_.clear(); vpTensorName_.clear(); - + momPhaseName_.clear(); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { phaseName_.push_back("_shiftphase_" + std::to_string(mu)); @@ -141,109 +144,111 @@ void TScalarVP::setup(void) } vpTensorName_.push_back(vpTensorName_mu); } + if (!par().output.empty()) + { + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + momPhaseName_.push_back("_momentumphase_" + std::to_string(i_p)); + } + } for (unsigned int mu = 0; mu < env().getNd(); ++mu) { - env().registerLattice(muPropQName_[mu]); + envCreateLat(ScalarField, muPropQName_[mu]); for (unsigned int nu = 0; nu < env().getNd(); ++nu) { - env().registerLattice(vpTensorName_[mu][nu]); + envCreateLat(ScalarField, vpTensorName_[mu][nu]); } } + if (!par().output.empty()) + { + momPhasesDone_ = env().hasCreatedObject(momPhaseName_[0]); + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + envCacheLat(ScalarField, momPhaseName_[i_p]); + } + } + envTmpLat(ScalarField, "buf"); + envTmpLat(ScalarField, "result"); + envTmpLat(ScalarField, "Amu"); + envTmpLat(ScalarField, "Usnk"); + envTmpLat(ScalarField, "tmpProp"); } // execution /////////////////////////////////////////////////////////////////// void TScalarVP::execute(void) { - // Get objects cached by ChargedProp module - Complex ci(0.0,1.0); - FFT fft(env().getGrid()); - Real q = static_cast(env().getModule(par().scalarProp))->par().charge; + // CACHING ANALYTIC EXPRESSIONS + makeCaches(); - freeMomProp_ = env().getObject(freeMomPropName_); + Complex ci(0.0,1.0); + Real q = static_cast(vm().getModule(par().scalarProp))->par().charge; + auto &prop0 = envGet(ScalarField, prop0Name_); + auto &propQ = envGet(ScalarField, propQName_); + auto &propSun = envGet(ScalarField, propSunName_); + auto &propTad = envGet(ScalarField, propTadName_); + auto &GFSrc = envGet(ScalarField, GFSrcName_); + auto &G = envGet(ScalarField, freeMomPropName_); + auto &fft = envGet(FFT, fftName_); + phase_.clear(); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { - phase_.push_back(env().getObject(phaseName_[mu])); + auto &phmu = envGet(ScalarField, phaseName_[mu]); + phase_.push_back(&phmu); } - GFSrc_ = env().getObject(GFSrcName_); - prop0_ = env().getObject(prop0Name_); - - // Propagator from unshifted source - ScalarField &propQ = *env().getObject(propQName_); - ScalarField &propSun = *env().getObject(propSunName_); - ScalarField &propTad = *env().getObject(propTadName_); - - // Propagators from shifted sources + + // PROPAGATORS FROM SHIFTED SOURCES LOG(Message) << "Computing O(q) charged scalar propagators..." << std::endl; - std::vector muPropQ; + std::vector muPropQ; for (unsigned int mu = 0; mu < env().getNd(); ++mu) { - muPropQ.push_back(*env().createLattice(muPropQName_[mu])); + auto &propmu = envGet(ScalarField, muPropQName_[mu]); // -G*momD1*G*F*tau_mu*Src (momD1 = F*D1*Finv) - muPropQ[mu] = adj(*phase_[mu])*(*GFSrc_); - momD1(muPropQ[mu], fft); - muPropQ[mu] = -(*freeMomProp_)*muPropQ[mu]; - fft.FFT_all_dim(muPropQ[mu], muPropQ[mu], FFT::backward); + propmu = adj(*phase_[mu])*GFSrc; + momD1(propmu, fft); + propmu = -G*propmu; + fft.FFT_all_dim(propmu, propmu, FFT::backward); + + muPropQ.push_back(&propmu); } // CONTRACTIONS - ScalarField prop1(env().getGrid()), prop2(env().getGrid()); - EmField &A = *env().getObject(par().emField); - ScalarField Amu(env().getGrid()), U_snk(env().getGrid()); - ScalarField tmp_vp1(env().getGrid()), tmp_vp2(env().getGrid()); - TComplex Anu0, U_src; + auto &A = envGet(EmField, par().emField); + envGetTmp(ScalarField, buf); + envGetTmp(ScalarField, result); + envGetTmp(ScalarField, Amu); + envGetTmp(ScalarField, Usnk); + envGetTmp(ScalarField, tmpProp); + TComplex Anu0, Usrc; std::vector coor0 = {0, 0, 0, 0}; - std::vector > vpTensor; + std::vector > vpTensor; for (unsigned int mu = 0; mu < env().getNd(); ++mu) { - std::vector vpTensor_mu; + std::vector vpTensor_mu; for (unsigned int nu = 0; nu < env().getNd(); ++nu) { - vpTensor_mu.push_back(*env().createLattice(vpTensorName_[mu][nu])); + auto &vpmunu = envGet(ScalarField, vpTensorName_[mu][nu]); + vpTensor_mu.push_back(&vpmunu); } vpTensor.push_back(vpTensor_mu); } - // Open output files if necessary - std::vector writer; - std::vector momphases; + // Prepare output files if necessary if (!par().output.empty()) { LOG(Message) << "Preparing output files..." << std::endl; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { std::vector mom = strToVec(par().outputMom[i_p]); - - // Open output files std::string filename = par().output + "_" + std::to_string(mom[0]) + std::to_string(mom[1]) - + std::to_string(mom[2]) + "." - + std::to_string(env().getTrajectory()); - - if (env().getGrid()->IsBoss()) - { - CorrWriter *writer_i = new CorrWriter(filename); - writer.push_back(writer_i); - - write(*writer[i_p], "charge", q); - write(*writer[i_p], "mass", static_cast(env().getModule(par().scalarProp))->par().mass); - } - - // Calculate phase factors - tmp_vp1 = Complex(1.0,0.0); - for (unsigned int j = 0; j < env().getNd()-1; ++j) - { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - tmp_vp1 = tmp_vp1*(*phase_[j]); - } - } - tmp_vp1 = adj(tmp_vp1); - momphases.push_back(tmp_vp1); + + std::to_string(mom[2]); + saveResult(filename, "charge", q); + saveResult(filename, "mass", static_cast(vm().getModule(par().scalarProp))->par().mass); } } @@ -259,142 +264,156 @@ void TScalarVP::execute(void) Amu = peekLorentz(A, mu); // free - prop1 = *prop0_; // S_0(0|x) - prop2 = Cshift(*prop0_, nu, -1); // S_0(0|x-a\hat{\nu}) + tmpProp = Cshift(prop0, nu, -1); // S_0(0|x-a\hat{\nu}) // = S_0(a\hat{\nu}|x) - U_src = Complex(1.0,0.0); - vpContraction(tmp_vp1, prop1, prop2, U_src, mu); - vpTensor[mu][nu] = tmp_vp1; + Usrc = Complex(1.0,0.0); + vpContraction(buf, prop0, tmpProp, Usrc, mu); + *vpTensor[mu][nu] = buf; // Output if necessary if (!par().output.empty()) { - writeVP(writer, tmp_vp1, momphases, + writeVP(buf, "Pi_free_"+std::to_string(mu)+"_"+std::to_string(nu)); } // srcT - tmp_vp2 = tmp_vp1 * (-0.5)*q*q*Anu0*Anu0; - vpTensor[mu][nu] += tmp_vp2; + result = buf * (-0.5)*q*q*Anu0*Anu0; + *vpTensor[mu][nu] += result; // Output if necessary if (!par().output.empty()) { - writeVP(writer, tmp_vp2, momphases, + writeVP(result, "Pi_srcT_"+std::to_string(mu)+"_"+std::to_string(nu)); } // snkT - tmp_vp2 = tmp_vp1 * (-0.5)*q*q*Amu*Amu; - vpTensor[mu][nu] += tmp_vp2; + result = buf * (-0.5)*q*q*Amu*Amu; + *vpTensor[mu][nu] += result; // Output if necessary if (!par().output.empty()) { - writeVP(writer, tmp_vp2, momphases, + writeVP(result, "Pi_snkT_"+std::to_string(mu)+"_"+std::to_string(nu)); } // S - prop1 = *prop0_; // S_0(0|x) - prop2 = Cshift(*prop0_, nu, -1); // S_0(a\hat{\nu}|x) - U_src = ci*q*Anu0; - U_snk = ci*q*Amu; - vpContraction(tmp_vp1, prop1, prop2, U_src, U_snk, mu); - vpTensor[mu][nu] += tmp_vp1; + tmpProp = Cshift(prop0, nu, -1); // S_0(a\hat{\nu}|x) + Usrc = ci*Anu0; + Usnk = ci*Amu; + vpContraction(result, prop0, tmpProp, Usrc, Usnk, mu); + result = q*q*result; + *vpTensor[mu][nu] += result; // Output if necessary if (!par().output.empty()) { - writeVP(writer, tmp_vp1, momphases, + writeVP(result, "Pi_S_"+std::to_string(mu)+"_"+std::to_string(nu)); } // 4C - prop1 = q*propQ; // q*S_1(0|x) - prop2 = Cshift(*prop0_, nu, -1); // S_0(a\hat{\nu}|x) - U_src = Complex(1.0,0.0); - U_snk = ci*q*Amu; - vpContraction(tmp_vp1, prop1, prop2, U_src, U_snk, mu); - U_src = ci*q*Anu0; - vpContraction(tmp_vp2, prop1, prop2, U_src, mu); - tmp_vp1 += tmp_vp2; - prop1 = *prop0_; // S_0(0|x) - prop2 = q*muPropQ[nu]; // q*S_1(a\hat{\nu}|x) - vpContraction(tmp_vp2, prop1, prop2, U_src, mu); - tmp_vp1 += tmp_vp2; - U_src = Complex(1.0,0.0); - U_snk = ci*q*Amu; - vpContraction(tmp_vp2, prop1, prop2, U_src, U_snk, mu); - tmp_vp1 += tmp_vp2; - vpTensor[mu][nu] += tmp_vp1; + tmpProp = Cshift(prop0, nu, -1); // S_0(a\hat{\nu}|x) + Usrc = Complex(1.0,0.0); + Usnk = ci*Amu; + vpContraction(result, propQ, tmpProp, Usrc, Usnk, mu); + Usrc = ci*Anu0; + vpContraction(buf, propQ, tmpProp, Usrc, mu); + result += buf; + vpContraction(buf, prop0, *muPropQ[nu], Usrc, mu); + result += buf; + Usrc = Complex(1.0,0.0); + Usnk = ci*Amu; + vpContraction(buf, prop0, *muPropQ[nu], Usrc, Usnk, mu); + result += buf; + result = q*q*result; + *vpTensor[mu][nu] += result; // Output if necessary if (!par().output.empty()) { - writeVP(writer, tmp_vp1, momphases, + writeVP(result, "Pi_4C_"+std::to_string(mu)+"_"+std::to_string(nu)); } // X - prop1 = q*propQ; // q*S_1(0|x) - prop2 = q*muPropQ[nu]; // q*S_1(a\hat{\nu}|x) - U_src = Complex(1.0,0.0); - vpContraction(tmp_vp1, prop1, prop2, U_src, mu); - vpTensor[mu][nu] += tmp_vp1; + Usrc = Complex(1.0,0.0); + vpContraction(result, propQ, *muPropQ[nu], Usrc, mu); + result = q*q*result; + *vpTensor[mu][nu] += result; // Output if necessary if (!par().output.empty()) { - writeVP(writer, tmp_vp1, momphases, + writeVP(result, "Pi_X_"+std::to_string(mu)+"_"+std::to_string(nu)); } // 2E - prop1 = q*q*propSun; // q^2*S_\Sigma(0|x) - prop2 = Cshift(*prop0_, nu, -1); // S_0(a\hat{\nu}|x) - U_src = Complex(1.0,0.0); - vpContraction(tmp_vp1, prop1, prop2, U_src, mu); - prop1 = *prop0_; // S_0(0|x) - prop2 = q*q*Cshift(propSun, nu, -1); // q^2*S_\Sigma(0|x-a\hat{\nu}) + tmpProp = Cshift(prop0, nu, -1); // S_0(a\hat{\nu}|x) + Usrc = Complex(1.0,0.0); + vpContraction(result, propSun, tmpProp, Usrc, mu); + tmpProp = Cshift(propSun, nu, -1); // S_\Sigma(0|x-a\hat{\nu}) //(Note: = ) - vpContraction(tmp_vp2, prop1, prop2, U_src, mu); - tmp_vp1 += tmp_vp2; - vpTensor[mu][nu] += tmp_vp1; + vpContraction(buf, prop0, tmpProp, Usrc, mu); + result += buf; + result = q*q*result; + *vpTensor[mu][nu] += result; // Output if necessary if (!par().output.empty()) { - writeVP(writer, tmp_vp1, momphases, + writeVP(result, "Pi_2E_"+std::to_string(mu)+"_"+std::to_string(nu)); } // 2T - prop1 = q*q*propTad; // q^2*S_T(0|x) - prop2 = Cshift(*prop0_, nu, -1); // S_0(a\hat{\nu}|x) - U_src = Complex(1.0,0.0); - vpContraction(tmp_vp1, prop1, prop2, U_src, mu); - prop1 = *prop0_; // S_0(0|x) - prop2 = q*q*Cshift(propTad, nu, -1); // q^2*S_T(0|x-a\hat{\nu}) - vpContraction(tmp_vp2, prop1, prop2, U_src, mu); - tmp_vp1 += tmp_vp2; - vpTensor[mu][nu] += tmp_vp1; + tmpProp = Cshift(prop0, nu, -1); // S_0(a\hat{\nu}|x) + Usrc = Complex(1.0,0.0); + vpContraction(result, propTad, tmpProp, Usrc, mu); + tmpProp = Cshift(propTad, nu, -1); // S_T(0|x-a\hat{\nu}) + vpContraction(buf, prop0, tmpProp, Usrc, mu); + result += buf; + result = q*q*result; + *vpTensor[mu][nu] += result; // Output if necessary if (!par().output.empty()) { - writeVP(writer, tmp_vp1, momphases, + writeVP(result, "Pi_2T_"+std::to_string(mu)+"_"+std::to_string(nu)); } // Output full VP if necessary if (!par().output.empty()) { - writeVP(writer, vpTensor[mu][nu], momphases, + writeVP(*vpTensor[mu][nu], "Pi_"+std::to_string(mu)+"_"+std::to_string(nu)); } } } - if (!par().output.empty()) +} + +void TScalarVP::makeCaches(void) +{ + envGetTmp(ScalarField, buf); + + if ( (!par().output.empty()) && (!momPhasesDone_) ) { + LOG(Message) << "Caching phases for momentum projections..." + << std::endl; + std::vector &l = env().getGrid()->_fdimensions; + Complex ci(0.0,1.0); + + // Calculate phase factors for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - if (env().getGrid()->IsBoss()) + std::vector mom = strToVec(par().outputMom[i_p]); + auto &momph_ip = envGet(ScalarField, momPhaseName_[i_p]); + momph_ip = zero; + for (unsigned int j = 0; j < env().getNd()-1; ++j) { - delete writer[i_p]; + Real twoPiL = M_PI*2./l[j]; + LatticeCoordinate(buf, j); + buf = mom[j]*twoPiL*buf; + momph_ip = momph_ip + buf; } + momph_ip = exp(-ci*momph_ip); + momPhase_.push_back(&momph_ip); } } } @@ -419,38 +438,40 @@ void TScalarVP::vpContraction(ScalarField &vp, vp = 2.0*real(vp); } -void TScalarVP::writeVP(const std::vector &writers, const ScalarField &vp, - const std::vector &momphases, std::string dsetName) +void TScalarVP::writeVP(const ScalarField &vp, std::string dsetName) { std::vector vecBuf; std::vector result; - ScalarField vpPhase(env().getGrid()); + envGetTmp(ScalarField, buf); - for (unsigned int i_p = 0; i_p < momphases.size(); ++i_p) + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - vpPhase = vp*momphases[i_p]; - sliceSum(vpPhase, vecBuf, Tp); + std::vector mom = strToVec(par().outputMom[i_p]); + std::string filename = par().output + "_" + + std::to_string(mom[0]) + + std::to_string(mom[1]) + + std::to_string(mom[2]); + buf = vp*(*momPhase_[i_p]); + sliceSum(buf, vecBuf, Tp); result.resize(vecBuf.size()); for (unsigned int t = 0; t < vecBuf.size(); ++t) { result[t] = TensorRemove(vecBuf[t]); } - if (env().getGrid()->IsBoss()) - { - write(*writers[i_p], dsetName, result); - } + saveResult(filename, dsetName, result); } } void TScalarVP::momD1(ScalarField &s, FFT &fft) { - EmField &A = *env().getObject(par().emField); - ScalarField buf(env().getGrid()), result(env().getGrid()), - Amu(env().getGrid()); + auto &A = envGet(EmField, par().emField); Complex ci(0.0,1.0); - result = zero; + envGetTmp(ScalarField, buf); + envGetTmp(ScalarField, result); + envGetTmp(ScalarField, Amu); + result = zero; for (unsigned int mu = 0; mu < env().getNd(); ++mu) { Amu = peekLorentz(A, mu); diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index 564a7f39..fe351f05 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -8,7 +8,7 @@ BEGIN_HADRONS_NAMESPACE /****************************************************************************** - * ScalarVP * + * Scalar vacuum polarisation * ******************************************************************************/ BEGIN_MODULE_NAMESPACE(MScalar) @@ -36,11 +36,13 @@ public: // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); +protected: // setup virtual void setup(void); // execution virtual void execute(void); private: + void makeCaches(void); // conserved vector two-point contraction void vpContraction(ScalarField &vp, ScalarField &prop_0_x, ScalarField &prop_nu_x, @@ -50,22 +52,22 @@ private: ScalarField &prop_0_x, ScalarField &prop_nu_x, TComplex u_src, int mu); // write momentum-projected vacuum polarisation to file(s) - void writeVP(const std::vector &writers, - const ScalarField &vp, - const std::vector &momphases, - std::string dsetName); + void writeVP(const ScalarField &vp, std::string dsetName); // momentum-space Delta_1 insertion void momD1(ScalarField &s, FFT &fft); private: + bool momPhasesDone_; std::string freeMomPropName_, GFSrcName_, prop0Name_, propQName_, - propSunName_, propTadName_; - std::vector phaseName_, muPropQName_; + propSunName_, propTadName_, + fftName_; + std::vector phaseName_, muPropQName_, + momPhaseName_; std::vector > vpTensorName_; - ScalarField *freeMomProp_, *GFSrc_, - *prop0_; - std::vector phase_; - EmField *A; + // ScalarField *freeMomProp_, *GFSrc_, + // *prop0_; + std::vector phase_, momPhase_; + // EmField *A; }; MODULE_REGISTER_NS(ScalarVP, TScalarVP, MScalar); diff --git a/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc b/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc index 17dd1abe..284b3f6c 100644 --- a/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc +++ b/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc @@ -37,39 +37,58 @@ void TVPCounterTerms::setup(void) { phaseName_.push_back("_shiftphase_" + std::to_string(mu)); } - GFSrcName_ = "_" + getName() + "_DinvSrc"; - phatsqName_ = "_" + getName() + "_pHatSquared"; + GFSrcName_ = getName() + "_DinvSrc"; + phatsqName_ = getName() + "_pHatSquared"; prop0Name_ = getName() + "_freeProp"; twoscalarName_ = getName() + "_2scalarProp"; twoscalarVertexName_ = getName() + "_2scalarProp_withvertex"; psquaredName_ = getName() + "_psquaredProp"; - env().registerLattice(freeMomPropName_); + if (!par().output.empty()) + { + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + momPhaseName_.push_back("_momentumphase_" + std::to_string(i_p)); + } + } + + envCreateLat(ScalarField, freeMomPropName_); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { - env().registerLattice(phaseName_[mu]); + envCreateLat(ScalarField, phaseName_[mu]); } - env().registerLattice(phatsqName_); - env().registerLattice(GFSrcName_); - env().registerLattice(prop0Name_); - env().registerLattice(twoscalarName_); - env().registerLattice(twoscalarVertexName_); - env().registerLattice(psquaredName_); + envCreateLat(ScalarField, phatsqName_); + envCreateLat(ScalarField, GFSrcName_); + envCreateLat(ScalarField, prop0Name_); + envCreateLat(ScalarField, twoscalarName_); + envCreateLat(ScalarField, twoscalarVertexName_); + envCreateLat(ScalarField, psquaredName_); + if (!par().output.empty()) + { + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + envCacheLat(ScalarField, momPhaseName_[i_p]); + } + } + envTmpLat(ScalarField, "buf"); + envTmpLat(ScalarField, "tmp_vp"); + envTmpLat(ScalarField, "vpPhase"); } // execution /////////////////////////////////////////////////////////////////// void TVPCounterTerms::execute(void) { - ScalarField &source = *env().getObject(par().source); + auto &source = envGet(ScalarField, par().source); Complex ci(0.0,1.0); FFT fft(env().getGrid()); - ScalarField buf(env().getGrid()), tmp_vp(env().getGrid()); + envGetTmp(ScalarField, buf); + envGetTmp(ScalarField, tmp_vp); // Momentum-space free scalar propagator - ScalarField &G = *env().createLattice(freeMomPropName_); + auto &G = envGet(ScalarField, freeMomPropName_); SIMPL::MomentumSpacePropagator(G, par().mass); // Phases and hat{p}^2 - ScalarField &phatsq = *env().createLattice(phatsqName_); + auto &phatsq = envGet(ScalarField, phatsqName_); std::vector &l = env().getGrid()->_fdimensions; LOG(Message) << "Calculating shift phases..." << std::endl; @@ -77,28 +96,29 @@ void TVPCounterTerms::execute(void) for (unsigned int mu = 0; mu < env().getNd(); ++mu) { Real twoPiL = M_PI*2./l[mu]; - - phase_.push_back(env().createLattice(phaseName_[mu])); + auto &phmu = envGet(ScalarField, phaseName_[mu]); + LatticeCoordinate(buf, mu); - *(phase_[mu]) = exp(ci*twoPiL*buf); + phmu = exp(ci*twoPiL*buf); + phase_.push_back(&phmu); buf = 2.*sin(.5*twoPiL*buf); phatsq = phatsq + buf*buf; } // G*F*src - ScalarField &GFSrc = *env().createLattice(GFSrcName_); + auto &GFSrc = envGet(ScalarField, GFSrcName_); fft.FFT_all_dim(GFSrc, source, FFT::forward); GFSrc = G*GFSrc; // Position-space free scalar propagator - ScalarField &prop0 = *env().createLattice(prop0Name_); + auto &prop0 = envGet(ScalarField, prop0Name_); prop0 = GFSrc; fft.FFT_all_dim(prop0, prop0, FFT::backward); // Propagators for counter-terms - ScalarField &twoscalarProp = *env().createLattice(twoscalarName_); - ScalarField &twoscalarVertexProp = *env().createLattice(twoscalarVertexName_); - ScalarField &psquaredProp = *env().createLattice(psquaredName_); + auto &twoscalarProp = envGet(ScalarField, twoscalarName_); + auto &twoscalarVertexProp = envGet(ScalarField, twoscalarVertexName_); + auto &psquaredProp = envGet(ScalarField, psquaredName_); twoscalarProp = G*GFSrc; fft.FFT_all_dim(twoscalarProp, twoscalarProp, FFT::backward); @@ -115,12 +135,7 @@ void TVPCounterTerms::execute(void) psquaredProp = G*phatsq*GFSrc; fft.FFT_all_dim(psquaredProp, psquaredProp, FFT::backward); - // Open output files if necessary - std::vector vecBuf; - std::vector result; - ScalarField vpPhase(env().getGrid()); - std::vector writer; - std::vector momphases; + // Prepare output files if necessary if (!par().output.empty()) { LOG(Message) << "Preparing output files..." << std::endl; @@ -131,29 +146,21 @@ void TVPCounterTerms::execute(void) // Open output files std::string filename = par().output + "_" + std::to_string(mom[0]) + std::to_string(mom[1]) - + std::to_string(mom[2]) - + "." + - std::to_string(env().getTrajectory()); - - if (env().getGrid()->IsBoss()) - { - CorrWriter *writer_i = new CorrWriter(filename); - writer.push_back(writer_i); - - write(*writer[i_p], "mass", par().mass); - } + + std::to_string(mom[2]); + saveResult(filename, "mass", par().mass); // Calculate phase factors - vpPhase = Complex(1.0,0.0); + auto &momph_ip = envGet(ScalarField, momPhaseName_[i_p]); + momph_ip = Complex(1.0,0.0); for (unsigned int j = 0; j < env().getNd()-1; ++j) { for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) { - vpPhase = vpPhase*(*phase_[j]); + momph_ip = momph_ip*(*phase_[j]); } } - vpPhase = adj(vpPhase); - momphases.push_back(vpPhase); + momph_ip = adj(momph_ip); + momPhase_.push_back(&momph_ip); } } @@ -171,22 +178,7 @@ void TVPCounterTerms::execute(void) // Output if necessary if (!par().output.empty()) { - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) - { - vpPhase = tmp_vp*momphases[i_p]; - sliceSum(vpPhase, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - if (env().getGrid()->IsBoss()) - { - write(*writer[i_p], - "NoVertex_"+std::to_string(mu)+"_"+std::to_string(nu), - result); - } - } + writeVP(tmp_vp, "NoVertex_"+std::to_string(mu)+"_"+std::to_string(nu)); } // Three-scalar loop (tadpole vertex) @@ -197,22 +189,7 @@ void TVPCounterTerms::execute(void) // Output if necessary if (!par().output.empty()) { - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) - { - vpPhase = tmp_vp*momphases[i_p]; - sliceSum(vpPhase, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - if (env().getGrid()->IsBoss()) - { - write(*writer[i_p], - "TadVertex_"+std::to_string(mu)+"_"+std::to_string(nu), - result); - } - } + writeVP(tmp_vp, "TadVertex_"+std::to_string(mu)+"_"+std::to_string(nu)); } // Three-scalar loop (hat{p}^2 insertion) @@ -223,35 +200,32 @@ void TVPCounterTerms::execute(void) // Output if necessary if (!par().output.empty()) { - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) - { - vpPhase = tmp_vp*momphases[i_p]; - sliceSum(vpPhase, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - if (env().getGrid()->IsBoss()) - { - write(*writer[i_p], - "pSquaredInsertion_"+std::to_string(mu)+"_"+std::to_string(nu), - result); - } - } - } - } - } - - // Close output files if necessary - if (!par().output.empty()) - { - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) - { - if (env().getGrid()->IsBoss()) - { - delete writer[i_p]; + writeVP(tmp_vp, "pSquaredInsertion_"+std::to_string(mu)+"_"+std::to_string(nu)); } } } } + +void TVPCounterTerms::writeVP(const ScalarField &vp, std::string dsetName) +{ + std::vector vecBuf; + std::vector result; + envGetTmp(ScalarField, vpPhase); + + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + std::vector mom = strToVec(par().outputMom[i_p]); + std::string filename = par().output + "_" + + std::to_string(mom[0]) + + std::to_string(mom[1]) + + std::to_string(mom[2]); + vpPhase = vp*(*momPhase_[i_p]); + sliceSum(vpPhase, vecBuf, Tp); + result.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + result[t] = TensorRemove(vecBuf[t]); + } + saveResult(filename, dsetName, result); + } +} diff --git a/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp b/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp index 6bd6db8e..634206a6 100644 --- a/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp +++ b/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp @@ -34,16 +34,19 @@ public: // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); +protected: // setup virtual void setup(void); // execution virtual void execute(void); +private: + void writeVP(const ScalarField &vp, std::string dsetName); private: std::string freeMomPropName_, GFSrcName_, phatsqName_, prop0Name_, twoscalarName_, twoscalarVertexName_, psquaredName_, psquaredVertexName_; - std::vector phaseName_; - std::vector phase_; + std::vector phaseName_, momPhaseName_; + std::vector phase_, momPhase_; }; MODULE_REGISTER_NS(VPCounterTerms, TVPCounterTerms, MScalar); diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index c149e520..9f642c5b 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -10,7 +10,7 @@ modules_cc =\ Modules/MScalar/ChargedProp.cc \ Modules/MScalar/FreeProp.cc \ Modules/MScalar/ScalarVP.cc \ - Modules/MScalar/VPCounterTerms.cc + Modules/MScalar/VPCounterTerms.cc \ Modules/MIO/LoadNersc.cc modules_hpp =\ From cdf550845fe96e73c8ca5192e4d86d158507eace Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 26 Jan 2018 21:25:20 +0000 Subject: [PATCH 046/267] QedFVol: Fix bugs in StochEm.cc and ChargedProp.cc (still only works without MPI). --- extras/Hadrons/Modules/MGauge/StochEm.cc | 8 ++-- extras/Hadrons/Modules/MGauge/StochEm.hpp | 2 + extras/Hadrons/Modules/MScalar/ChargedProp.cc | 40 ++++++++--------- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 43 +++++++++++-------- extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 3 +- 5 files changed, 51 insertions(+), 45 deletions(-) diff --git a/extras/Hadrons/Modules/MGauge/StochEm.cc b/extras/Hadrons/Modules/MGauge/StochEm.cc index cea60e84..1c59edee 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.cc +++ b/extras/Hadrons/Modules/MGauge/StochEm.cc @@ -57,10 +57,8 @@ std::vector TStochEm::getOutput(void) // setup /////////////////////////////////////////////////////////////////////// void TStochEm::setup(void) { - if (!env().hasCreatedObject("_" + getName() + "_weight")) - { - envCacheLat(EmComp, "_" + getName() + "_weight"); - } + weightDone_ = env().hasCreatedObject("_" + getName() + "_weight"); + envCacheLat(EmComp, "_" + getName() + "_weight"); envCreateLat(EmField, getName()); } @@ -73,7 +71,7 @@ void TStochEm::execute(void) auto &a = envGet(EmField, getName()); auto &w = envGet(EmComp, "_" + getName() + "_weight"); - if (!env().hasCreatedObject("_" + getName() + "_weight")) + if (!weightDone_) { LOG(Message) << "Caching stochastic EM potential weight (gauge: " << par().gauge << ", zero-mode scheme: " diff --git a/extras/Hadrons/Modules/MGauge/StochEm.hpp b/extras/Hadrons/Modules/MGauge/StochEm.hpp index e3e059de..fa1b6f42 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.hpp +++ b/extras/Hadrons/Modules/MGauge/StochEm.hpp @@ -66,6 +66,8 @@ protected: virtual void setup(void); // execution virtual void execute(void); +private: + bool weightDone_; }; MODULE_REGISTER_NS(StochEm, TStochEm, MGauge); diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index 5e65c43e..206734ce 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -117,26 +117,25 @@ void TChargedProp::execute(void) envGetTmp(ScalarField, buf); // -G*momD1*G*F*Src (momD1 = F*D1*Finv) - buf = GFSrc; - momD1(buf, fft); - buf = -G*buf; - fft.FFT_dim(propQ, buf, env().getNd()-1, FFT::backward); + propQ = GFSrc; + momD1(propQ, fft); + propQ = -G*propQ; + propSun = -propQ; + fft.FFT_dim(propQ, propQ, env().getNd()-1, FFT::backward); // G*momD1*G*momD1*G*F*Src (here buf = G*momD1*G*F*Src) - buf = -buf; - momD1(buf, fft); - propSun = G*buf; + momD1(propSun, fft); + propSun = G*propSun; fft.FFT_dim(propSun, propSun, env().getNd()-1, FFT::backward); // -G*momD2*G*F*Src (momD2 = F*D2*Finv) - buf = GFSrc; - momD2(buf, fft); - buf = -G*buf; - fft.FFT_dim(propTad, buf, env().getNd()-1, FFT::backward); + propTad = GFSrc; + momD2(propTad, fft); + propTad = -G*propTad; + fft.FFT_dim(propTad, propTad, env().getNd()-1, FFT::backward); // full charged scalar propagator - buf = GFSrc; - fft.FFT_dim(buf, buf, env().getNd()-1, FFT::backward); + fft.FFT_dim(buf, GFSrc, env().getNd()-1, FFT::backward); prop = buf + q*propQ + q*q*propSun + q*q*propTad; // OUTPUT IF NECESSARY @@ -189,13 +188,14 @@ void TChargedProp::execute(void) peekSite(site, propTad, whichmom); resultTad[t]=TensorRemove(site); } - saveResult(filename, "charge", q); - saveResult(filename, "mass", par().mass); - saveResult(filename, "prop", result); - saveResult(filename, "prop_0", result0); - saveResult(filename, "prop_Q", resultQ); - saveResult(filename, "prop_Sun", resultSun); - saveResult(filename, "prop_Tad", resultTad); + ResultWriter writer(RESULT_FILE_NAME(filename)); + write(writer, "charge", q); + write(writer, "mass", par().mass); + write(writer, "prop", result); + write(writer, "prop_0", result0); + write(writer, "prop_Q", resultQ); + write(writer, "prop_Sun", resultSun); + write(writer, "prop_Tad", resultTad); } } diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 9a6106eb..6be00fd8 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -236,7 +236,8 @@ void TScalarVP::execute(void) vpTensor.push_back(vpTensor_mu); } - // Prepare output files if necessary + // Open output files if necessary + std::vector writer; if (!par().output.empty()) { LOG(Message) << "Preparing output files..." << std::endl; @@ -247,8 +248,10 @@ void TScalarVP::execute(void) + std::to_string(mom[0]) + std::to_string(mom[1]) + std::to_string(mom[2]); - saveResult(filename, "charge", q); - saveResult(filename, "mass", static_cast(vm().getModule(par().scalarProp))->par().mass); + ResultWriter *writer_i = new ResultWriter(RESULT_FILE_NAME(filename)); + writer.push_back(writer_i); + write(*writer_i, "charge", q); + write(*writer_i, "mass", static_cast(vm().getModule(par().scalarProp))->par().mass); } } @@ -272,7 +275,7 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - writeVP(buf, + writeVP(writer, buf, "Pi_free_"+std::to_string(mu)+"_"+std::to_string(nu)); } @@ -282,7 +285,7 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - writeVP(result, + writeVP(writer, result, "Pi_srcT_"+std::to_string(mu)+"_"+std::to_string(nu)); } @@ -292,7 +295,7 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - writeVP(result, + writeVP(writer, result, "Pi_snkT_"+std::to_string(mu)+"_"+std::to_string(nu)); } @@ -306,7 +309,7 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - writeVP(result, + writeVP(writer, result, "Pi_S_"+std::to_string(mu)+"_"+std::to_string(nu)); } @@ -329,7 +332,7 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - writeVP(result, + writeVP(writer, result, "Pi_4C_"+std::to_string(mu)+"_"+std::to_string(nu)); } @@ -341,7 +344,7 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - writeVP(result, + writeVP(writer, result, "Pi_X_"+std::to_string(mu)+"_"+std::to_string(nu)); } @@ -358,7 +361,7 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - writeVP(result, + writeVP(writer, result, "Pi_2E_"+std::to_string(mu)+"_"+std::to_string(nu)); } @@ -374,18 +377,25 @@ void TScalarVP::execute(void) // Output if necessary if (!par().output.empty()) { - writeVP(result, + writeVP(writer, result, "Pi_2T_"+std::to_string(mu)+"_"+std::to_string(nu)); } // Output full VP if necessary if (!par().output.empty()) { - writeVP(*vpTensor[mu][nu], + writeVP(writer, *vpTensor[mu][nu], "Pi_"+std::to_string(mu)+"_"+std::to_string(nu)); } } } + if (!par().output.empty()) + { + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + delete writer[i_p]; + } + } } void TScalarVP::makeCaches(void) @@ -438,7 +448,7 @@ void TScalarVP::vpContraction(ScalarField &vp, vp = 2.0*real(vp); } -void TScalarVP::writeVP(const ScalarField &vp, std::string dsetName) +void TScalarVP::writeVP(std::vector &writer, const ScalarField &vp, std::string dsetName) { std::vector vecBuf; std::vector result; @@ -446,11 +456,6 @@ void TScalarVP::writeVP(const ScalarField &vp, std::string dsetName) for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - std::vector mom = strToVec(par().outputMom[i_p]); - std::string filename = par().output + "_" - + std::to_string(mom[0]) - + std::to_string(mom[1]) - + std::to_string(mom[2]); buf = vp*(*momPhase_[i_p]); sliceSum(buf, vecBuf, Tp); result.resize(vecBuf.size()); @@ -458,7 +463,7 @@ void TScalarVP::writeVP(const ScalarField &vp, std::string dsetName) { result[t] = TensorRemove(vecBuf[t]); } - saveResult(filename, dsetName, result); + write(*writer[i_p], dsetName, result); } } diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index fe351f05..0839f654 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -52,7 +52,8 @@ private: ScalarField &prop_0_x, ScalarField &prop_nu_x, TComplex u_src, int mu); // write momentum-projected vacuum polarisation to file(s) - void writeVP(const ScalarField &vp, std::string dsetName); + void writeVP(std::vector &writer, const ScalarField &vp, + std::string dsetName); // momentum-space Delta_1 insertion void momD1(ScalarField &s, FFT &fft); private: From 4e0cf0cc286934821eaa333e2b1f640fb54e2b66 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Sat, 27 Jan 2018 15:15:25 +0000 Subject: [PATCH 047/267] QedFVol: Fix bug in ScalarVP.cc due to double use of temporary object. Still getting mpi3 errors when configured with enable-comms=mpi[-auto]. --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index 6be00fd8..a5e00ee0 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -270,17 +270,19 @@ void TScalarVP::execute(void) tmpProp = Cshift(prop0, nu, -1); // S_0(0|x-a\hat{\nu}) // = S_0(a\hat{\nu}|x) Usrc = Complex(1.0,0.0); - vpContraction(buf, prop0, tmpProp, Usrc, mu); - *vpTensor[mu][nu] = buf; + vpContraction(result, prop0, tmpProp, Usrc, mu); + *vpTensor[mu][nu] = result; // Output if necessary if (!par().output.empty()) { - writeVP(writer, buf, + writeVP(writer, result, "Pi_free_"+std::to_string(mu)+"_"+std::to_string(nu)); } + tmpProp = result; // Just using tmpProp as a temporary ScalarField + // here (buf is modified by calls to writeVP()) // srcT - result = buf * (-0.5)*q*q*Anu0*Anu0; + result = tmpProp * (-0.5)*q*q*Anu0*Anu0; *vpTensor[mu][nu] += result; // Output if necessary if (!par().output.empty()) @@ -290,7 +292,7 @@ void TScalarVP::execute(void) } // snkT - result = buf * (-0.5)*q*q*Amu*Amu; + result = tmpProp * (-0.5)*q*q*Amu*Amu; *vpTensor[mu][nu] += result; // Output if necessary if (!par().output.empty()) From ac3b0ebc58cbccac051134a06c20686e20c241fd Mon Sep 17 00:00:00 2001 From: James Harrison Date: Thu, 1 Feb 2018 12:31:32 +0000 Subject: [PATCH 048/267] QedFVol: New structure for ChargedProp output files --- extras/Hadrons/Modules/MScalar/ChargedProp.cc | 83 ++++++++----------- .../Hadrons/Modules/MScalar/ChargedProp.hpp | 20 +++++ 2 files changed, 56 insertions(+), 47 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index 206734ce..5f49c06e 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -114,7 +114,7 @@ void TChargedProp::execute(void) auto &G = envGet(ScalarField, freeMomPropName_); auto &fft = envGet(FFT, fftName_); double q = par().charge; - envGetTmp(ScalarField, buf); + envGetTmp(ScalarField, buf); // -G*momD1*G*F*Src (momD1 = F*D1*Finv) propQ = GFSrc; @@ -141,62 +141,52 @@ void TChargedProp::execute(void) // OUTPUT IF NECESSARY if (!par().output.empty()) { + Result result; + TComplex site; + std::vector siteCoor; + + LOG(Message) << "Saving momentum-projected propagator to '" + << RESULT_FILE_NAME(par().output) << "'..." + << std::endl; + result.projection.resize(par().outputMom.size()); + result.lattice_size = env().getGrid()->_fdimensions; + result.mass = par().mass; + result.charge = q; + siteCoor.resize(env().getNd()); for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - std::vector mom = strToVec(par().outputMom[i_p]); - std::string filename = par().output + "_" - + std::to_string(mom[0]) - + std::to_string(mom[1]) - + std::to_string(mom[2]); + result.projection[i_p].momentum = strToVec(par().outputMom[i_p]); - LOG(Message) << "Saving (" << par().outputMom[i_p] - << ") momentum projection to '" << filename << "'..." - << std::endl; + LOG(Message) << "Calculating (" << par().outputMom[i_p] + << ") momentum projection" << std::endl; - std::vector result, result0, resultQ, resultSun, resultTad; - result.resize(env().getGrid()->_fdimensions[env().getNd()-1]); - result0.resize(result.size()); - resultQ.resize(result.size()); - resultSun.resize(result.size()); - resultTad.resize(result.size()); - - TComplex site; - std::vector whichmom; - whichmom.resize(env().getNd()); + result.projection[i_p].corr_0.resize(env().getGrid()->_fdimensions[env().getNd()-1]); + result.projection[i_p].corr.resize(env().getGrid()->_fdimensions[env().getNd()-1]); + result.projection[i_p].corr_Q.resize(env().getGrid()->_fdimensions[env().getNd()-1]); + result.projection[i_p].corr_Sun.resize(env().getGrid()->_fdimensions[env().getNd()-1]); + result.projection[i_p].corr_Tad.resize(env().getGrid()->_fdimensions[env().getNd()-1]); for (unsigned int j = 0; j < env().getNd()-1; ++j) { - whichmom[j] = mom[j]; + siteCoor[j] = result.projection[i_p].momentum[j]; } - for (unsigned int t = 0; t < result.size(); ++t) + for (unsigned int t = 0; t < result.projection[i_p].corr.size(); ++t) { - whichmom[env().getNd()-1] = t; - // Write full propagator - peekSite(site, prop, whichmom); - result[t]=TensorRemove(site); - // Write free propagator - peekSite(site, buf, whichmom); - result0[t]=TensorRemove(site); - // Write propagator O(q) term - peekSite(site, propQ, whichmom); - resultQ[t]=TensorRemove(site); - // Write propagator sunset term - peekSite(site, propSun, whichmom); - resultSun[t]=TensorRemove(site); - // Write propagator tadpole term - peekSite(site, propTad, whichmom); - resultTad[t]=TensorRemove(site); + siteCoor[env().getNd()-1] = t; + peekSite(site, prop, siteCoor); + result.projection[i_p].corr[t]=TensorRemove(site); + peekSite(site, buf, siteCoor); + result.projection[i_p].corr_0[t]=TensorRemove(site); + peekSite(site, propQ, siteCoor); + result.projection[i_p].corr_Q[t]=TensorRemove(site); + peekSite(site, propSun, siteCoor); + result.projection[i_p].corr_Sun[t]=TensorRemove(site); + peekSite(site, propTad, siteCoor); + result.projection[i_p].corr_Tad[t]=TensorRemove(site); } - ResultWriter writer(RESULT_FILE_NAME(filename)); - write(writer, "charge", q); - write(writer, "mass", par().mass); - write(writer, "prop", result); - write(writer, "prop_0", result0); - write(writer, "prop_Q", resultQ); - write(writer, "prop_Sun", resultSun); - write(writer, "prop_Tad", resultTad); } + saveResult(par().output, "prop", result); } std::vector mask(env().getNd(),1); @@ -222,9 +212,8 @@ void TChargedProp::makeCaches(void) } if (!GFSrcDone_) { - FFT fft(env().getGrid()); auto &source = envGet(ScalarField, par().source); - + LOG(Message) << "Caching G*F*src..." << std::endl; fft.FFT_all_dim(GFSrc, source, FFT::forward); GFSrc = freeMomProp*GFSrc; diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp index 3a711361..810ebcaa 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp @@ -57,6 +57,26 @@ public: SCALAR_TYPE_ALIASES(SIMPL,); typedef PhotonR::GaugeField EmField; typedef PhotonR::GaugeLinkField EmComp; + class Projection: Serializable + { + public: + GRID_SERIALIZABLE_CLASS_MEMBERS(Projection, + std::vector, momentum, + std::vector, corr, + std::vector, corr_0, + std::vector, corr_Q, + std::vector, corr_Sun, + std::vector, corr_Tad); + }; + class Result: Serializable + { + public: + GRID_SERIALIZABLE_CLASS_MEMBERS(Result, + std::vector, lattice_size, + double, mass, + double, charge, + std::vector, projection); + }; public: // constructor TChargedProp(const std::string name); From 5f85473d6b04bc60feae1475798c9f13b4ea92d1 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Thu, 1 Feb 2018 12:46:39 +0000 Subject: [PATCH 049/267] QedFVol: Move Projection class into Result class --- .../Hadrons/Modules/MScalar/ChargedProp.hpp | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp index 810ebcaa..baa8c20f 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp @@ -57,20 +57,20 @@ public: SCALAR_TYPE_ALIASES(SIMPL,); typedef PhotonR::GaugeField EmField; typedef PhotonR::GaugeLinkField EmComp; - class Projection: Serializable - { - public: - GRID_SERIALIZABLE_CLASS_MEMBERS(Projection, - std::vector, momentum, - std::vector, corr, - std::vector, corr_0, - std::vector, corr_Q, - std::vector, corr_Sun, - std::vector, corr_Tad); - }; class Result: Serializable { public: + class Projection: Serializable + { + public: + GRID_SERIALIZABLE_CLASS_MEMBERS(Projection, + std::vector, momentum, + std::vector, corr, + std::vector, corr_0, + std::vector, corr_Q, + std::vector, corr_Sun, + std::vector, corr_Tad); + }; GRID_SERIALIZABLE_CLASS_MEMBERS(Result, std::vector, lattice_size, double, mass, From f37ed4958be6d08e2e2538a9aa9ea91afb416a94 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 2 Feb 2018 11:56:51 +0000 Subject: [PATCH 050/267] Implement IR improvement, with coefficients set in input file. --- extras/Hadrons/Modules/MGauge/StochEm.cc | 3 ++- extras/Hadrons/Modules/MGauge/StochEm.hpp | 2 +- extras/Hadrons/Modules/MGauge/UnitEm.cc | 2 +- lib/qcd/action/gauge/Photon.h | 32 +++++------------------ 4 files changed, 11 insertions(+), 28 deletions(-) diff --git a/extras/Hadrons/Modules/MGauge/StochEm.cc b/extras/Hadrons/Modules/MGauge/StochEm.cc index 1c59edee..4c18b968 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.cc +++ b/extras/Hadrons/Modules/MGauge/StochEm.cc @@ -67,7 +67,8 @@ void TStochEm::execute(void) { LOG(Message) << "Generating stochastic EM potential..." << std::endl; - PhotonR photon(par().gauge, par().zmScheme, par().improvement); + std::vector improvements = strToVec(par().improvement); + PhotonR photon(par().gauge, par().zmScheme, improvements); auto &a = envGet(EmField, getName()); auto &w = envGet(EmComp, "_" + getName() + "_weight"); diff --git a/extras/Hadrons/Modules/MGauge/StochEm.hpp b/extras/Hadrons/Modules/MGauge/StochEm.hpp index fa1b6f42..11519b52 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.hpp +++ b/extras/Hadrons/Modules/MGauge/StochEm.hpp @@ -45,7 +45,7 @@ public: GRID_SERIALIZABLE_CLASS_MEMBERS(StochEmPar, PhotonR::Gauge, gauge, PhotonR::ZmScheme, zmScheme, - Integer, improvement); + std::string, improvement); }; class TStochEm: public Module diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.cc b/extras/Hadrons/Modules/MGauge/UnitEm.cc index a19161ac..e23840f5 100644 --- a/extras/Hadrons/Modules/MGauge/UnitEm.cc +++ b/extras/Hadrons/Modules/MGauge/UnitEm.cc @@ -61,7 +61,7 @@ void TUnitEm::setup(void) // execution /////////////////////////////////////////////////////////////////// void TUnitEm::execute(void) { - PhotonR photon(0, 0, 0); // Just chose arbitrary input values here + PhotonR photon(0, 0, std::vector()); // Just chose arbitrary input values here auto &a = envGet(EmField, getName()); LOG(Message) << "Generating unit EM potential..." << std::endl; photon.UnitField(a); diff --git a/lib/qcd/action/gauge/Photon.h b/lib/qcd/action/gauge/Photon.h index e0329bed..d91a9980 100644 --- a/lib/qcd/action/gauge/Photon.h +++ b/lib/qcd/action/gauge/Photon.h @@ -60,7 +60,7 @@ namespace QCD{ GRID_SERIALIZABLE_ENUM(Gauge, undef, feynman, 1, coulomb, 2, landau, 3); GRID_SERIALIZABLE_ENUM(ZmScheme, undef, qedL, 1, qedTL, 2); public: - Photon(Gauge gauge, ZmScheme zmScheme, Integer improvement); + Photon(Gauge gauge, ZmScheme zmScheme, std::vector improvements); virtual ~Photon(void) = default; void FreePropagator(const GaugeField &in, GaugeField &out); void MomentumSpacePropagator(const GaugeField &in, GaugeField &out); @@ -75,14 +75,14 @@ namespace QCD{ private: Gauge gauge_; ZmScheme zmScheme_; - Integer improvement_; + std::vector improvement_; }; typedef Photon PhotonR; template - Photon::Photon(Gauge gauge, ZmScheme zmScheme, Integer improvement) - : gauge_(gauge), zmScheme_(zmScheme), improvement_(improvement) + Photon::Photon(Gauge gauge, ZmScheme zmScheme, std::vector improvements) + : gauge_(gauge), zmScheme_(zmScheme), improvement_(improvements) {} template @@ -157,29 +157,11 @@ namespace QCD{ out = where(spNrm == Integer(0), 0.*out, out); // IR improvement - switch (improvement_) + for(int i = 0; i < improvement_.size(); i++) { - case 0: - break; - case 1: - { - Real f1 = sqrt(2.48560548); - out = where(spNrm == Integer(1), f1*out, out); - break; - } - case 2: - { - Real f1 = sqrt(4.93053406); - Real f2 = sqrt(-1.44492857); - out = where(spNrm == Integer(1), f1*out, out); - out = where(spNrm == Integer(2), f2*out, out); - break; - } - default: - break; + Real f = sqrt(improvement_[i]+1); + out = where(spNrm == Integer(i+1), f*out, out); } - - break; } default: break; From b6fe03eb26a8725d4f52d3215104ea9743c071b0 Mon Sep 17 00:00:00 2001 From: Vera Guelpers Date: Fri, 2 Feb 2018 15:29:38 +0000 Subject: [PATCH 051/267] BugFix: Now the stochatic EM potential weight is generated when calling for the first time --- extras/Hadrons/Modules/MGauge/StochEm.cc | 6 ++++-- extras/Hadrons/Modules/MGauge/StochEm.hpp | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/extras/Hadrons/Modules/MGauge/StochEm.cc b/extras/Hadrons/Modules/MGauge/StochEm.cc index 21b7f626..cfbd28ef 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.cc +++ b/extras/Hadrons/Modules/MGauge/StochEm.cc @@ -57,9 +57,11 @@ std::vector TStochEm::getOutput(void) // setup /////////////////////////////////////////////////////////////////////// void TStochEm::setup(void) { + create_weight = false; if (!env().hasCreatedObject("_" + getName() + "_weight")) { envCacheLat(EmComp, "_" + getName() + "_weight"); + create_weight = true; } envCreateLat(EmField, getName()); } @@ -67,13 +69,13 @@ void TStochEm::setup(void) // execution /////////////////////////////////////////////////////////////////// void TStochEm::execute(void) { - LOG(Message) << "Generating stochatic EM potential..." << std::endl; + LOG(Message) << "Generating stochastic EM potential..." << std::endl; PhotonR photon(par().gauge, par().zmScheme); auto &a = envGet(EmField, getName()); auto &w = envGet(EmComp, "_" + getName() + "_weight"); - if (!env().hasCreatedObject("_" + getName() + "_weight")) + if (create_weight) { LOG(Message) << "Caching stochatic EM potential weight (gauge: " << par().gauge << ", zero-mode scheme: " diff --git a/extras/Hadrons/Modules/MGauge/StochEm.hpp b/extras/Hadrons/Modules/MGauge/StochEm.hpp index 87b70880..05162443 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.hpp +++ b/extras/Hadrons/Modules/MGauge/StochEm.hpp @@ -60,6 +60,8 @@ public: // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); +private: + bool create_weight; protected: // setup virtual void setup(void); From c5b23c367e86a96605b2048c8f27d05e6d7066aa Mon Sep 17 00:00:00 2001 From: James Harrison Date: Mon, 5 Feb 2018 11:46:33 +0000 Subject: [PATCH 052/267] QedFVol: Fix segmentation fault when multiple propagator modules are used. --- extras/Hadrons/Modules/MScalar/ChargedProp.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/extras/Hadrons/Modules/MScalar/ChargedProp.cc index 5f49c06e..88c3dffd 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.cc @@ -240,6 +240,14 @@ void TChargedProp::makeCaches(void) phase_.push_back(&phmu); } } + else + { + phase_.clear(); + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + phase_.push_back(env().getObject(phaseName_[mu])); + } + } } void TChargedProp::momD1(ScalarField &s, FFT &fft) From 594a262dcc911c5df344ffe0837a91779ddeaaed Mon Sep 17 00:00:00 2001 From: James Harrison Date: Wed, 7 Feb 2018 11:37:01 +0000 Subject: [PATCH 053/267] QedFVol: Remove redundant file Communicator_mpi.cc --- lib/communicator/Communicator_mpi.cc | 251 --------------------------- 1 file changed, 251 deletions(-) delete mode 100644 lib/communicator/Communicator_mpi.cc diff --git a/lib/communicator/Communicator_mpi.cc b/lib/communicator/Communicator_mpi.cc deleted file mode 100644 index e123aaa4..00000000 --- a/lib/communicator/Communicator_mpi.cc +++ /dev/null @@ -1,251 +0,0 @@ - /************************************************************************************* - - Grid physics library, www.github.com/paboyle/Grid - - Source file: ./lib/communicator/Communicator_mpi.cc - - Copyright (C) 2015 - -Author: Peter Boyle - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - See the full license in the file "LICENSE" in the top level distribution directory - *************************************************************************************/ - /* END LEGAL */ -#include -#include -#include -#include - -namespace Grid { - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Info that is setup once and indept of cartesian layout -/////////////////////////////////////////////////////////////////////////////////////////////////// -MPI_Comm CartesianCommunicator::communicator_world; - -// Should error check all MPI calls. -void CartesianCommunicator::Init(int *argc, char ***argv) { - int flag; - int provided; - MPI_Initialized(&flag); // needed to coexist with other libs apparently - if ( !flag ) { - MPI_Init_thread(argc,argv,MPI_THREAD_MULTIPLE,&provided); - if ( provided != MPI_THREAD_MULTIPLE ) { - QCD::WilsonKernelsStatic::Comms = QCD::WilsonKernelsStatic::CommsThenCompute; - } - } - MPI_Comm_dup (MPI_COMM_WORLD,&communicator_world); - ShmInitGeneric(); -} - -CartesianCommunicator::~CartesianCommunicator() -{ - // int MPI_is_finalised; - // MPI_Finalized(&MPI_is_finalised); - if (communicator && !MPI::Is_finalized()) - MPI_Comm_free(&communicator); -} - -void CartesianCommunicator::GlobalSum(uint32_t &u){ - int ierr=MPI_Allreduce(MPI_IN_PLACE,&u,1,MPI_UINT32_T,MPI_SUM,communicator); - assert(ierr==0); -} -void CartesianCommunicator::GlobalSum(uint64_t &u){ - int ierr=MPI_Allreduce(MPI_IN_PLACE,&u,1,MPI_UINT64_T,MPI_SUM,communicator); - assert(ierr==0); -} -void CartesianCommunicator::GlobalXOR(uint32_t &u){ - int ierr=MPI_Allreduce(MPI_IN_PLACE,&u,1,MPI_UINT32_T,MPI_BXOR,communicator); - assert(ierr==0); -} -void CartesianCommunicator::GlobalXOR(uint64_t &u){ - int ierr=MPI_Allreduce(MPI_IN_PLACE,&u,1,MPI_UINT64_T,MPI_BXOR,communicator); - assert(ierr==0); -} -void CartesianCommunicator::GlobalSum(float &f){ - int ierr=MPI_Allreduce(MPI_IN_PLACE,&f,1,MPI_FLOAT,MPI_SUM,communicator); - assert(ierr==0); -} -void CartesianCommunicator::GlobalSumVector(float *f,int N) -{ - int ierr=MPI_Allreduce(MPI_IN_PLACE,f,N,MPI_FLOAT,MPI_SUM,communicator); - assert(ierr==0); -} -void CartesianCommunicator::GlobalSum(double &d) -{ - int ierr = MPI_Allreduce(MPI_IN_PLACE,&d,1,MPI_DOUBLE,MPI_SUM,communicator); - assert(ierr==0); -} -void CartesianCommunicator::GlobalSumVector(double *d,int N) -{ - int ierr = MPI_Allreduce(MPI_IN_PLACE,d,N,MPI_DOUBLE,MPI_SUM,communicator); - assert(ierr==0); -} -void CartesianCommunicator::ShiftedRanks(int dim,int shift,int &source,int &dest) -{ - int ierr=MPI_Cart_shift(communicator,dim,shift,&source,&dest); - assert(ierr==0); -} -int CartesianCommunicator::RankFromProcessorCoor(std::vector &coor) -{ - int rank; - int ierr=MPI_Cart_rank (communicator, &coor[0], &rank); - assert(ierr==0); - return rank; -} -void CartesianCommunicator::ProcessorCoorFromRank(int rank, std::vector &coor) -{ - coor.resize(_ndimension); - int ierr=MPI_Cart_coords (communicator, rank, _ndimension,&coor[0]); - assert(ierr==0); -} - -// Basic Halo comms primitive -void CartesianCommunicator::SendToRecvFrom(void *xmit, - int dest, - void *recv, - int from, - int bytes) -{ - std::vector reqs(0); - SendToRecvFromBegin(reqs,xmit,dest,recv,from,bytes); - SendToRecvFromComplete(reqs); -} - -void CartesianCommunicator::SendRecvPacket(void *xmit, - void *recv, - int sender, - int receiver, - int bytes) -{ - MPI_Status stat; - assert(sender != receiver); - int tag = sender; - if ( _processor == sender ) { - MPI_Send(xmit, bytes, MPI_CHAR,receiver,tag,communicator); - } - if ( _processor == receiver ) { - MPI_Recv(recv, bytes, MPI_CHAR,sender,tag,communicator,&stat); - } -} - -// Basic Halo comms primitive -void CartesianCommunicator::SendToRecvFromBegin(std::vector &list, - void *xmit, - int dest, - void *recv, - int from, - int bytes) -{ - int myrank = _processor; - int ierr; - if ( CommunicatorPolicy == CommunicatorPolicyConcurrent ) { - MPI_Request xrq; - MPI_Request rrq; - - ierr =MPI_Irecv(recv, bytes, MPI_CHAR,from,from,communicator,&rrq); - ierr|=MPI_Isend(xmit, bytes, MPI_CHAR,dest,_processor,communicator,&xrq); - - assert(ierr==0); - list.push_back(xrq); - list.push_back(rrq); - } else { - // Give the CPU to MPI immediately; can use threads to overlap optionally - ierr=MPI_Sendrecv(xmit,bytes,MPI_CHAR,dest,myrank, - recv,bytes,MPI_CHAR,from, from, - communicator,MPI_STATUS_IGNORE); - assert(ierr==0); - } -} -void CartesianCommunicator::SendToRecvFromComplete(std::vector &list) -{ - if ( CommunicatorPolicy == CommunicatorPolicyConcurrent ) { - int nreq=list.size(); - std::vector status(nreq); - int ierr = MPI_Waitall(nreq,&list[0],&status[0]); - assert(ierr==0); - } -} - -void CartesianCommunicator::Barrier(void) -{ - int ierr = MPI_Barrier(communicator); - assert(ierr==0); -} - -void CartesianCommunicator::Broadcast(int root,void* data, int bytes) -{ - int ierr=MPI_Bcast(data, - bytes, - MPI_BYTE, - root, - communicator); - assert(ierr==0); -} -void CartesianCommunicator::AllToAll(int dim,void *in,void *out,uint64_t words,uint64_t bytes) -{ - std::vector row(_ndimension,1); - assert(dim>=0 && dim<_ndimension); - - // Split the communicator - row[dim] = _processors[dim]; - - CartesianCommunicator Comm(row,*this); - Comm.AllToAll(in,out,words,bytes); -} -void CartesianCommunicator::AllToAll(void *in,void *out,uint64_t words,uint64_t bytes) -{ - // MPI is a pain and uses "int" arguments - // 64*64*64*128*16 == 500Million elements of data. - // When 24*4 bytes multiples get 50x 10^9 >>> 2x10^9 Y2K bug. - // (Turns up on 32^3 x 64 Gparity too) - MPI_Datatype object; - int iwords; - int ibytes; - iwords = words; - ibytes = bytes; - assert(words == iwords); // safe to cast to int ? - assert(bytes == ibytes); // safe to cast to int ? - MPI_Type_contiguous(ibytes,MPI_BYTE,&object); - MPI_Type_commit(&object); - MPI_Alltoall(in,iwords,object,out,iwords,object,communicator); - MPI_Type_free(&object); -} - /////////////////////////////////////////////////////// - // Should only be used prior to Grid Init finished. - // Check for this? - /////////////////////////////////////////////////////// -int CartesianCommunicator::RankWorld(void){ - int r; - MPI_Comm_rank(communicator_world,&r); - return r; -} -void CartesianCommunicator::BroadcastWorld(int root,void* data, int bytes) -{ - int ierr= MPI_Bcast(data, - bytes, - MPI_BYTE, - root, - communicator_world); - assert(ierr==0); -} - - - -} - From 9f202782c5da060acc337e247434ed74a916b2cc Mon Sep 17 00:00:00 2001 From: James Harrison Date: Wed, 7 Feb 2018 20:31:50 +0000 Subject: [PATCH 054/267] QedFVol: Change format of scalar VP output files, and save diagrams without charge factors for consistency with ChargedProp module. --- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 171 ++++++++++++-------- extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 31 +++- 2 files changed, 129 insertions(+), 73 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index a5e00ee0..fdb9586e 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -236,22 +236,38 @@ void TScalarVP::execute(void) vpTensor.push_back(vpTensor_mu); } - // Open output files if necessary - std::vector writer; + // Prepare output data structure if necessary + Result outputData; if (!par().output.empty()) { - LOG(Message) << "Preparing output files..." << std::endl; + outputData.projection.resize(par().outputMom.size()); + outputData.lattice_size = env().getGrid()->_fdimensions; + outputData.mass = static_cast(vm().getModule(par().scalarProp))->par().mass; + outputData.charge = q; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - std::vector mom = strToVec(par().outputMom[i_p]); - std::string filename = par().output + "_" - + std::to_string(mom[0]) - + std::to_string(mom[1]) - + std::to_string(mom[2]); - ResultWriter *writer_i = new ResultWriter(RESULT_FILE_NAME(filename)); - writer.push_back(writer_i); - write(*writer_i, "charge", q); - write(*writer_i, "mass", static_cast(vm().getModule(par().scalarProp))->par().mass); + outputData.projection[i_p].momentum = strToVec(par().outputMom[i_p]); + outputData.projection[i_p].pi.resize(env().getNd()); + outputData.projection[i_p].pi_free.resize(env().getNd()); + outputData.projection[i_p].pi_2E.resize(env().getNd()); + outputData.projection[i_p].pi_2T.resize(env().getNd()); + outputData.projection[i_p].pi_S.resize(env().getNd()); + outputData.projection[i_p].pi_4C.resize(env().getNd()); + outputData.projection[i_p].pi_X.resize(env().getNd()); + outputData.projection[i_p].pi_srcT.resize(env().getNd()); + outputData.projection[i_p].pi_snkT.resize(env().getNd()); + for (unsigned int nu = 0; nu < env().getNd(); ++nu) + { + outputData.projection[i_p].pi[nu].resize(env().getNd()); + outputData.projection[i_p].pi_free[nu].resize(env().getNd()); + outputData.projection[i_p].pi_2E[nu].resize(env().getNd()); + outputData.projection[i_p].pi_2T[nu].resize(env().getNd()); + outputData.projection[i_p].pi_S[nu].resize(env().getNd()); + outputData.projection[i_p].pi_4C[nu].resize(env().getNd()); + outputData.projection[i_p].pi_X[nu].resize(env().getNd()); + outputData.projection[i_p].pi_srcT[nu].resize(env().getNd()); + outputData.projection[i_p].pi_snkT[nu].resize(env().getNd()); + } } } @@ -272,33 +288,42 @@ void TScalarVP::execute(void) Usrc = Complex(1.0,0.0); vpContraction(result, prop0, tmpProp, Usrc, mu); *vpTensor[mu][nu] = result; - // Output if necessary + // Do momentum projections if necessary if (!par().output.empty()) { - writeVP(writer, result, - "Pi_free_"+std::to_string(mu)+"_"+std::to_string(nu)); + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + project(outputData.projection[i_p].pi_free[mu][nu], result, + i_p); + } } tmpProp = result; // Just using tmpProp as a temporary ScalarField // here (buf is modified by calls to writeVP()) // srcT - result = tmpProp * (-0.5)*q*q*Anu0*Anu0; - *vpTensor[mu][nu] += result; - // Output if necessary + result = tmpProp * (-0.5)*Anu0*Anu0; + *vpTensor[mu][nu] += q*q*result; + // Do momentum projections if necessary if (!par().output.empty()) { - writeVP(writer, result, - "Pi_srcT_"+std::to_string(mu)+"_"+std::to_string(nu)); + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + project(outputData.projection[i_p].pi_srcT[mu][nu], result, + i_p); + } } // snkT - result = tmpProp * (-0.5)*q*q*Amu*Amu; - *vpTensor[mu][nu] += result; - // Output if necessary + result = tmpProp * (-0.5)*Amu*Amu; + *vpTensor[mu][nu] += q*q*result; + // Do momentum projections if necessary if (!par().output.empty()) { - writeVP(writer, result, - "Pi_snkT_"+std::to_string(mu)+"_"+std::to_string(nu)); + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + project(outputData.projection[i_p].pi_snkT[mu][nu], result, + i_p); + } } // S @@ -306,13 +331,15 @@ void TScalarVP::execute(void) Usrc = ci*Anu0; Usnk = ci*Amu; vpContraction(result, prop0, tmpProp, Usrc, Usnk, mu); - result = q*q*result; - *vpTensor[mu][nu] += result; - // Output if necessary + *vpTensor[mu][nu] += q*q*result; + // Do momentum projections if necessary if (!par().output.empty()) { - writeVP(writer, result, - "Pi_S_"+std::to_string(mu)+"_"+std::to_string(nu)); + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + project(outputData.projection[i_p].pi_S[mu][nu], result, + i_p); + } } // 4C @@ -329,25 +356,29 @@ void TScalarVP::execute(void) Usnk = ci*Amu; vpContraction(buf, prop0, *muPropQ[nu], Usrc, Usnk, mu); result += buf; - result = q*q*result; - *vpTensor[mu][nu] += result; - // Output if necessary + *vpTensor[mu][nu] += q*q*result; + // Do momentum projections if necessary if (!par().output.empty()) { - writeVP(writer, result, - "Pi_4C_"+std::to_string(mu)+"_"+std::to_string(nu)); + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + project(outputData.projection[i_p].pi_4C[mu][nu], result, + i_p); + } } // X Usrc = Complex(1.0,0.0); vpContraction(result, propQ, *muPropQ[nu], Usrc, mu); - result = q*q*result; - *vpTensor[mu][nu] += result; - // Output if necessary + *vpTensor[mu][nu] += q*q*result; + // Do momentum projections if necessary if (!par().output.empty()) { - writeVP(writer, result, - "Pi_X_"+std::to_string(mu)+"_"+std::to_string(nu)); + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + project(outputData.projection[i_p].pi_X[mu][nu], result, + i_p); + } } // 2E @@ -358,13 +389,15 @@ void TScalarVP::execute(void) //(Note: = ) vpContraction(buf, prop0, tmpProp, Usrc, mu); result += buf; - result = q*q*result; - *vpTensor[mu][nu] += result; - // Output if necessary + *vpTensor[mu][nu] += q*q*result; + // Do momentum projections if necessary if (!par().output.empty()) { - writeVP(writer, result, - "Pi_2E_"+std::to_string(mu)+"_"+std::to_string(nu)); + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + project(outputData.projection[i_p].pi_2E[mu][nu], result, + i_p); + } } // 2T @@ -374,29 +407,36 @@ void TScalarVP::execute(void) tmpProp = Cshift(propTad, nu, -1); // S_T(0|x-a\hat{\nu}) vpContraction(buf, prop0, tmpProp, Usrc, mu); result += buf; - result = q*q*result; - *vpTensor[mu][nu] += result; - // Output if necessary + *vpTensor[mu][nu] += q*q*result; + // Do momentum projections if necessary if (!par().output.empty()) { - writeVP(writer, result, - "Pi_2T_"+std::to_string(mu)+"_"+std::to_string(nu)); + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + project(outputData.projection[i_p].pi_2T[mu][nu], result, + i_p); + } } - // Output full VP if necessary + // Do momentum projections of full VP if necessary if (!par().output.empty()) { - writeVP(writer, *vpTensor[mu][nu], - "Pi_"+std::to_string(mu)+"_"+std::to_string(nu)); + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + project(outputData.projection[i_p].pi[mu][nu], + *vpTensor[mu][nu], i_p); + } } } } + + // OUTPUT IF NECESSARY if (!par().output.empty()) { - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) - { - delete writer[i_p]; - } + LOG(Message) << "Saving momentum-projected HVP to '" + << RESULT_FILE_NAME(par().output) << "'..." + << std::endl; + saveResult(par().output, "HVP", outputData); } } @@ -450,22 +490,17 @@ void TScalarVP::vpContraction(ScalarField &vp, vp = 2.0*real(vp); } -void TScalarVP::writeVP(std::vector &writer, const ScalarField &vp, std::string dsetName) +void TScalarVP::project(std::vector &projection, const ScalarField &vp, int i_p) { std::vector vecBuf; - std::vector result; envGetTmp(ScalarField, buf); - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + buf = vp*(*momPhase_[i_p]); + sliceSum(buf, vecBuf, Tp); + projection.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) { - buf = vp*(*momPhase_[i_p]); - sliceSum(buf, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - write(*writer[i_p], dsetName, result); + projection[t] = TensorRemove(vecBuf[t]); } } diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index 0839f654..8e18f80e 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -28,6 +28,30 @@ public: SCALAR_TYPE_ALIASES(SIMPL,); typedef PhotonR::GaugeField EmField; typedef PhotonR::GaugeLinkField EmComp; + class Result: Serializable + { + public: + class Projection: Serializable + { + public: + GRID_SERIALIZABLE_CLASS_MEMBERS(Projection, + std::vector, momentum, + std::vector>>, pi, + std::vector>>, pi_free, + std::vector>>, pi_2E, + std::vector>>, pi_2T, + std::vector>>, pi_S, + std::vector>>, pi_4C, + std::vector>>, pi_X, + std::vector>>, pi_srcT, + std::vector>>, pi_snkT); + }; + GRID_SERIALIZABLE_CLASS_MEMBERS(Result, + std::vector, lattice_size, + double, mass, + double, charge, + std::vector, projection); + }; public: // constructor TScalarVP(const std::string name); @@ -52,8 +76,8 @@ private: ScalarField &prop_0_x, ScalarField &prop_nu_x, TComplex u_src, int mu); // write momentum-projected vacuum polarisation to file(s) - void writeVP(std::vector &writer, const ScalarField &vp, - std::string dsetName); + void project(std::vector &projection, const ScalarField &vp, + int i_p); // momentum-space Delta_1 insertion void momD1(ScalarField &s, FFT &fft); private: @@ -65,10 +89,7 @@ private: std::vector phaseName_, muPropQName_, momPhaseName_; std::vector > vpTensorName_; - // ScalarField *freeMomProp_, *GFSrc_, - // *prop0_; std::vector phase_, momPhase_; - // EmField *A; }; MODULE_REGISTER_NS(ScalarVP, TScalarVP, MScalar); From 315f1146cd9acad43a571a6a081a724e0d372278 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Thu, 8 Feb 2018 20:40:45 +0000 Subject: [PATCH 055/267] QedFVol: Fix output of VPCounterTerms module. --- .../Hadrons/Modules/MScalar/VPCounterTerms.cc | 129 +++++++++--------- .../Modules/MScalar/VPCounterTerms.hpp | 19 ++- 2 files changed, 83 insertions(+), 65 deletions(-) diff --git a/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc b/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc index 284b3f6c..b3393679 100644 --- a/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc +++ b/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc @@ -41,7 +41,6 @@ void TVPCounterTerms::setup(void) phatsqName_ = getName() + "_pHatSquared"; prop0Name_ = getName() + "_freeProp"; twoscalarName_ = getName() + "_2scalarProp"; - twoscalarVertexName_ = getName() + "_2scalarProp_withvertex"; psquaredName_ = getName() + "_psquaredProp"; if (!par().output.empty()) { @@ -60,7 +59,6 @@ void TVPCounterTerms::setup(void) envCreateLat(ScalarField, GFSrcName_); envCreateLat(ScalarField, prop0Name_); envCreateLat(ScalarField, twoscalarName_); - envCreateLat(ScalarField, twoscalarVertexName_); envCreateLat(ScalarField, psquaredName_); if (!par().output.empty()) { @@ -117,49 +115,44 @@ void TVPCounterTerms::execute(void) // Propagators for counter-terms auto &twoscalarProp = envGet(ScalarField, twoscalarName_); - auto &twoscalarVertexProp = envGet(ScalarField, twoscalarVertexName_); auto &psquaredProp = envGet(ScalarField, psquaredName_); twoscalarProp = G*GFSrc; fft.FFT_all_dim(twoscalarProp, twoscalarProp, FFT::backward); - twoscalarVertexProp = zero; - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - buf = GFSrc; - twoscalarVertexProp = twoscalarVertexProp + .5*((*phase_[mu]) + adj(*phase_[mu]))*buf; - } - twoscalarVertexProp = G*twoscalarVertexProp; - fft.FFT_all_dim(twoscalarVertexProp, twoscalarVertexProp, FFT::backward); - psquaredProp = G*phatsq*GFSrc; fft.FFT_all_dim(psquaredProp, psquaredProp, FFT::backward); - // Prepare output files if necessary + // Prepare output data structure if necessary + Result outputData; if (!par().output.empty()) { - LOG(Message) << "Preparing output files..." << std::endl; + outputData.projection.resize(par().outputMom.size()); + outputData.lattice_size = env().getGrid()->_fdimensions; + outputData.mass = par().mass; for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) { - std::vector mom = strToVec(par().outputMom[i_p]); - - // Open output files - std::string filename = par().output + "_" + std::to_string(mom[0]) - + std::to_string(mom[1]) - + std::to_string(mom[2]); - saveResult(filename, "mass", par().mass); - + outputData.projection[i_p].momentum = strToVec(par().outputMom[i_p]); + outputData.projection[i_p].twoScalar.resize(env().getNd()); + outputData.projection[i_p].threeScalar.resize(env().getNd()); + outputData.projection[i_p].pSquaredInsertion.resize(env().getNd()); + for (unsigned int nu = 0; nu < env().getNd(); ++nu) + { + outputData.projection[i_p].twoScalar[nu].resize(env().getNd()); + outputData.projection[i_p].threeScalar[nu].resize(env().getNd()); + outputData.projection[i_p].pSquaredInsertion[nu].resize(env().getNd()); + } // Calculate phase factors auto &momph_ip = envGet(ScalarField, momPhaseName_[i_p]); - momph_ip = Complex(1.0,0.0); + momph_ip = zero; for (unsigned int j = 0; j < env().getNd()-1; ++j) { - for (unsigned int momcount = 0; momcount < mom[j]; ++momcount) - { - momph_ip = momph_ip*(*phase_[j]); - } + Real twoPiL = M_PI*2./l[j]; + LatticeCoordinate(buf, j); + buf = outputData.projection[i_p].momentum[j]*twoPiL*buf; + momph_ip = momph_ip + buf; } - momph_ip = adj(momph_ip); + momph_ip = exp(-ci*momph_ip); momPhase_.push_back(&momph_ip); } } @@ -170,62 +163,70 @@ void TVPCounterTerms::execute(void) buf = adj(Cshift(prop0, nu, -1)); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { + // Two-scalar loop + tmp_vp = buf * Cshift(prop0, mu, 1); + tmp_vp -= Cshift(buf, mu, 1) * prop0; + tmp_vp = 2.0*real(tmp_vp); + // Output if necessary + if (!par().output.empty()) + { + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + project(outputData.projection[i_p].twoScalar[mu][nu], + tmp_vp, i_p); + } + } + // Three-scalar loop (no vertex) tmp_vp = buf * Cshift(twoscalarProp, mu, 1); tmp_vp -= Cshift(buf, mu, 1) * twoscalarProp; tmp_vp = 2.0*real(tmp_vp); - // Output if necessary if (!par().output.empty()) { - writeVP(tmp_vp, "NoVertex_"+std::to_string(mu)+"_"+std::to_string(nu)); - } - - // Three-scalar loop (tadpole vertex) - tmp_vp = buf * Cshift(twoscalarVertexProp, mu, 1); - tmp_vp -= Cshift(buf, mu, 1) * twoscalarVertexProp; - tmp_vp = 2.0*real(tmp_vp); - - // Output if necessary - if (!par().output.empty()) - { - writeVP(tmp_vp, "TadVertex_"+std::to_string(mu)+"_"+std::to_string(nu)); + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + project(outputData.projection[i_p].threeScalar[mu][nu], + tmp_vp, i_p); + } } // Three-scalar loop (hat{p}^2 insertion) tmp_vp = buf * Cshift(psquaredProp, mu, 1); tmp_vp -= Cshift(buf, mu, 1) * psquaredProp; tmp_vp = 2.0*real(tmp_vp); - // Output if necessary if (!par().output.empty()) { - writeVP(tmp_vp, "pSquaredInsertion_"+std::to_string(mu)+"_"+std::to_string(nu)); + for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + { + project(outputData.projection[i_p].pSquaredInsertion[mu][nu], + tmp_vp, i_p); + } } } } -} -void TVPCounterTerms::writeVP(const ScalarField &vp, std::string dsetName) -{ - std::vector vecBuf; - std::vector result; - envGetTmp(ScalarField, vpPhase); - - for (unsigned int i_p = 0; i_p < par().outputMom.size(); ++i_p) + // OUTPUT IF NECESSARY + if (!par().output.empty()) { - std::vector mom = strToVec(par().outputMom[i_p]); - std::string filename = par().output + "_" - + std::to_string(mom[0]) - + std::to_string(mom[1]) - + std::to_string(mom[2]); - vpPhase = vp*(*momPhase_[i_p]); - sliceSum(vpPhase, vecBuf, Tp); - result.resize(vecBuf.size()); - for (unsigned int t = 0; t < vecBuf.size(); ++t) - { - result[t] = TensorRemove(vecBuf[t]); - } - saveResult(filename, dsetName, result); + LOG(Message) << "Saving momentum-projected correlators to '" + << RESULT_FILE_NAME(par().output) << "'..." + << std::endl; + saveResult(par().output, "scalar_loops", outputData); + } +} + +void TVPCounterTerms::project(std::vector &projection, const ScalarField &vp, int i_p) +{ + std::vector vecBuf; + envGetTmp(ScalarField, vpPhase); + + vpPhase = vp*(*momPhase_[i_p]); + sliceSum(vpPhase, vecBuf, Tp); + projection.resize(vecBuf.size()); + for (unsigned int t = 0; t < vecBuf.size(); ++t) + { + projection[t] = TensorRemove(vecBuf[t]); } } diff --git a/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp b/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp index 634206a6..a0c3688d 100644 --- a/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp +++ b/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp @@ -26,6 +26,23 @@ class TVPCounterTerms: public Module { public: SCALAR_TYPE_ALIASES(SIMPL,); + class Result: Serializable + { + public: + class Projection: Serializable + { + public: + GRID_SERIALIZABLE_CLASS_MEMBERS(Projection, + std::vector, momentum, + std::vector>>, twoScalar, + std::vector>>, threeScalar, + std::vector>>, pSquaredInsertion); + }; + GRID_SERIALIZABLE_CLASS_MEMBERS(Result, + std::vector, lattice_size, + double, mass, + std::vector, projection); + }; public: // constructor TVPCounterTerms(const std::string name); @@ -40,7 +57,7 @@ protected: // execution virtual void execute(void); private: - void writeVP(const ScalarField &vp, std::string dsetName); + void project(std::vector &projection, const ScalarField &vp, int i_p); private: std::string freeMomPropName_, GFSrcName_, phatsqName_, prop0Name_, twoscalarName_, twoscalarVertexName_, From 49a0ae73eb097fc9e7de02897bcde6ff6a3db170 Mon Sep 17 00:00:00 2001 From: Vera Guelpers Date: Mon, 12 Feb 2018 09:36:08 +0000 Subject: [PATCH 056/267] Insertion of photon field in seqential conserved current --- extras/Hadrons/Modules.hpp | 1 - .../Hadrons/Modules/MSource/SeqConserved.hpp | 93 ++++++++-- .../Modules/MSource/SeqConservedSummed.hpp | 169 ------------------ extras/Hadrons/modules.inc | 1 - lib/qcd/action/fermion/FermionOperator.h | 4 +- .../fermion/ImprovedStaggeredFermion.cc | 16 +- .../action/fermion/ImprovedStaggeredFermion.h | 12 +- .../fermion/ImprovedStaggeredFermion5D.cc | 15 +- .../fermion/ImprovedStaggeredFermion5D.h | 12 +- lib/qcd/action/fermion/WilsonFermion.cc | 90 ++++++++-- lib/qcd/action/fermion/WilsonFermion.h | 14 +- lib/qcd/action/fermion/WilsonFermion5D.cc | 127 +++++++++++-- lib/qcd/action/fermion/WilsonFermion5D.h | 10 +- tests/hadrons/Test_hadrons.hpp | 3 +- 14 files changed, 310 insertions(+), 257 deletions(-) delete mode 100644 extras/Hadrons/Modules/MSource/SeqConservedSummed.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index ed6254f4..734ff0fc 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -28,7 +28,6 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include -#include #include #include #include diff --git a/extras/Hadrons/Modules/MSource/SeqConserved.hpp b/extras/Hadrons/Modules/MSource/SeqConserved.hpp index ee8d8d56..0fb23cc4 100644 --- a/extras/Hadrons/Modules/MSource/SeqConserved.hpp +++ b/extras/Hadrons/Modules/MSource/SeqConserved.hpp @@ -2,12 +2,13 @@ Grid physics library, www.github.com/paboyle/Grid -Source file: extras/Hadrons/Modules/MSource/SeqConserved.hpp +Source file: extras/Hadrons/Modules/MContraction/SeqConserved.hpp Copyright (C) 2015-2018 Author: Antonin Portelli -Author: Lanny91 +Author: Andrew Lawson +Author: Vera Guelpers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,13 +35,17 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include +#include + BEGIN_HADRONS_NAMESPACE /* - Sequential source + Sequential source with insertion of conserved current. + Additionally optional insertion of a photon field A_\mu(x). ----------------------------- - * src_x = q_x * theta(x_3 - tA) * theta(tB - x_3) * J_mu * exp(i x.mom) + * src_x = sum_{mu=mu_min}^{mu_max} + q_x * theta(x_3 - tA) * theta(tB - x_3) * J_mu * exp(i x.mom) (* A_\mu(x)) * options: - q: input propagator (string) @@ -48,8 +53,10 @@ BEGIN_HADRONS_NAMESPACE - tA: begin timeslice (integer) - tB: end timesilce (integer) - curr_type: type of conserved current to insert (Current) - - mu: Lorentz index of current to insert (integer) + - mu_min: begin Lorentz Index (integer) + - mu_max: end Lorentz Index (integer) - mom: momentum insertion, space-separated float sequence (e.g ".1 .2 1. 0.") + - photon: optional photon field (string) */ @@ -67,8 +74,10 @@ public: unsigned int, tA, unsigned int, tB, Current, curr_type, - unsigned int, mu, - std::string, mom); + unsigned int, mu_min, + unsigned int, mu_max, + std::string, mom, + std::string, photon); }; template @@ -76,6 +85,8 @@ class TSeqConserved: public Module { public: FERM_TYPE_ALIASES(FImpl,); +public: + typedef PhotonR::GaugeField EmField; public: // constructor TSeqConserved(const std::string name); @@ -93,6 +104,7 @@ protected: MODULE_REGISTER_NS(SeqConserved, TSeqConserved, MSource); + /****************************************************************************** * TSeqConserved implementation * ******************************************************************************/ @@ -107,7 +119,8 @@ template std::vector TSeqConserved::getInput(void) { std::vector in = {par().q, par().action}; - + if (!par().photon.empty()) in.push_back(par().photon); + return in; } @@ -116,7 +129,7 @@ std::vector TSeqConserved::getOutput(void) { std::vector out = {getName()}; - return out; + return out; } // setup /////////////////////////////////////////////////////////////////////// @@ -125,6 +138,10 @@ void TSeqConserved::setup(void) { auto Ls_ = env().getObjectLs(par().action); envCreateLat(PropagatorField, getName(), Ls_); + envTmpLat(PropagatorField, "src_tmp"); + envTmpLat(LatticeComplex, "mom_phase"); + envTmpLat(LatticeComplex, "coor"); + envTmpLat(LatticeComplex, "latt_compl"); } // execution /////////////////////////////////////////////////////////////////// @@ -134,27 +151,71 @@ void TSeqConserved::execute(void) if (par().tA == par().tB) { LOG(Message) << "Generating sequential source with conserved " - << par().curr_type << " current insertion (mu = " - << par().mu << ") at " << "t = " << par().tA << std::endl; + << par().curr_type << " current at " + << "t = " << par().tA << std::endl; } else { LOG(Message) << "Generating sequential source with conserved " - << par().curr_type << " current insertion (mu = " - << par().mu << ") for " << par().tA << " <= t <= " + << par().curr_type << " current for " + << par().tA << " <= t <= " << par().tB << std::endl; } auto &src = envGet(PropagatorField, getName()); + envGetTmp(PropagatorField, src_tmp); + src_tmp = src; auto &q = envGet(PropagatorField, par().q); auto &mat = envGet(FMat, par().action); + envGetTmp(LatticeComplex, mom_phase); + envGetTmp(LatticeComplex, coor); + envGetTmp(LatticeComplex, latt_compl); + src = zero; + + //exp(ipx) std::vector mom = strToVec(par().mom); - mat.SeqConservedCurrent(q, src, par().curr_type, par().mu, - mom, par().tA, par().tB); + mom_phase = zero; + Complex i(0.0,1.0); + for(unsigned int mu = 0; mu < env().getNd(); mu++) + { + LatticeCoordinate(coor, mu); + mom_phase = mom_phase + (mom[mu]/env().getGrid()->_fdimensions[mu])*coor; + } + mom_phase = exp((Real)(2*M_PI)*i*mom_phase); + LOG(Message) << "Inserting momentum " << mom << std::endl; + + + + if (!par().photon.empty()) + { + LOG(Message) << "Inserting the stochastic photon field " << par().photon << std::endl; + } + + for(unsigned int mu=par().mu_min;mu<=par().mu_max;mu++) + { + if (!par().photon.empty()) + { + //Get the stochastic photon field, if required + auto &stoch_photon = envGet(EmField, par().photon); + latt_compl = PeekIndex(stoch_photon, mu) * mom_phase; + } + else + { + latt_compl = mom_phase; + } + + mat.SeqConservedCurrent(q, src_tmp, par().curr_type, mu, + par().tA, par().tB, latt_compl); + src += src_tmp; + + } + + } + END_MODULE_NAMESPACE END_HADRONS_NAMESPACE -#endif // Hadrons_SeqConserved_hpp_ +#endif // Hadrons_MSource_SeqConserved_hpp_ diff --git a/extras/Hadrons/Modules/MSource/SeqConservedSummed.hpp b/extras/Hadrons/Modules/MSource/SeqConservedSummed.hpp deleted file mode 100644 index 243d05f2..00000000 --- a/extras/Hadrons/Modules/MSource/SeqConservedSummed.hpp +++ /dev/null @@ -1,169 +0,0 @@ -/************************************************************************************* - -Grid physics library, www.github.com/paboyle/Grid - -Source file: extras/Hadrons/Modules/MContraction/SeqConservedSummed.hpp - -Copyright (C) 2015-2018 - -Author: Antonin Portelli -Author: Andrew Lawson -Author: Vera Guelpers - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -See the full license in the file "LICENSE" in the top level distribution directory -*************************************************************************************/ -/* END LEGAL */ - -#ifndef Hadrons_MSource_SeqConservedSummed_hpp_ -#define Hadrons_MSource_SeqConservedSummed_hpp_ - -#include -#include -#include - -BEGIN_HADRONS_NAMESPACE - -/* - - Sequential source summed over the Lorentz index of current - ----------------------------- - * src_x = sum_mu q_x * theta(x_3 - tA) * theta(tB - x_3) * J_mu * exp(i x.mom) - - * options: - - q: input propagator (string) - - action: fermion action used for propagator q (string) - - tA: begin timeslice (integer) - - tB: end timesilce (integer) - - curr_type: type of conserved current to insert (Current) - - mom: momentum insertion, space-separated float sequence (e.g ".1 .2 1. 0.") - - */ - -/****************************************************************************** - * SeqConservedSummed * - ******************************************************************************/ -BEGIN_MODULE_NAMESPACE(MSource) - -class SeqConservedSummedPar: Serializable -{ -public: - GRID_SERIALIZABLE_CLASS_MEMBERS(SeqConservedSummedPar, - std::string, q, - std::string, action, - unsigned int, tA, - unsigned int, tB, - Current, curr_type, - std::string, mom); -}; - -template -class TSeqConservedSummed: public Module -{ -public: - FERM_TYPE_ALIASES(FImpl,); -public: - // constructor - TSeqConservedSummed(const std::string name); - // destructor - virtual ~TSeqConservedSummed(void) = default; - // dependency relation - virtual std::vector getInput(void); - virtual std::vector getOutput(void); -protected: - // setup - virtual void setup(void); - // execution - virtual void execute(void); -}; - -MODULE_REGISTER_NS(SeqConservedSummed, TSeqConservedSummed, MSource); - -/****************************************************************************** - * TSeqConservedSummed implementation * - ******************************************************************************/ -// constructor ///////////////////////////////////////////////////////////////// -template -TSeqConservedSummed::TSeqConservedSummed(const std::string name) -: Module(name) -{} - -// dependencies/products /////////////////////////////////////////////////////// -template -std::vector TSeqConservedSummed::getInput(void) -{ - std::vector in = {par().q, par().action}; - - return in; -} - -template -std::vector TSeqConservedSummed::getOutput(void) -{ - std::vector out = {getName()}; - - return out; -} - -// setup /////////////////////////////////////////////////////////////////////// -template -void TSeqConservedSummed::setup(void) -{ - auto Ls_ = env().getObjectLs(par().action); - envCreateLat(PropagatorField, getName(), Ls_); - envTmpLat(PropagatorField, "src_tmp"); -} - -// execution /////////////////////////////////////////////////////////////////// -template -void TSeqConservedSummed::execute(void) -{ - if (par().tA == par().tB) - { - LOG(Message) << "Generating sequential source with conserved " - << par().curr_type << " current insertion summed over mu at " - << "t = " << par().tA << std::endl; - } - else - { - LOG(Message) << "Generating sequential source with conserved " - << par().curr_type << " current insertion summed over mu for " - << par().tA << " <= t <= " - << par().tB << std::endl; - } - auto &src = envGet(PropagatorField, getName()); - envGetTmp(PropagatorField, src_tmp); - src_tmp = src; - auto &q = envGet(PropagatorField, par().q); - auto &mat = envGet(FMat, par().action); - - std::vector mom = strToVec(par().mom); - src = zero; - for(int mu=0;mu<=3;mu++) - { - mat.SeqConservedCurrent(q, src_tmp, par().curr_type, mu, - mom, par().tA, par().tB); - src += src_tmp; - - } - -} - -END_MODULE_NAMESPACE - -END_HADRONS_NAMESPACE - -#endif // Hadrons_SeqConservedSummed_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index d005caec..63b674d4 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -20,7 +20,6 @@ modules_hpp =\ Modules/MContraction/WardIdentity.hpp \ Modules/MContraction/WeakHamiltonianEye.hpp \ Modules/MFermion/GaugeProp.hpp \ - Modules/MSource/SeqConservedSummed.hpp \ Modules/MSource/SeqGamma.hpp \ Modules/MSource/Point.hpp \ Modules/MSource/Wall.hpp \ diff --git a/lib/qcd/action/fermion/FermionOperator.h b/lib/qcd/action/fermion/FermionOperator.h index 1d395d53..94e065cc 100644 --- a/lib/qcd/action/fermion/FermionOperator.h +++ b/lib/qcd/action/fermion/FermionOperator.h @@ -125,9 +125,9 @@ namespace Grid { PropagatorField &q_out, Current curr_type, unsigned int mu, - std::vector mom, unsigned int tmin, - unsigned int tmax)=0; + unsigned int tmax, + Lattice> &lattice_cmplx)=0; }; } diff --git a/lib/qcd/action/fermion/ImprovedStaggeredFermion.cc b/lib/qcd/action/fermion/ImprovedStaggeredFermion.cc index 5005b1a2..3a296e52 100644 --- a/lib/qcd/action/fermion/ImprovedStaggeredFermion.cc +++ b/lib/qcd/action/fermion/ImprovedStaggeredFermion.cc @@ -407,17 +407,19 @@ void ImprovedStaggeredFermion::ContractConservedCurrent(PropagatorField &q } template -void ImprovedStaggeredFermion::SeqConservedCurrent(PropagatorField &q_in, - PropagatorField &q_out, - Current curr_type, - unsigned int mu, - std::vector mom, - unsigned int tmin, - unsigned int tmax) +void ImprovedStaggeredFermion::SeqConservedCurrent(PropagatorField &q_in, + PropagatorField &q_out, + Current curr_type, + unsigned int mu, + unsigned int tmin, + unsigned int tmax, + Lattice> &lattice_cmplx) { assert(0); + } + FermOpStaggeredTemplateInstantiate(ImprovedStaggeredFermion); //AdjointFermOpTemplateInstantiate(ImprovedStaggeredFermion); diff --git a/lib/qcd/action/fermion/ImprovedStaggeredFermion.h b/lib/qcd/action/fermion/ImprovedStaggeredFermion.h index 9d5270c6..015eb6bb 100644 --- a/lib/qcd/action/fermion/ImprovedStaggeredFermion.h +++ b/lib/qcd/action/fermion/ImprovedStaggeredFermion.h @@ -166,13 +166,13 @@ class ImprovedStaggeredFermion : public StaggeredKernels, public ImprovedS PropagatorField &q_out, Current curr_type, unsigned int mu); - void SeqConservedCurrent(PropagatorField &q_in, + void SeqConservedCurrent(PropagatorField &q_in, PropagatorField &q_out, - Current curr_type, - unsigned int mu, - std::vector mom, - unsigned int tmin, - unsigned int tmax); + Current curr_type, + unsigned int mu, + unsigned int tmin, + unsigned int tmax, + Lattice> &lattice_cmplx); }; typedef ImprovedStaggeredFermion ImprovedStaggeredFermionF; diff --git a/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.cc b/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.cc index 7308ff30..3640a26b 100644 --- a/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.cc +++ b/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.cc @@ -419,15 +419,16 @@ void ImprovedStaggeredFermion5D::ContractConservedCurrent(PropagatorField } template -void ImprovedStaggeredFermion5D::SeqConservedCurrent(PropagatorField &q_in, - PropagatorField &q_out, - Current curr_type, - unsigned int mu, - std::vector mom, - unsigned int tmin, - unsigned int tmax) +void ImprovedStaggeredFermion5D::SeqConservedCurrent(PropagatorField &q_in, + PropagatorField &q_out, + Current curr_type, + unsigned int mu, + unsigned int tmin, + unsigned int tmax, + Lattice> &lattice_cmplx) { assert(0); + } FermOpStaggeredTemplateInstantiate(ImprovedStaggeredFermion5D); diff --git a/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.h b/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.h index 22fb9e7d..1c211938 100644 --- a/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.h +++ b/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.h @@ -178,13 +178,13 @@ namespace QCD { PropagatorField &q_out, Current curr_type, unsigned int mu); - void SeqConservedCurrent(PropagatorField &q_in, + void SeqConservedCurrent(PropagatorField &q_in, PropagatorField &q_out, - Current curr_type, - unsigned int mu, - std::vector mom, - unsigned int tmin, - unsigned int tmax); + Current curr_type, + unsigned int mu, + unsigned int tmin, + unsigned int tmax, + Lattice> &lattice_cmplx); }; }} diff --git a/lib/qcd/action/fermion/WilsonFermion.cc b/lib/qcd/action/fermion/WilsonFermion.cc index 1a020e8a..560c371d 100644 --- a/lib/qcd/action/fermion/WilsonFermion.cc +++ b/lib/qcd/action/fermion/WilsonFermion.cc @@ -381,40 +381,100 @@ void WilsonFermion::ContractConservedCurrent(PropagatorField &q_in_1, } } +//template +//void WilsonFermion::SeqConservedCurrent(PropagatorField &q_in, +// PropagatorField &q_out, +// Current curr_type, +// unsigned int mu, +// std::vector mom, +// unsigned int tmin, +// unsigned int tmax) +//{ +// conformable(_grid, q_in._grid); +// conformable(_grid, q_out._grid); +// Lattice> ph(_grid), coor(_grid); +// Complex i(0.0,1.0); +// PropagatorField tmpFwd(_grid), tmpBwd(_grid), tmp(_grid); +// unsigned int tshift = (mu == Tp) ? 1 : 0; +// unsigned int LLt = GridDefaultLatt()[Tp]; +// +// // Momentum projection +// ph = zero; +// for(unsigned int mu = 0; mu < Nd - 1; mu++) +// { +// LatticeCoordinate(coor, mu); +// ph = ph + mom[mu]*coor*((1./(_grid->_fdimensions[mu]))); +// } +// ph = exp((Real)(2*M_PI)*i*ph); +// +// q_out = zero; +// LatticeInteger coords(_grid); +// LatticeCoordinate(coords, Tp); +// +// // Need q(x + mu) and q(x - mu). +// tmp = Cshift(q_in, mu, 1); +// tmpFwd = tmp*ph; +// tmp = ph*q_in; +// tmpBwd = Cshift(tmp, mu, -1); +// +// parallel_for (unsigned int sU = 0; sU < Umu._grid->oSites(); ++sU) +// { +// // Compute the sequential conserved current insertion only if our simd +// // object contains a timeslice we need. +// vInteger t_mask = ((coords._odata[sU] >= tmin) && +// (coords._odata[sU] <= tmax)); +// Integer timeSlices = Reduce(t_mask); +// +// if (timeSlices > 0) +// { +// Kernels::SeqConservedCurrentSiteFwd(tmpFwd._odata[sU], +// q_out._odata[sU], +// Umu, sU, mu, t_mask); +// } +// +// // Repeat for backward direction. +// t_mask = ((coords._odata[sU] >= (tmin + tshift)) && +// (coords._odata[sU] <= (tmax + tshift))); +// +// //if tmax = LLt-1 (last timeslice) include timeslice 0 if the time is shifted (mu=3) +// unsigned int t0 = 0; +// if((tmax==LLt-1) && (tshift==1)) t_mask = (t_mask || (coords._odata[sU] == t0 )); +// +// timeSlices = Reduce(t_mask); +// +// if (timeSlices > 0) +// { +// Kernels::SeqConservedCurrentSiteBwd(tmpBwd._odata[sU], +// q_out._odata[sU], +// Umu, sU, mu, t_mask); +// } +// } +//} + template void WilsonFermion::SeqConservedCurrent(PropagatorField &q_in, PropagatorField &q_out, Current curr_type, unsigned int mu, - std::vector mom, unsigned int tmin, - unsigned int tmax) + unsigned int tmax, + Lattice> &lattice_cmplx) { conformable(_grid, q_in._grid); conformable(_grid, q_out._grid); - Lattice> ph(_grid), coor(_grid); Complex i(0.0,1.0); PropagatorField tmpFwd(_grid), tmpBwd(_grid), tmp(_grid); unsigned int tshift = (mu == Tp) ? 1 : 0; unsigned int LLt = GridDefaultLatt()[Tp]; - // Momentum projection - ph = zero; - for(unsigned int mu = 0; mu < Nd - 1; mu++) - { - LatticeCoordinate(coor, mu); - ph = ph + mom[mu]*coor*((1./(_grid->_fdimensions[mu]))); - } - ph = exp((Real)(2*M_PI)*i*ph); - q_out = zero; LatticeInteger coords(_grid); LatticeCoordinate(coords, Tp); // Need q(x + mu) and q(x - mu). tmp = Cshift(q_in, mu, 1); - tmpFwd = tmp*ph; - tmp = ph*q_in; + tmpFwd = tmp*lattice_cmplx; + tmp = lattice_cmplx*q_in; tmpBwd = Cshift(tmp, mu, -1); parallel_for (unsigned int sU = 0; sU < Umu._grid->oSites(); ++sU) @@ -449,6 +509,8 @@ void WilsonFermion::SeqConservedCurrent(PropagatorField &q_in, Umu, sU, mu, t_mask); } } + + } FermOpTemplateInstantiate(WilsonFermion); diff --git a/lib/qcd/action/fermion/WilsonFermion.h b/lib/qcd/action/fermion/WilsonFermion.h index feba40ed..db32529d 100644 --- a/lib/qcd/action/fermion/WilsonFermion.h +++ b/lib/qcd/action/fermion/WilsonFermion.h @@ -155,13 +155,13 @@ class WilsonFermion : public WilsonKernels, public WilsonFermionStatic { PropagatorField &q_out, Current curr_type, unsigned int mu); - void SeqConservedCurrent(PropagatorField &q_in, - PropagatorField &q_out, - Current curr_type, - unsigned int mu, - std::vector mom, - unsigned int tmin, - unsigned int tmax); + void SeqConservedCurrent(PropagatorField &q_in, + PropagatorField &q_out, + Current curr_type, + unsigned int mu, + unsigned int tmin, + unsigned int tmax, + Lattice> &lattice_cmplx); }; typedef WilsonFermion WilsonFermionF; diff --git a/lib/qcd/action/fermion/WilsonFermion5D.cc b/lib/qcd/action/fermion/WilsonFermion5D.cc index bc703187..92280c13 100644 --- a/lib/qcd/action/fermion/WilsonFermion5D.cc +++ b/lib/qcd/action/fermion/WilsonFermion5D.cc @@ -779,18 +779,110 @@ void WilsonFermion5D::ContractConservedCurrent(PropagatorField &q_in_1, } +//template +//void WilsonFermion5D::SeqConservedCurrent(PropagatorField &q_in, +// PropagatorField &q_out, +// Current curr_type, +// unsigned int mu, +// std::vector mom, +// unsigned int tmin, +// unsigned int tmax) +//{ +// conformable(q_in._grid, FermionGrid()); +// conformable(q_in._grid, q_out._grid); +// Lattice> ph(FermionGrid()), coor(FermionGrid()); +// PropagatorField tmpFwd(FermionGrid()), tmpBwd(FermionGrid()), +// tmp(FermionGrid()); +// Complex i(0.0, 1.0); +// unsigned int tshift = (mu == Tp) ? 1 : 0; +// unsigned int LLs = q_in._grid->_rdimensions[0]; +// unsigned int LLt = GridDefaultLatt()[Tp]; +// +// // Momentum projection. +// ph = zero; +// for(unsigned int nu = 0; nu < Nd - 1; nu++) +// { +// // Shift coordinate lattice index by 1 to account for 5th dimension. +// LatticeCoordinate(coor, nu + 1); +// ph = ph + mom[nu]*coor*((1./(_FourDimGrid->_fdimensions[nu]))); +// } +// ph = exp((Real)(2*M_PI)*i*ph); +// +// q_out = zero; +// LatticeInteger coords(_FourDimGrid); +// LatticeCoordinate(coords, Tp); +// +// +// // Need q(x + mu, s) and q(x - mu, s). 5D lattice so shift 4D coordinate mu +// // by one. +// tmp = Cshift(q_in, mu + 1, 1); +// tmpFwd = tmp*ph; +// tmp = ph*q_in; +// tmpBwd = Cshift(tmp, mu + 1, -1); +// +// parallel_for (unsigned int sU = 0; sU < Umu._grid->oSites(); ++sU) +// { +// // Compute the sequential conserved current insertion only if our simd +// // object contains a timeslice we need. +// vInteger t_mask = ((coords._odata[sU] >= tmin) && +// (coords._odata[sU] <= tmax)); +// Integer timeSlices = Reduce(t_mask); +// +// if (timeSlices > 0) +// { +// unsigned int sF = sU * LLs; +// for (unsigned int s = 0; s < LLs; ++s) +// { +// bool axial_sign = ((curr_type == Current::Axial) && (s < (LLs / 2))); +// bool tadpole_sign = (curr_type == Current::Tadpole); +// bool switch_sgn = tadpole_sign || axial_sign; +// +// Kernels::SeqConservedCurrentSiteFwd(tmpFwd._odata[sF], +// q_out._odata[sF], Umu, sU, +// mu, t_mask, switch_sgn); +// ++sF; +// } +// } +// +// // Repeat for backward direction. +// t_mask = ((coords._odata[sU] >= (tmin + tshift)) && +// (coords._odata[sU] <= (tmax + tshift))); +// +// //if tmax = LLt-1 (last timeslice) include timeslice 0 if the time is shifted (mu=3) +// unsigned int t0 = 0; +// if((tmax==LLt-1) && (tshift==1)) t_mask = (t_mask || (coords._odata[sU] == t0 )); +// +// timeSlices = Reduce(t_mask); +// +// if (timeSlices > 0) +// { +// unsigned int sF = sU * LLs; +// for (unsigned int s = 0; s < LLs; ++s) +// { +// bool axial_sign = ((curr_type == Current::Axial) && (s < (LLs / 2))); +// Kernels::SeqConservedCurrentSiteBwd(tmpBwd._odata[sF], +// q_out._odata[sF], Umu, sU, +// mu, t_mask, axial_sign); +// ++sF; +// } +// } +// } +//} + + + + template void WilsonFermion5D::SeqConservedCurrent(PropagatorField &q_in, PropagatorField &q_out, Current curr_type, unsigned int mu, - std::vector mom, unsigned int tmin, - unsigned int tmax) + unsigned int tmax, + Lattice> &lattice_cmplx) { conformable(q_in._grid, FermionGrid()); conformable(q_in._grid, q_out._grid); - Lattice> ph(FermionGrid()), coor(FermionGrid()); PropagatorField tmpFwd(FermionGrid()), tmpBwd(FermionGrid()), tmp(FermionGrid()); Complex i(0.0, 1.0); @@ -798,25 +890,26 @@ void WilsonFermion5D::SeqConservedCurrent(PropagatorField &q_in, unsigned int LLs = q_in._grid->_rdimensions[0]; unsigned int LLt = GridDefaultLatt()[Tp]; - // Momentum projection. - ph = zero; - for(unsigned int nu = 0; nu < Nd - 1; nu++) - { - // Shift coordinate lattice index by 1 to account for 5th dimension. - LatticeCoordinate(coor, nu + 1); - ph = ph + mom[nu]*coor*((1./(_FourDimGrid->_fdimensions[nu]))); - } - ph = exp((Real)(2*M_PI)*i*ph); - q_out = zero; LatticeInteger coords(_FourDimGrid); LatticeCoordinate(coords, Tp); + + //QED: photon field is 4dim, but need a 5dim object to multiply to + // DWF PropagatorField + Lattice> lattice_cmplx_5d(FermionGrid()); + for (unsigned int s = 0; s < LLs; ++s) + { + InsertSlice(lattice_cmplx,lattice_cmplx_5d, s, 0); + } + + + // Need q(x + mu, s) and q(x - mu, s). 5D lattice so shift 4D coordinate mu // by one. tmp = Cshift(q_in, mu + 1, 1); - tmpFwd = tmp*ph; - tmp = ph*q_in; + tmpFwd = tmp*lattice_cmplx_5d; + tmp = lattice_cmplx_5d*q_in; tmpBwd = Cshift(tmp, mu + 1, -1); parallel_for (unsigned int sU = 0; sU < Umu._grid->oSites(); ++sU) @@ -868,6 +961,10 @@ void WilsonFermion5D::SeqConservedCurrent(PropagatorField &q_in, } } + + + + FermOpTemplateInstantiate(WilsonFermion5D); GparityFermOpTemplateInstantiate(WilsonFermion5D); diff --git a/lib/qcd/action/fermion/WilsonFermion5D.h b/lib/qcd/action/fermion/WilsonFermion5D.h index d66f4a1d..6a7c6c7d 100644 --- a/lib/qcd/action/fermion/WilsonFermion5D.h +++ b/lib/qcd/action/fermion/WilsonFermion5D.h @@ -222,13 +222,13 @@ namespace QCD { PropagatorField &q_out, Current curr_type, unsigned int mu); - void SeqConservedCurrent(PropagatorField &q_in, + void SeqConservedCurrent(PropagatorField &q_in, PropagatorField &q_out, - Current curr_type, + Current curr_type, unsigned int mu, - std::vector mom, - unsigned int tmin, - unsigned int tmax); + unsigned int tmin, + unsigned int tmax, + Lattice> &lattice_cmplx); }; }} diff --git a/tests/hadrons/Test_hadrons.hpp b/tests/hadrons/Test_hadrons.hpp index 0265f5a6..6188a580 100644 --- a/tests/hadrons/Test_hadrons.hpp +++ b/tests/hadrons/Test_hadrons.hpp @@ -263,7 +263,8 @@ inline void makeConservedSequentialSource(Application &application, seqPar.tA = tS; seqPar.tB = tS; seqPar.curr_type = curr; - seqPar.mu = mu; + seqPar.mu_min = mu; + seqPar.mu_min = mu; seqPar.mom = mom; application.createModule(srcName, seqPar); } From 724cf02d4aa06e2f7f4f98feb31b9460fa232a4f Mon Sep 17 00:00:00 2001 From: James Harrison Date: Mon, 12 Feb 2018 17:18:10 +0000 Subject: [PATCH 057/267] QedFVol: Implement infinite-volume photon --- lib/qcd/action/gauge/Photon.h | 113 +++++++++++++++++++++++++++++----- 1 file changed, 97 insertions(+), 16 deletions(-) diff --git a/lib/qcd/action/gauge/Photon.h b/lib/qcd/action/gauge/Photon.h index d91a9980..76211b06 100644 --- a/lib/qcd/action/gauge/Photon.h +++ b/lib/qcd/action/gauge/Photon.h @@ -58,7 +58,7 @@ namespace QCD{ public: INHERIT_GIMPL_TYPES(Gimpl); GRID_SERIALIZABLE_ENUM(Gauge, undef, feynman, 1, coulomb, 2, landau, 3); - GRID_SERIALIZABLE_ENUM(ZmScheme, undef, qedL, 1, qedTL, 2); + GRID_SERIALIZABLE_ENUM(ZmScheme, undef, qedL, 1, qedTL, 2, qedInf, 3); public: Photon(Gauge gauge, ZmScheme zmScheme, std::vector improvements); virtual ~Photon(void) = default; @@ -70,6 +70,7 @@ namespace QCD{ const GaugeLinkField &weight); void UnitField(GaugeField &out); private: + void infVolPropagator(GaugeLinkField &out); void invKHatSquared(GaugeLinkField &out); void zmSub(GaugeLinkField &out); private: @@ -97,6 +98,33 @@ namespace QCD{ MomentumSpacePropagator(prop_k,in_k); theFFT.FFT_all_dim(out,prop_k,FFT::backward); } + + template + void Photon::infVolPropagator(GaugeLinkField &out) + { + auto *grid = dynamic_cast(out._grid); + LatticeReal xmu(grid); + GaugeLinkField one(grid); + const unsigned int nd = grid->_ndimension; + std::vector &l = grid->_fdimensions; + std::vector x0(nd,0); + TComplex Tone = Complex(1.0,0.0); + TComplex Tzero = Complex(0.0,0.0); + FFT fft(grid); + + one = Complex(1.0,0.0); + out = zero; + for(int mu = 0; mu < nd; mu++) + { + LatticeCoordinate(xmu,mu); + xmu = where(xmu < l[mu]/2.0, xmu, xmu-double(l[mu])); + out = out + toComplex(4*M_PI*M_PI*xmu*xmu); + } + pokeSite(Tone, out, x0); + out = one/out; + pokeSite(Tzero, out, x0); + fft.FFT_all_dim(out, out, FFT::forward); + } template void Photon::invKHatSquared(GaugeLinkField &out) @@ -172,13 +200,28 @@ namespace QCD{ void Photon::MomentumSpacePropagator(const GaugeField &in, GaugeField &out) { - GridBase *grid = out._grid; - LatticeComplex k2Inv(grid); + GridBase *grid = out._grid; + LatticeComplex momProp(grid); - invKHatSquared(k2Inv); - zmSub(k2Inv); + switch (zmScheme_) + { + case ZmScheme::qedTL: + case ZmScheme::qedL: + { + invKHatSquared(momProp); + zmSub(momProp); + break; + } + case ZmScheme::qedInf: + { + infVolPropagator(momProp); + break; + } + default: + break; + } - out = in*k2Inv; + out = in*momProp; } template @@ -188,14 +231,30 @@ namespace QCD{ const unsigned int nd = grid->_ndimension; std::vector latt_size = grid->_fdimensions; - Integer vol = 1; - for(int d = 0; d < nd; d++) + switch (zmScheme_) { - vol = vol * latt_size[d]; + case ZmScheme::qedTL: + case ZmScheme::qedL: + { + Integer vol = 1; + for(int d = 0; d < nd; d++) + { + vol = vol * latt_size[d]; + } + invKHatSquared(weight); + weight = sqrt(vol*real(weight)); + zmSub(weight); + break; + } + case ZmScheme::qedInf: + { + infVolPropagator(weight); + weight = sqrt(real(weight)); + break; + } + default: + break; } - invKHatSquared(weight); - weight = sqrt(vol*real(weight)); - zmSub(weight); } template @@ -218,12 +277,34 @@ namespace QCD{ GaugeField aTilde(grid); FFT fft(grid); - for(int mu = 0; mu < nd; mu++) + switch (zmScheme_) { - gaussian(rng, r); - r = weight*r; - pokeLorentz(aTilde, r, mu); + case ZmScheme::qedTL: + case ZmScheme::qedL: + { + for(int mu = 0; mu < nd; mu++) + { + gaussian(rng, r); + r = weight*r; + pokeLorentz(aTilde, r, mu); + } + break; + } + case ZmScheme::qedInf: + { + Complex shift(1., 1.); // This needs to be a GaugeLink element? + for(int mu = 0; mu < nd; mu++) + { + bernoulli(rng, r); + r = weight*(2.*r - shift); + pokeLorentz(aTilde, r, mu); + } + break; + } + default: + break; } + fft.FFT_all_dim(out, aTilde, FFT::backward); out = real(out); From c6e1f645737d6785d513246db47323afaa5850e2 Mon Sep 17 00:00:00 2001 From: Vera Guelpers Date: Tue, 13 Feb 2018 09:30:23 +0000 Subject: [PATCH 058/267] Test for QED --- tests/hadrons/Test_QED.cc | 260 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 260 insertions(+) create mode 100644 tests/hadrons/Test_QED.cc diff --git a/tests/hadrons/Test_QED.cc b/tests/hadrons/Test_QED.cc new file mode 100644 index 00000000..44dd0578 --- /dev/null +++ b/tests/hadrons/Test_QED.cc @@ -0,0 +1,260 @@ +/******************************************************************************* + Grid physics library, www.github.com/paboyle/Grid + + Source file: tests/hadrons/Test_hadrons_spectrum.cc + + Copyright (C) 2015-2018 + + Author: Antonin Portelli + Author: Vera Guelpers + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + See the full license in the file "LICENSE" in the top level distribution + directory. + *******************************************************************************/ + +#include + +using namespace Grid; +using namespace Hadrons; + +int main(int argc, char *argv[]) +{ + // initialization ////////////////////////////////////////////////////////// + Grid_init(&argc, &argv); + HadronsLogError.Active(GridLogError.isActive()); + HadronsLogWarning.Active(GridLogWarning.isActive()); + HadronsLogMessage.Active(GridLogMessage.isActive()); + HadronsLogIterative.Active(GridLogIterative.isActive()); + HadronsLogDebug.Active(GridLogDebug.isActive()); + LOG(Message) << "Grid initialized" << std::endl; + + + // run setup /////////////////////////////////////////////////////////////// + Application application; + std::vector flavour = {"h"}; //{"l", "s", "c1", "c2", "c3"}; + std::vector mass = {.2}; //{.01, .04, .2 , .25 , .3 }; + + unsigned int nt = GridDefaultLatt()[Tp]; + + // global parameters + Application::GlobalPar globalPar; + globalPar.trajCounter.start = 1500; + globalPar.trajCounter.end = 1520; + globalPar.trajCounter.step = 20; + globalPar.seed = "1 2 3 4"; + application.setPar(globalPar); + // gauge field + application.createModule("gauge"); + // pt source + MSource::Point::Par ptPar; + ptPar.position = "0 0 0 0"; + application.createModule("pt", ptPar); + // sink + MSink::Point::Par sinkPar; + sinkPar.mom = "0 0 0"; + application.createModule("sink", sinkPar); + + // set fermion boundary conditions to be periodic space, antiperiodic time. + std::string boundary = "1 1 1 -1"; + + //stochastic photon field + MGauge::StochEm::Par photonPar; + photonPar.gauge = PhotonR::Gauge::feynman; + photonPar.zmScheme = PhotonR::ZmScheme::qedL; + application.createModule("ph_field", photonPar); + + + + for (unsigned int i = 0; i < flavour.size(); ++i) + { + // actions + MAction::DWF::Par actionPar; + actionPar.gauge = "gauge"; + actionPar.Ls = 8; + actionPar.M5 = 1.8; + actionPar.mass = mass[i]; + actionPar.boundary = boundary; + application.createModule("DWF_" + flavour[i], actionPar); + + + // solvers + MSolver::RBPrecCG::Par solverPar; + solverPar.action = "DWF_" + flavour[i]; + solverPar.residual = 1.0e-8; + application.createModule("CG_" + flavour[i], + solverPar); + + // propagators + MFermion::GaugeProp::Par quarkPar; + quarkPar.solver = "CG_" + flavour[i]; + quarkPar.source = "pt"; + application.createModule("Qpt_" + flavour[i], + quarkPar); + + + //seq sources with tadpole insertion + MSource::SeqConserved::Par seqPar_T; + seqPar_T.q = "Qpt_" + flavour[i] + "_5d"; + seqPar_T.action = "DWF_" + flavour[i]; + seqPar_T.tA = 0; + seqPar_T.tB = nt-1; + seqPar_T.curr_type = Current::Tadpole; + seqPar_T.mu_min = 0; + seqPar_T.mu_max = 3; + seqPar_T.mom = "0. 0. 0. 0."; + application.createModule("Qpt_" + flavour[i] + + "_seq_T", seqPar_T); + // seq propagator with tadpole insertion + MFermion::GaugeProp::Par quarkPar_seq_T; + quarkPar_seq_T.solver = "CG_" + flavour[i]; + quarkPar_seq_T.source = "Qpt_" + flavour[i] + "_seq_T"; + application.createModule("Qpt_" + flavour[i] + + "_seq_T" + flavour[i], + quarkPar_seq_T); + + + + //seq sources with conserved vector and photon insertion + MSource::SeqConserved::Par seqPar_V; + seqPar_V.q = "Qpt_" + flavour[i] + "_5d"; + seqPar_V.action = "DWF_" + flavour[i]; + seqPar_V.tA = 0; + seqPar_V.tB = nt-1; + seqPar_V.curr_type = Current::Vector; + seqPar_V.mu_min = 0; + seqPar_V.mu_max = 3; + seqPar_V.mom = "0. 0. 0. 0."; + seqPar_V.photon = "ph_field"; + application.createModule("Qpt_" + flavour[i] + + "_seq_V_ph", seqPar_V); + // seq propagator with conserved vector and photon insertion + MFermion::GaugeProp::Par quarkPar_seq_V; + quarkPar_seq_V.solver = "CG_" + flavour[i]; + quarkPar_seq_V.source = "Qpt_" + flavour[i] + "_seq_V_ph"; + application.createModule("Qpt_" + flavour[i] + + "_seq_V_ph_" + flavour[i], + quarkPar_seq_V); + + + + //double seq sources with conserved vector and photon insertion + //(for self energy) + MSource::SeqConserved::Par seqPar_VV; + seqPar_VV.q = "Qpt_" + flavour[i] + "_seq_V_ph_" + + flavour[i] + "_5d"; + seqPar_VV.action = "DWF_" + flavour[i]; + seqPar_VV.tA = 0; + seqPar_VV.tB = nt-1; + seqPar_VV.curr_type = Current::Vector; + seqPar_VV.mu_min = 0; + seqPar_VV.mu_max = 3; + seqPar_VV.mom = "0. 0. 0. 0."; + seqPar_VV.photon = "ph_field"; + application.createModule("Qpt_" + flavour[i] + + "_seq_V_ph" + flavour[i] + + "_seq_V_ph", seqPar_VV); + //double seq propagator with conserved vector and photon insertion + MFermion::GaugeProp::Par quarkPar_seq_VV; + quarkPar_seq_VV.solver = "CG_" + flavour[i]; + quarkPar_seq_VV.source = "Qpt_" + flavour[i] + "_seq_V_ph" + + flavour[i] + "_seq_V_ph"; + application.createModule("Qpt_" + flavour[i] + + "_seq_V_ph_" + flavour[i] + + "_seq_V_ph_" + flavour[i], + quarkPar_seq_VV); + + + + } + for (unsigned int i = 0; i < flavour.size(); ++i) + for (unsigned int j = i; j < flavour.size(); ++j) + { + //2pt function contraction + MContraction::Meson::Par mesPar; + mesPar.output = "QED/pt_" + flavour[i] + flavour[j]; + mesPar.q1 = "Qpt_" + flavour[i]; + mesPar.q2 = "Qpt_" + flavour[j]; + mesPar.gammas = ""; + mesPar.sink = "sink"; + application.createModule("meson_pt_" + + flavour[i] + flavour[j], + mesPar); + + + + //tadpole contraction + MContraction::Meson::Par mesPar_seq_T; + mesPar_seq_T.output = "QED/tadpole_pt_" + flavour[i] + "_T_" + + flavour[i] + "__" + flavour[j]; + mesPar_seq_T.q1 = "Qpt_" + flavour[i] + "_seq_T" + flavour[i]; + mesPar_seq_T.q2 = "Qpt_" + flavour[j]; + mesPar_seq_T.gammas = ""; + mesPar_seq_T.sink = "sink"; + application.createModule("meson_tadpole_pt_" + + flavour[i] + "_seq_T" + + flavour[i] + flavour[j], + mesPar_seq_T); + + + + //photon exchange contraction + MContraction::Meson::Par mesPar_seq_E; + mesPar_seq_E.output = "QED/exchange_pt_" + flavour[i] + "_V_ph_" + + flavour[i] + "__" + flavour[j] + "_V_ph_" + + flavour[j]; + mesPar_seq_E.q1 = "Qpt_" + flavour[i] + "_seq_V_ph_" + flavour[i]; + mesPar_seq_E.q2 = "Qpt_" + flavour[j] + "_seq_V_ph_" + flavour[j]; + mesPar_seq_E.gammas = ""; + mesPar_seq_E.sink = "sink"; + application.createModule("meson_exchange_pt_" + + flavour[i] + "_seq_V_ph_" + flavour[i] + + flavour[j] + "_seq_V_ph_" + flavour[j], + mesPar_seq_E); + + + + //self energy contraction + MContraction::Meson::Par mesPar_seq_S; + mesPar_seq_S.output = "QED/selfenergy_pt_" + flavour[i] + "_V_ph_" + + flavour[i] + "_V_ph_" + flavour[i] + "__" + + flavour[j]; + mesPar_seq_S.q1 = "Qpt_" + flavour[i] + "_seq_V_ph_" + flavour[i] + + "_seq_V_ph_" + flavour[i]; + mesPar_seq_S.q2 = "Qpt_" + flavour[j]; + mesPar_seq_S.gammas = ""; + mesPar_seq_S.sink = "sink"; + application.createModule("meson_selfenergy_pt_" + + flavour[i] + "_seq_V_ph_" + + flavour[i] + "_seq_V_ph_" + + flavour[i] + flavour[j], + mesPar_seq_S); + + } + + + + + // execution + application.saveParameterFile("QED.xml"); + application.run(); + + // epilogue + LOG(Message) << "Grid is finalizing now" << std::endl; + Grid_finalize(); + + return EXIT_SUCCESS; +} From d55212c998bba55b78bb676eb8a33f86fe6825cc Mon Sep 17 00:00:00 2001 From: Vera Guelpers Date: Wed, 14 Feb 2018 10:45:18 +0000 Subject: [PATCH 059/267] restructure SeqConservedCurrent for DWF to need less memory --- lib/qcd/action/fermion/WilsonFermion5D.cc | 96 ++++++++++------------- 1 file changed, 43 insertions(+), 53 deletions(-) diff --git a/lib/qcd/action/fermion/WilsonFermion5D.cc b/lib/qcd/action/fermion/WilsonFermion5D.cc index 92280c13..6b830a03 100644 --- a/lib/qcd/action/fermion/WilsonFermion5D.cc +++ b/lib/qcd/action/fermion/WilsonFermion5D.cc @@ -883,8 +883,7 @@ void WilsonFermion5D::SeqConservedCurrent(PropagatorField &q_in, { conformable(q_in._grid, FermionGrid()); conformable(q_in._grid, q_out._grid); - PropagatorField tmpFwd(FermionGrid()), tmpBwd(FermionGrid()), - tmp(FermionGrid()); + PropagatorField tmp(GaugeGrid()),tmp2(GaugeGrid()); Complex i(0.0, 1.0); unsigned int tshift = (mu == Tp) ? 1 : 0; unsigned int LLs = q_in._grid->_rdimensions[0]; @@ -895,69 +894,60 @@ void WilsonFermion5D::SeqConservedCurrent(PropagatorField &q_in, LatticeCoordinate(coords, Tp); - //QED: photon field is 4dim, but need a 5dim object to multiply to - // DWF PropagatorField - Lattice> lattice_cmplx_5d(FermionGrid()); for (unsigned int s = 0; s < LLs; ++s) - { - InsertSlice(lattice_cmplx,lattice_cmplx_5d, s, 0); - } - - - - // Need q(x + mu, s) and q(x - mu, s). 5D lattice so shift 4D coordinate mu - // by one. - tmp = Cshift(q_in, mu + 1, 1); - tmpFwd = tmp*lattice_cmplx_5d; - tmp = lattice_cmplx_5d*q_in; - tmpBwd = Cshift(tmp, mu + 1, -1); - - parallel_for (unsigned int sU = 0; sU < Umu._grid->oSites(); ++sU) { - // Compute the sequential conserved current insertion only if our simd - // object contains a timeslice we need. - vInteger t_mask = ((coords._odata[sU] >= tmin) && - (coords._odata[sU] <= tmax)); - Integer timeSlices = Reduce(t_mask); + bool axial_sign = ((curr_type == Current::Axial) && (s < (LLs / 2))); + bool tadpole_sign = (curr_type == Current::Tadpole); + bool switch_sgn = tadpole_sign || axial_sign; - if (timeSlices > 0) - { - unsigned int sF = sU * LLs; - for (unsigned int s = 0; s < LLs; ++s) + + //forward direction: Need q(x + mu, s)*A(x) + ExtractSlice(tmp2, q_in, s, 0); //q(x,s) + tmp = Cshift(tmp2, mu, 1); //q(x+mu,s) + tmp2 = tmp*lattice_cmplx; //q(x+mu,s)*A(x) + + parallel_for (unsigned int sU = 0; sU < Umu._grid->oSites(); ++sU) + { + // Compute the sequential conserved current insertion only if our simd + // object contains a timeslice we need. + vInteger t_mask = ((coords._odata[sU] >= tmin) && + (coords._odata[sU] <= tmax)); + Integer timeSlices = Reduce(t_mask); + + if (timeSlices > 0) { - bool axial_sign = ((curr_type == Current::Axial) && (s < (LLs / 2))); - bool tadpole_sign = (curr_type == Current::Tadpole); - bool switch_sgn = tadpole_sign || axial_sign; - - Kernels::SeqConservedCurrentSiteFwd(tmpFwd._odata[sF], - q_out._odata[sF], Umu, sU, - mu, t_mask, switch_sgn); - ++sF; + unsigned int sF = sU * LLs + s; + Kernels::SeqConservedCurrentSiteFwd(tmp2._odata[sU], + q_out._odata[sF], Umu, sU, + mu, t_mask, switch_sgn); } + } - // Repeat for backward direction. - t_mask = ((coords._odata[sU] >= (tmin + tshift)) && - (coords._odata[sU] <= (tmax + tshift))); + //backward direction: Need q(x - mu, s)*A(x-mu) + ExtractSlice(tmp2, q_in, s, 0); //q(x,s) + tmp = lattice_cmplx*tmp2; //q(x,s)*A(x) + tmp2 = Cshift(tmp, mu, -1); //q(x-mu,s)*A(x-mu,s) - //if tmax = LLt-1 (last timeslice) include timeslice 0 if the time is shifted (mu=3) - unsigned int t0 = 0; - if((tmax==LLt-1) && (tshift==1)) t_mask = (t_mask || (coords._odata[sU] == t0 )); + parallel_for (unsigned int sU = 0; sU < Umu._grid->oSites(); ++sU) + { + vInteger t_mask = ((coords._odata[sU] >= (tmin + tshift)) && + (coords._odata[sU] <= (tmax + tshift))); - timeSlices = Reduce(t_mask); + //if tmax = LLt-1 (last timeslice) include timeslice 0 if the time is shifted (mu=3) + unsigned int t0 = 0; + if((tmax==LLt-1) && (tshift==1)) t_mask = (t_mask || (coords._odata[sU] == t0 )); - if (timeSlices > 0) - { - unsigned int sF = sU * LLs; - for (unsigned int s = 0; s < LLs; ++s) + Integer timeSlices = Reduce(t_mask); + + if (timeSlices > 0) { - bool axial_sign = ((curr_type == Current::Axial) && (s < (LLs / 2))); - Kernels::SeqConservedCurrentSiteBwd(tmpBwd._odata[sF], - q_out._odata[sF], Umu, sU, - mu, t_mask, axial_sign); - ++sF; + unsigned int sF = sU * LLs + s; + Kernels::SeqConservedCurrentSiteBwd(tmp2._odata[sU], + q_out._odata[sF], Umu, sU, + mu, t_mask, axial_sign); } - } + } } } From 4680a977c3e961f949eed3b8ee1116f8839197b5 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Wed, 14 Feb 2018 16:30:09 +0000 Subject: [PATCH 060/267] QedFVol: set infinite-volume photon propagator to 1 at x=0, so that momentum-spage photon propagator is non-negative. Need to check whether this is sufficient for all volumes. --- lib/qcd/action/gauge/Photon.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/qcd/action/gauge/Photon.h b/lib/qcd/action/gauge/Photon.h index 76211b06..4f86deb2 100644 --- a/lib/qcd/action/gauge/Photon.h +++ b/lib/qcd/action/gauge/Photon.h @@ -109,7 +109,7 @@ namespace QCD{ std::vector &l = grid->_fdimensions; std::vector x0(nd,0); TComplex Tone = Complex(1.0,0.0); - TComplex Tzero = Complex(0.0,0.0); + // TComplex Tzero = Complex(0.0,0.0); FFT fft(grid); one = Complex(1.0,0.0); @@ -122,7 +122,7 @@ namespace QCD{ } pokeSite(Tone, out, x0); out = one/out; - pokeSite(Tzero, out, x0); + // pokeSite(Tzero, out, x0); fft.FFT_all_dim(out, out, FFT::forward); } From 69e4ecc1d27c76c79d2e8951d75961ba1e002347 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Wed, 14 Feb 2018 17:37:18 +0000 Subject: [PATCH 061/267] QedFVol: Fix single precision build error --- lib/qcd/action/gauge/Photon.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/qcd/action/gauge/Photon.h b/lib/qcd/action/gauge/Photon.h index 4f86deb2..2bdf70dd 100644 --- a/lib/qcd/action/gauge/Photon.h +++ b/lib/qcd/action/gauge/Photon.h @@ -117,7 +117,8 @@ namespace QCD{ for(int mu = 0; mu < nd; mu++) { LatticeCoordinate(xmu,mu); - xmu = where(xmu < l[mu]/2.0, xmu, xmu-double(l[mu])); + Real lo2 = l[mu]/2.0; + xmu = where(xmu < lo2, xmu, xmu-double(l[mu])); out = out + toComplex(4*M_PI*M_PI*xmu*xmu); } pokeSite(Tone, out, x0); From ec3954ff5f1549ef43f8c81b57565f3990c910cb Mon Sep 17 00:00:00 2001 From: James Harrison Date: Fri, 23 Feb 2018 14:53:05 +0000 Subject: [PATCH 062/267] QedFVol: Add input parameter G(x=0) for infinite-volume photon --- extras/Hadrons/Modules/MGauge/StochEm.cc | 2 +- extras/Hadrons/Modules/MGauge/StochEm.hpp | 3 ++- extras/Hadrons/Modules/MGauge/UnitEm.cc | 2 +- lib/qcd/action/gauge/Photon.h | 12 +++++++----- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/extras/Hadrons/Modules/MGauge/StochEm.cc b/extras/Hadrons/Modules/MGauge/StochEm.cc index 4c18b968..fec64699 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.cc +++ b/extras/Hadrons/Modules/MGauge/StochEm.cc @@ -68,7 +68,7 @@ void TStochEm::execute(void) LOG(Message) << "Generating stochastic EM potential..." << std::endl; std::vector improvements = strToVec(par().improvement); - PhotonR photon(par().gauge, par().zmScheme, improvements); + PhotonR photon(par().gauge, par().zmScheme, improvements, par().G0_qedInf); auto &a = envGet(EmField, getName()); auto &w = envGet(EmComp, "_" + getName() + "_weight"); diff --git a/extras/Hadrons/Modules/MGauge/StochEm.hpp b/extras/Hadrons/Modules/MGauge/StochEm.hpp index 11519b52..8ed58c4b 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.hpp +++ b/extras/Hadrons/Modules/MGauge/StochEm.hpp @@ -45,7 +45,8 @@ public: GRID_SERIALIZABLE_CLASS_MEMBERS(StochEmPar, PhotonR::Gauge, gauge, PhotonR::ZmScheme, zmScheme, - std::string, improvement); + std::string, improvement, + Real, G0_qedInf); }; class TStochEm: public Module diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.cc b/extras/Hadrons/Modules/MGauge/UnitEm.cc index e23840f5..ad842584 100644 --- a/extras/Hadrons/Modules/MGauge/UnitEm.cc +++ b/extras/Hadrons/Modules/MGauge/UnitEm.cc @@ -61,7 +61,7 @@ void TUnitEm::setup(void) // execution /////////////////////////////////////////////////////////////////// void TUnitEm::execute(void) { - PhotonR photon(0, 0, std::vector()); // Just chose arbitrary input values here + PhotonR photon(0, 0, std::vector(), 0.0); // Just chose arbitrary input values here auto &a = envGet(EmField, getName()); LOG(Message) << "Generating unit EM potential..." << std::endl; photon.UnitField(a); diff --git a/lib/qcd/action/gauge/Photon.h b/lib/qcd/action/gauge/Photon.h index 2bdf70dd..bcfe40e0 100644 --- a/lib/qcd/action/gauge/Photon.h +++ b/lib/qcd/action/gauge/Photon.h @@ -60,7 +60,7 @@ namespace QCD{ GRID_SERIALIZABLE_ENUM(Gauge, undef, feynman, 1, coulomb, 2, landau, 3); GRID_SERIALIZABLE_ENUM(ZmScheme, undef, qedL, 1, qedTL, 2, qedInf, 3); public: - Photon(Gauge gauge, ZmScheme zmScheme, std::vector improvements); + Photon(Gauge gauge, ZmScheme zmScheme, std::vector improvements, Real G0); virtual ~Photon(void) = default; void FreePropagator(const GaugeField &in, GaugeField &out); void MomentumSpacePropagator(const GaugeField &in, GaugeField &out); @@ -77,13 +77,15 @@ namespace QCD{ Gauge gauge_; ZmScheme zmScheme_; std::vector improvement_; + Real G0_; }; typedef Photon PhotonR; template - Photon::Photon(Gauge gauge, ZmScheme zmScheme, std::vector improvements) - : gauge_(gauge), zmScheme_(zmScheme), improvement_(improvements) + Photon::Photon(Gauge gauge, ZmScheme zmScheme, + std::vector improvements, Real G0) + : gauge_(gauge), zmScheme_(zmScheme), improvement_(improvements), G0_(G0) {} template @@ -109,7 +111,7 @@ namespace QCD{ std::vector &l = grid->_fdimensions; std::vector x0(nd,0); TComplex Tone = Complex(1.0,0.0); - // TComplex Tzero = Complex(0.0,0.0); + TComplex Tzero = Complex(G0_,0.0); FFT fft(grid); one = Complex(1.0,0.0); @@ -123,7 +125,7 @@ namespace QCD{ } pokeSite(Tone, out, x0); out = one/out; - // pokeSite(Tzero, out, x0); + pokeSite(Tzero, out, x0); fft.FFT_all_dim(out, out, FFT::forward); } From fdbd42e542dee144c0fd238917baaee90399ffac Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 26 Feb 2018 19:22:43 +0000 Subject: [PATCH 063/267] Hadrons: first implementation of local coherence Lanczos --- extras/Hadrons/Environment.cc | 2 +- extras/Hadrons/Modules.hpp | 31 +-- .../Modules/MSolver/LocalCoherenceLanczos.hpp | 211 ++++++++++++++++++ 3 files changed, 214 insertions(+), 30 deletions(-) create mode 100644 extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp diff --git a/extras/Hadrons/Environment.cc b/extras/Hadrons/Environment.cc index 82b0dda1..6554122e 100644 --- a/extras/Hadrons/Environment.cc +++ b/extras/Hadrons/Environment.cc @@ -270,7 +270,7 @@ int Environment::getObjectModule(const std::string name) const unsigned int Environment::getObjectLs(const unsigned int address) const { - if (hasObject(address)) + if (hasCreatedObject(address)) { return object_[address].Ls; } diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 135934fb..d1f947a2 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,31 +1,3 @@ -/************************************************************************************* - -Grid physics library, www.github.com/paboyle/Grid - -Source file: extras/Hadrons/Modules.hpp - -Copyright (C) 2015-2018 - -Author: Antonin Portelli -Author: Lanny91 - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -See the full license in the file "LICENSE" in the top level distribution directory -*************************************************************************************/ -/* END LEGAL */ #include #include #include @@ -43,11 +15,12 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include #include #include #include -#include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp new file mode 100644 index 00000000..1ce87c2b --- /dev/null +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -0,0 +1,211 @@ +#ifndef Hadrons_MSolver_LocalCoherenceLanczos_hpp_ +#define Hadrons_MSolver_LocalCoherenceLanczos_hpp_ + +#include +#include +#include +#include + +#ifndef DEFAULT_LANCZOS_NBASIS +#define DEFAULT_LANCZOS_NBASIS 60 +#endif + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * LocalCoherenceLanczos * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MSolver) + +class LocalCoherenceLanczosPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(LocalCoherenceLanczosPar, + std::string, action, + int, doFine, + int, doCoarse, + LanczosParams, fineParams, + LanczosParams, coarseParams, + ChebyParams, smoother, + RealD, coarseRelaxTol, + std::string, blockSize); +}; + +template +class TLocalCoherenceLanczos: public Module +{ +public: + FERM_TYPE_ALIASES(FImpl,); + typedef LocalCoherenceLanczos LCL; + typedef typename LCL::FineField FineField; + typedef typename LCL::CoarseField CoarseField; + typedef SchurDiagMooeeOperator SchurFMat; +public: + // constructor + TLocalCoherenceLanczos(const std::string name); + // destructor + virtual ~TLocalCoherenceLanczos(void) = default; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +private: + void makeCoarseGrid(void); +private: + std::vector coarseDim_; + int Ls_, cLs_{1}; + std::unique_ptr coarseGrid4_{nullptr}; + std::unique_ptr coarseGrid_{nullptr}; + std::unique_ptr coarseGrid4Rb_{nullptr}; + std::unique_ptr coarseGridRb_{nullptr}; + std::string fevecName_, cevecName_, fevalName_, cevalName_; +}; + +MODULE_REGISTER_NS(LocalCoherenceLanczos, + ARG(TLocalCoherenceLanczos), + MSolver); + +/****************************************************************************** + * TLocalCoherenceLanczos implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TLocalCoherenceLanczos::TLocalCoherenceLanczos(const std::string name) +: Module(name) +{ + fevecName_ = getName() + "_fineEvec"; + cevecName_ = getName() + "_coarseEvec"; + fevalName_ = getName() + "_fineEval"; + cevalName_ = getName() + "_coarseEval"; +} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TLocalCoherenceLanczos::getInput(void) +{ + std::vector in = {par().action}; + + return in; +} + +template +std::vector TLocalCoherenceLanczos::getOutput(void) +{ + std::vector out = {fevecName_, cevecName_, fevalName_, cevalName_}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TLocalCoherenceLanczos::makeCoarseGrid(void) +{ + int nd = env().getNd(); + std::vector blockSize = strToVec(par().blockSize); + auto fineDim = env().getDim(); + + Ls_ = env().getObjectLs(par().action); + env().createGrid(Ls_); + coarseDim_.resize(nd); + for (int d = 0; d < coarseDim_.size(); d++) + { + coarseDim_[d] = fineDim[d]/blockSize[d]; + if (coarseDim_[d]*blockSize[d] != fineDim[d]) + { + HADRON_ERROR(Size, "Fine dimension " + std::to_string(d) + + " (" + std::to_string(fineDim[d]) + + ") not divisible by coarse dimension (" + + std::to_string(coarseDim_[d]) + ")"); + } + } + if (blockSize.size() > nd) + { + cLs_ = Ls_/blockSize[nd]; + if (cLs_*blockSize[nd] != Ls_) + { + HADRON_ERROR(Size, "Fine Ls (" + std::to_string(Ls_) + + ") not divisible by coarse Ls (" + + std::to_string(cLs_) + ")"); + } + } + if (Ls_ > 1) + { + coarseGrid4_.reset(SpaceTimeGrid::makeFourDimGrid( + coarseDim_, GridDefaultSimd(nd, vComplex::Nsimd()), + GridDefaultMpi())); + coarseGrid4Rb_.reset(SpaceTimeGrid::makeFourDimRedBlackGrid(coarseGrid4_.get())); + coarseGrid_.reset(SpaceTimeGrid::makeFiveDimGrid(cLs_, coarseGrid4_.get())); + coarseGridRb_.reset(SpaceTimeGrid::makeFiveDimRedBlackGrid(cLs_, coarseGrid4_.get())); + } + else + { + coarseGrid_.reset(SpaceTimeGrid::makeFourDimGrid( + coarseDim_, GridDefaultSimd(nd, vComplex::Nsimd()), + GridDefaultMpi())); + coarseGridRb_.reset(SpaceTimeGrid::makeFourDimRedBlackGrid(coarseGrid_.get())); + } +} + +template +void TLocalCoherenceLanczos::setup(void) +{ + LOG(Message) << "Setting up local coherence Lanczos eigensolver for" + << " action '" << par().action << "' (" << nBasis + << " eigenvectors)..." << std::endl; + + if (!coarseGrid_) + { + makeCoarseGrid(); + } + envCreate(std::vector, fevecName_, Ls_, par().fineParams.Nm, + env().getRbGrid(Ls_)); + envCreate(std::vector, cevecName_, Ls_, par().coarseParams.Nm, + coarseGridRb_.get()); + envCreate(std::vector, fevalName_, Ls_, par().fineParams.Nm); + envCreate(std::vector, cevalName_, Ls_, par().coarseParams.Nm); + envTmp(SchurFMat, "mat", Ls_, envGet(FMat, par().action)); + envGetTmp(SchurFMat, mat); + envTmp(LCL, "solver", Ls_, env().getRbGrid(Ls_), coarseGridRb_.get(), mat, Odd, + envGet(std::vector, fevecName_), + envGet(std::vector, cevecName_), + envGet(std::vector, fevalName_), + envGet(std::vector, cevalName_)); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TLocalCoherenceLanczos::execute(void) +{ + auto &fine = par().fineParams; + auto &coarse = par().coarseParams; + + envGetTmp(LCL, solver); + if (par().doFine) + { + LOG(Message) << "Performing fine grid IRL -- Nstop= " + << fine.Nstop << ", Nk= " << fine.Nk << ", Nm= " + << fine.Nm << std::endl; + solver.calcFine(fine.Cheby, fine.Nstop, fine.Nk, fine.Nm, fine.resid, + fine.MaxIt, fine.betastp, fine.MinRes); + LOG(Message) << "Orthogonalising" << std::endl; + solver.Orthogonalise(); + } + if (par().doCoarse) + { + LOG(Message) << "Performing coarse grid IRL -- Nstop= " + << fine.Nstop << ", Nk= " << fine.Nk << ", Nm= " + << fine.Nm << std::endl; + solver.calcCoarse(coarse.Cheby, par().smoother, par().coarseRelaxTol, + coarse.Nstop, coarse.Nk, coarse.Nm, coarse.resid, + coarse.MaxIt, coarse.betastp, coarse.MinRes); + } +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MSolver_LocalCoherenceLanczos_hpp_ From 43578a3eb496fe97cfc791eb6a44584c0e1f738a Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 26 Feb 2018 19:24:19 +0000 Subject: [PATCH 064/267] Hadrons: copyright update --- extras/Hadrons/Modules.hpp | 30 +++++++++++++++++++ .../Hadrons/Modules/MAction/WilsonClover.hpp | 8 ++--- extras/Hadrons/Modules/MFermion/GaugeProp.hpp | 2 ++ extras/Hadrons/Modules/MGauge/FundtoHirep.hpp | 6 ++-- .../Modules/MSolver/LocalCoherenceLanczos.hpp | 27 +++++++++++++++++ extras/Hadrons/modules.inc | 5 ++-- 6 files changed, 67 insertions(+), 11 deletions(-) diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index d1f947a2..1334a9b4 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,3 +1,33 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli +Author: Guido Cossu +Author: Lanny91 +Author: pretidav + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include #include #include diff --git a/extras/Hadrons/Modules/MAction/WilsonClover.hpp b/extras/Hadrons/Modules/MAction/WilsonClover.hpp index c369f086..d5174c6d 100644 --- a/extras/Hadrons/Modules/MAction/WilsonClover.hpp +++ b/extras/Hadrons/Modules/MAction/WilsonClover.hpp @@ -2,12 +2,12 @@ Grid physics library, www.github.com/paboyle/Grid -Source file: extras/Hadrons/Modules/MAction/Wilson.hpp +Source file: extras/Hadrons/Modules/MAction/WilsonClover.hpp -Copyright (C) 2015 -Copyright (C) 2016 +Copyright (C) 2015-2018 -Author: Antonin Portelli +Author: Guido Cossu +Author: pretidav This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp index 412e92d5..45b9de6c 100644 --- a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp +++ b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp @@ -7,7 +7,9 @@ Source file: extras/Hadrons/Modules/MFermion/GaugeProp.hpp Copyright (C) 2015-2018 Author: Antonin Portelli +Author: Guido Cossu Author: Lanny91 +Author: pretidav This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp b/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp index 6f072783..4fba59f0 100644 --- a/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp +++ b/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp @@ -4,11 +4,9 @@ Grid physics library, www.github.com/paboyle/Grid Source file: extras/Hadrons/Modules/MGauge/FundtoHirep.hpp -Copyright (C) 2015 -Copyright (C) 2016 +Copyright (C) 2015-2018 -Author: David Preti - Guido Cossu +Author: pretidav This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index 1ce87c2b..5fd486fd 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MSolver_LocalCoherenceLanczos_hpp_ #define Hadrons_MSolver_LocalCoherenceLanczos_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 90602275..4a9b2630 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -1,6 +1,4 @@ modules_cc =\ - Modules/MScalar/ChargedProp.cc \ - Modules/MScalar/FreeProp.cc \ Modules/MContraction/WeakHamiltonianEye.cc \ Modules/MContraction/WeakNeutral4ptDisc.cc \ Modules/MContraction/WeakHamiltonianNonEye.cc \ @@ -30,11 +28,12 @@ modules_hpp =\ Modules/MSource/SeqConserved.hpp \ Modules/MSink/Smear.hpp \ Modules/MSink/Point.hpp \ + Modules/MSolver/LocalCoherenceLanczos.hpp \ Modules/MSolver/RBPrecCG.hpp \ Modules/MGauge/Unit.hpp \ Modules/MGauge/Random.hpp \ - Modules/MGauge/StochEm.hpp \ Modules/MGauge/FundtoHirep.hpp \ + Modules/MGauge/StochEm.hpp \ Modules/MUtilities/TestSeqGamma.hpp \ Modules/MUtilities/TestSeqConserved.hpp \ Modules/MLoop/NoiseLoop.hpp \ From 8a049f27b840cad2e54f822a9c3c28cf423d996a Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 27 Feb 2018 13:46:59 +0000 Subject: [PATCH 065/267] Hadrons: Lanczos code improvement --- extras/Hadrons/Global.cc | 3 + extras/Hadrons/Global.hpp | 1 + extras/Hadrons/LanczosUtils.hpp | 88 +++++++++++++++++++ extras/Hadrons/Makefile.am | 1 + .../Modules/MSolver/LocalCoherenceLanczos.hpp | 80 +++++++++-------- 5 files changed, 135 insertions(+), 38 deletions(-) create mode 100644 extras/Hadrons/LanczosUtils.hpp diff --git a/extras/Hadrons/Global.cc b/extras/Hadrons/Global.cc index 9a90a08c..b121434f 100644 --- a/extras/Hadrons/Global.cc +++ b/extras/Hadrons/Global.cc @@ -37,6 +37,7 @@ HadronsLogger Hadrons::HadronsLogWarning(1,"Warning"); HadronsLogger Hadrons::HadronsLogMessage(1,"Message"); HadronsLogger Hadrons::HadronsLogIterative(1,"Iterative"); HadronsLogger Hadrons::HadronsLogDebug(1,"Debug"); +HadronsLogger Hadrons::HadronsLogIRL(1,"IRL"); void Hadrons::initLogger(void) { @@ -46,11 +47,13 @@ void Hadrons::initLogger(void) GridLogMessage.setTopWidth(w); GridLogIterative.setTopWidth(w); GridLogDebug.setTopWidth(w); + GridLogIRL.setTopWidth(w); HadronsLogError.Active(GridLogError.isActive()); HadronsLogWarning.Active(GridLogWarning.isActive()); HadronsLogMessage.Active(GridLogMessage.isActive()); HadronsLogIterative.Active(GridLogIterative.isActive()); HadronsLogDebug.Active(GridLogDebug.isActive()); + HadronsLogIRL.Active(GridLogIRL.isActive()); } // type utilities ////////////////////////////////////////////////////////////// diff --git a/extras/Hadrons/Global.hpp b/extras/Hadrons/Global.hpp index fc069ed6..7f60ebcb 100644 --- a/extras/Hadrons/Global.hpp +++ b/extras/Hadrons/Global.hpp @@ -111,6 +111,7 @@ extern HadronsLogger HadronsLogWarning; extern HadronsLogger HadronsLogMessage; extern HadronsLogger HadronsLogIterative; extern HadronsLogger HadronsLogDebug; +extern HadronsLogger HadronsLogIRL; void initLogger(void); diff --git a/extras/Hadrons/LanczosUtils.hpp b/extras/Hadrons/LanczosUtils.hpp new file mode 100644 index 00000000..e6a78753 --- /dev/null +++ b/extras/Hadrons/LanczosUtils.hpp @@ -0,0 +1,88 @@ +#ifndef Hadrons_LanczosUtils_hpp_ +#define Hadrons_LanczosUtils_hpp_ + +#include +#include + +BEGIN_HADRONS_NAMESPACE + +// Lanczos type +#ifndef HADRONS_DEFAULT_LANCZOS_NBASIS +#define HADRONS_DEFAULT_LANCZOS_NBASIS 60 +#endif + +template +using LCL = LocalCoherenceLanczos; + +template +struct EigenPack +{ + std::vector eval; + std::vector evec; + + EigenPack(void) = default; + + EigenPack(const size_t size, GridBase *grid) + { + resize(size, grid); + } + + void resize(const size_t size, GridBase *grid) + { + eval.resize(size); + evec.resize(size, grid); + } + + void read(const std::string fileStem) + { + std::string evecFilename = fileStem + "_evec.bin"; + std::string evalFilename = fileStem + "_eval.xml"; + emptyUserRecord record; + ScidacReader binReader; + XmlReader xmlReader(evalFilename); + + LOG(Message) << "Reading " << evec.size() << " eigenvectors from '" + << evecFilename << "'" << std::endl; + binReader.open(evecFilename); + for(int k = 0; k < evec.size(); ++k) + { + binReader.readScidacFieldRecord(evec[k], record); + } + binReader.close(); + LOG(Message) << "Reading " << eval.size() << " eigenvalues from '" + << evalFilename << "'" << std::endl; + Grid::read(xmlReader, "evals", eval); + } + + void write(const std::string fileStem) + { + std::string evecFilename = fileStem + "_evec.bin"; + std::string evalFilename = fileStem + "_eval.xml"; + emptyUserRecord record; + ScidacWriter binWriter; + XmlWriter xmlWriter(evalFilename); + + LOG(Message) << "Writing " << evec.size() << " eigenvectors to '" + << evecFilename << "'" << std::endl; + binWriter.open(fileStem + "_evec.bin"); + for(int k = 0; k < evec.size(); ++k) + { + binWriter.writeScidacFieldRecord(evec[k], record); + } + binWriter.close(); + LOG(Message) << "Writing " << eval.size() << " eigenvalues to '" + << evalFilename << "'" << std::endl; + Grid::write(xmlWriter, "evals", eval); + } +}; + +template +using FineEigenPack = EigenPack; + +template +using CoarseEigenPack = EigenPack::CoarseField>; + +END_HADRONS_NAMESPACE + +#endif // Hadrons_LanczosUtils_hpp_ \ No newline at end of file diff --git a/extras/Hadrons/Makefile.am b/extras/Hadrons/Makefile.am index 3d07679a..477b93e4 100644 --- a/extras/Hadrons/Makefile.am +++ b/extras/Hadrons/Makefile.am @@ -21,6 +21,7 @@ nobase_libHadrons_a_HEADERS = \ GeneticScheduler.hpp \ Global.hpp \ Graph.hpp \ + LanczosUtils.hpp \ Module.hpp \ Modules.hpp \ ModuleFactory.hpp \ diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index 5fd486fd..a41a7839 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -31,11 +31,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include -#include - -#ifndef DEFAULT_LANCZOS_NBASIS -#define DEFAULT_LANCZOS_NBASIS 60 -#endif +#include BEGIN_HADRONS_NAMESPACE @@ -55,7 +51,8 @@ public: LanczosParams, coarseParams, ChebyParams, smoother, RealD, coarseRelaxTol, - std::string, blockSize); + std::string, blockSize, + std::string, output); }; template @@ -63,9 +60,9 @@ class TLocalCoherenceLanczos: public Module { public: FERM_TYPE_ALIASES(FImpl,); - typedef LocalCoherenceLanczos LCL; - typedef typename LCL::FineField FineField; - typedef typename LCL::CoarseField CoarseField; + typedef LCL LCL; + typedef FineEigenPack FineEigenPack; + typedef CoarseEigenPack CoarseEigenPack; typedef SchurDiagMooeeOperator SchurFMat; public: // constructor @@ -88,12 +85,12 @@ private: std::unique_ptr coarseGrid_{nullptr}; std::unique_ptr coarseGrid4Rb_{nullptr}; std::unique_ptr coarseGridRb_{nullptr}; - std::string fevecName_, cevecName_, fevalName_, cevalName_; + std::string fineName_, coarseName_; }; MODULE_REGISTER_NS(LocalCoherenceLanczos, - ARG(TLocalCoherenceLanczos), - MSolver); + ARG(TLocalCoherenceLanczos), + MSolver); /****************************************************************************** * TLocalCoherenceLanczos implementation * @@ -103,10 +100,8 @@ template TLocalCoherenceLanczos::TLocalCoherenceLanczos(const std::string name) : Module(name) { - fevecName_ = getName() + "_fineEvec"; - cevecName_ = getName() + "_coarseEvec"; - fevalName_ = getName() + "_fineEval"; - cevalName_ = getName() + "_coarseEval"; + fineName_ = getName() + "_fine"; + coarseName_ = getName() + "_coarse"; } // dependencies/products /////////////////////////////////////////////////////// @@ -121,7 +116,7 @@ std::vector TLocalCoherenceLanczos::getInput(void) template std::vector TLocalCoherenceLanczos::getOutput(void) { - std::vector out = {fevecName_, cevecName_, fevalName_, cevalName_}; + std::vector out = {fineName_, coarseName_}; return out; } @@ -187,47 +182,56 @@ void TLocalCoherenceLanczos::setup(void) { makeCoarseGrid(); } - envCreate(std::vector, fevecName_, Ls_, par().fineParams.Nm, + envCreate(FineEigenPack, fineName_, Ls_, par().fineParams.Nm, env().getRbGrid(Ls_)); - envCreate(std::vector, cevecName_, Ls_, par().coarseParams.Nm, + envCreate(CoarseEigenPack, coarseName_, Ls_, par().coarseParams.Nm, coarseGridRb_.get()); - envCreate(std::vector, fevalName_, Ls_, par().fineParams.Nm); - envCreate(std::vector, cevalName_, Ls_, par().coarseParams.Nm); + auto &fine = envGet(FineEigenPack, fineName_); + auto &coarse = envGet(CoarseEigenPack, coarseName_); envTmp(SchurFMat, "mat", Ls_, envGet(FMat, par().action)); envGetTmp(SchurFMat, mat); - envTmp(LCL, "solver", Ls_, env().getRbGrid(Ls_), coarseGridRb_.get(), mat, Odd, - envGet(std::vector, fevecName_), - envGet(std::vector, cevecName_), - envGet(std::vector, fevalName_), - envGet(std::vector, cevalName_)); + envTmp(LCL, "solver", Ls_, env().getRbGrid(Ls_), coarseGridRb_.get(), mat, + Odd, fine.evec, coarse.evec, fine.eval, coarse.eval); } // execution /////////////////////////////////////////////////////////////////// template void TLocalCoherenceLanczos::execute(void) { - auto &fine = par().fineParams; - auto &coarse = par().coarseParams; - + auto &finePar = par().fineParams; + auto &coarsePar = par().coarseParams; + auto &fine = envGet(FineEigenPack, fineName_); + auto &coarse = envGet(CoarseEigenPack, coarseName_); + envGetTmp(LCL, solver); if (par().doFine) { LOG(Message) << "Performing fine grid IRL -- Nstop= " - << fine.Nstop << ", Nk= " << fine.Nk << ", Nm= " - << fine.Nm << std::endl; - solver.calcFine(fine.Cheby, fine.Nstop, fine.Nk, fine.Nm, fine.resid, - fine.MaxIt, fine.betastp, fine.MinRes); + << finePar.Nstop << ", Nk= " << finePar.Nk << ", Nm= " + << finePar.Nm << std::endl; + solver.calcFine(finePar.Cheby, finePar.Nstop, finePar.Nk, finePar.Nm, + finePar.resid,finePar.MaxIt, finePar.betastp, + finePar.MinRes); LOG(Message) << "Orthogonalising" << std::endl; solver.Orthogonalise(); + if (!par().output.empty()) + { + fine.write(par().output + "_fine"); + } } if (par().doCoarse) { LOG(Message) << "Performing coarse grid IRL -- Nstop= " - << fine.Nstop << ", Nk= " << fine.Nk << ", Nm= " - << fine.Nm << std::endl; - solver.calcCoarse(coarse.Cheby, par().smoother, par().coarseRelaxTol, - coarse.Nstop, coarse.Nk, coarse.Nm, coarse.resid, - coarse.MaxIt, coarse.betastp, coarse.MinRes); + << coarsePar.Nstop << ", Nk= " << coarsePar.Nk << ", Nm= " + << coarsePar.Nm << std::endl; + solver.calcCoarse(coarsePar.Cheby, par().smoother, par().coarseRelaxTol, + coarsePar.Nstop, coarsePar.Nk, coarsePar.Nm, + coarsePar.resid, coarsePar.MaxIt, coarsePar.betastp, + coarsePar.MinRes); + if (!par().output.empty()) + { + coarse.write(par().output + "_coarse"); + } } } From 48282260956b914eae53ab0b32774bbbfc4e4334 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 27 Feb 2018 14:43:51 +0000 Subject: [PATCH 066/267] Hadrons: prettier log --- extras/Hadrons/Global.cc | 17 ++++++++++++++++- lib/log/Log.h | 10 ++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/extras/Hadrons/Global.cc b/extras/Hadrons/Global.cc index b121434f..0164a1ab 100644 --- a/extras/Hadrons/Global.cc +++ b/extras/Hadrons/Global.cc @@ -41,19 +41,34 @@ HadronsLogger Hadrons::HadronsLogIRL(1,"IRL"); void Hadrons::initLogger(void) { - auto w = std::string("Hadrons").length(); + auto w = std::string("Hadrons").length(); + int cw = 8; + + GridLogError.setTopWidth(w); GridLogWarning.setTopWidth(w); GridLogMessage.setTopWidth(w); GridLogIterative.setTopWidth(w); GridLogDebug.setTopWidth(w); GridLogIRL.setTopWidth(w); + GridLogError.setChanWidth(cw); + GridLogWarning.setChanWidth(cw); + GridLogMessage.setChanWidth(cw); + GridLogIterative.setChanWidth(cw); + GridLogDebug.setChanWidth(cw); + GridLogIRL.setChanWidth(cw); HadronsLogError.Active(GridLogError.isActive()); HadronsLogWarning.Active(GridLogWarning.isActive()); HadronsLogMessage.Active(GridLogMessage.isActive()); HadronsLogIterative.Active(GridLogIterative.isActive()); HadronsLogDebug.Active(GridLogDebug.isActive()); HadronsLogIRL.Active(GridLogIRL.isActive()); + HadronsLogError.setChanWidth(cw); + HadronsLogWarning.setChanWidth(cw); + HadronsLogMessage.setChanWidth(cw); + HadronsLogIterative.setChanWidth(cw); + HadronsLogDebug.setChanWidth(cw); + HadronsLogIRL.setChanWidth(cw); } // type utilities ////////////////////////////////////////////////////////////// diff --git a/lib/log/Log.h b/lib/log/Log.h index 011a7250..b58c5d16 100644 --- a/lib/log/Log.h +++ b/lib/log/Log.h @@ -86,7 +86,7 @@ protected: Colours &Painter; int active; int timing_mode; - int topWidth{-1}; + int topWidth{-1}, chanWidth{-1}; static int timestamp; std::string name, topName; std::string COLOUR; @@ -126,6 +126,7 @@ public: } } void setTopWidth(const int w) {topWidth = w;} + void setChanWidth(const int w) {chanWidth = w;} friend std::ostream& operator<< (std::ostream& stream, Logger& log){ @@ -136,7 +137,12 @@ public: stream << std::setw(log.topWidth); } stream << log.topName << log.background()<< " : "; - stream << log.colour() << std::left << log.name << log.background() << " : "; + stream << log.colour() << std::left; + if (log.chanWidth > 0) + { + stream << std::setw(log.chanWidth); + } + stream << log.name << log.background() << " : "; if ( log.timestamp ) { log.StopWatch->Stop(); GridTime now = log.StopWatch->Elapsed(); From 16ebbfff2991b5bbaee5d2fa337dce0540ebb978 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 27 Feb 2018 18:45:23 +0000 Subject: [PATCH 067/267] Hadrons: Schur convention globally defined through a macro --- extras/Hadrons/Global.hpp | 12 ++++++++++++ .../Modules/MSolver/LocalCoherenceLanczos.hpp | 8 ++++---- extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 13 ++++++++----- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/extras/Hadrons/Global.hpp b/extras/Hadrons/Global.hpp index 7f60ebcb..675a97c2 100644 --- a/extras/Hadrons/Global.hpp +++ b/extras/Hadrons/Global.hpp @@ -181,6 +181,18 @@ typedef XmlWriter ResultWriter; #define RESULT_FILE_NAME(name) \ name + "." + std::to_string(vm().getTrajectory()) + "." + resultFileExt +// default Schur convention + +#ifndef HADRONS_DEFAULT_SCHUR +#define HADRONS_DEFAULT_SCHUR DiagMooee +#endif +#define _HADRONS_SCHUR_OP_(conv) Schur##conv##Operator +#define HADRONS_SCHUR_OP(conv) _HADRONS_SCHUR_OP_(conv) +#define HADRONS_DEFAULT_SCHUR_OP HADRONS_SCHUR_OP(HADRONS_DEFAULT_SCHUR) +#define _HADRONS_SCHUR_SOLVE_(conv) SchurRedBlack##conv##Solve +#define HADRONS_SCHUR_SOLVE(conv) _HADRONS_SCHUR_SOLVE_(conv) +#define HADRONS_DEFAULT_SCHUR_SOLVE HADRONS_SCHUR_SOLVE(HADRONS_DEFAULT_SCHUR) + END_HADRONS_NAMESPACE #include diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index a41a7839..387b9455 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -60,10 +60,10 @@ class TLocalCoherenceLanczos: public Module { public: FERM_TYPE_ALIASES(FImpl,); - typedef LCL LCL; - typedef FineEigenPack FineEigenPack; - typedef CoarseEigenPack CoarseEigenPack; - typedef SchurDiagMooeeOperator SchurFMat; + typedef LCL LCL; + typedef FineEigenPack FineEigenPack; + typedef CoarseEigenPack CoarseEigenPack; + typedef HADRONS_DEFAULT_SCHUR_OP SchurFMat; public: // constructor TLocalCoherenceLanczos(const std::string name); diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index 54c0f2d8..77ce6cd4 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -43,9 +43,10 @@ BEGIN_MODULE_NAMESPACE(MSolver) class RBPrecCGPar: Serializable { public: - GRID_SERIALIZABLE_CLASS_MEMBERS(RBPrecCGPar, - std::string, action, - double , residual); + GRID_SERIALIZABLE_CLASS_MEMBERS(RBPrecCGPar , + std::string , action, + unsigned int , maxIteration, + double , residual); }; template @@ -117,14 +118,16 @@ void TRBPrecCG::setup(void) auto &mat = envGet(FMat, par().action); auto solver = [&mat, this](FermionField &sol, const FermionField &source) { - ConjugateGradient cg(par().residual, 10000); - SchurRedBlackDiagMooeeSolve schurSolver(cg); + ConjugateGradient cg(par().residual, + par().maxIteration); + HADRONS_DEFAULT_SCHUR_SOLVE schurSolver(cg); schurSolver(mat, source, sol); }; envCreate(SolverFn, getName(), Ls, solver); } + // execution /////////////////////////////////////////////////////////////////// template void TRBPrecCG::execute(void) From abb7d4d2f5026c348342e2d19c2f479a8a5b0755 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 27 Feb 2018 19:32:19 +0000 Subject: [PATCH 068/267] Hadrons: z-Mobius action --- extras/Hadrons/Global.hpp | 3 + extras/Hadrons/Modules.hpp | 31 +---- extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp | 116 ++++++++++++++++++ .../Modules/MSolver/LocalCoherenceLanczos.hpp | 3 + extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 3 +- extras/Hadrons/modules.inc | 1 + 6 files changed, 126 insertions(+), 31 deletions(-) create mode 100644 extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp diff --git a/extras/Hadrons/Global.hpp b/extras/Hadrons/Global.hpp index 675a97c2..ed8f4f32 100644 --- a/extras/Hadrons/Global.hpp +++ b/extras/Hadrons/Global.hpp @@ -58,6 +58,9 @@ using Grid::operator<<; #ifndef FIMPL #define FIMPL WilsonImplR #endif +#ifndef ZFIMPL +#define ZFIMPL ZWilsonImplR +#endif #ifndef SIMPL #define SIMPL ScalarImplCR #endif diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 1334a9b4..1b78a85d 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,33 +1,3 @@ -/************************************************************************************* - -Grid physics library, www.github.com/paboyle/Grid - -Source file: extras/Hadrons/Modules.hpp - -Copyright (C) 2015-2018 - -Author: Antonin Portelli -Author: Guido Cossu -Author: Lanny91 -Author: pretidav - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -See the full license in the file "LICENSE" in the top level distribution directory -*************************************************************************************/ -/* END LEGAL */ #include #include #include @@ -60,6 +30,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp b/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp new file mode 100644 index 00000000..b0c614df --- /dev/null +++ b/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp @@ -0,0 +1,116 @@ +#ifndef Hadrons_MAction_ZMobiusDWF_hpp_ +#define Hadrons_MAction_ZMobiusDWF_hpp_ + +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * ZMobiusDWF * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MAction) + +class ZMobiusDWFPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(ZMobiusDWFPar, + std::string , gauge, + unsigned int , Ls, + double , mass, + double , M5, + double , b, + double , c, + std::vector>, omega, + std::string , boundary); +}; + +template +class TZMobiusDWF: public Module +{ +public: + FGS_TYPE_ALIASES(FImpl,); +public: + // constructor + TZMobiusDWF(const std::string name); + // destructor + virtual ~TZMobiusDWF(void) = default; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER_NS(ZMobiusDWF, TZMobiusDWF, MAction); + +/****************************************************************************** + * TZMobiusDWF implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TZMobiusDWF::TZMobiusDWF(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TZMobiusDWF::getInput(void) +{ + std::vector in = {par().gauge}; + + return in; +} + +template +std::vector TZMobiusDWF::getOutput(void) +{ + std::vector out = {getName()}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TZMobiusDWF::setup(void) +{ + LOG(Message) << "Setting up z-Mobius domain wall fermion matrix with m= " + << par().mass << ", M5= " << par().M5 << ", Ls= " + << ", b= " << par().b << ", c= " << par().c + << par().Ls << " using gauge field '" << par().gauge << "'" + << std::endl; + LOG(Message) << "Omegas: " << std::endl; + for (unsigned int i = 0; i < par().omega.size(); ++i) + { + LOG(Message) << " omega[" << i << "]= " << par().omega[i] << std::endl; + } + LOG(Message) << "Fermion boundary conditions: " << par().boundary + << std::endl; + + env().createGrid(par().Ls); + auto &U = envGet(LatticeGaugeField, par().gauge); + auto &g4 = *env().getGrid(); + auto &grb4 = *env().getRbGrid(); + auto &g5 = *env().getGrid(par().Ls); + auto &grb5 = *env().getRbGrid(par().Ls); + auto omega = par().omega; + std::vector boundary = strToVec(par().boundary); + typename ZMobiusFermion::ImplParams implParams(boundary); + envCreateDerived(FMat, ZMobiusFermion, getName(), par().Ls, U, g5, + grb5, g4, grb4, par().mass, par().M5, omega, + par().b, par().c, implParams); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TZMobiusDWF::execute(void) +{} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MAction_ZMobiusDWF_hpp_ diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index 387b9455..feb1d0be 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -91,6 +91,9 @@ private: MODULE_REGISTER_NS(LocalCoherenceLanczos, ARG(TLocalCoherenceLanczos), MSolver); +MODULE_REGISTER_NS(ZLocalCoherenceLanczos, + ARG(TLocalCoherenceLanczos), + MSolver); /****************************************************************************** * TLocalCoherenceLanczos implementation * diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index 77ce6cd4..2b914625 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -70,7 +70,8 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(RBPrecCG, TRBPrecCG, MSolver); +MODULE_REGISTER_NS(RBPrecCG, TRBPrecCG, MSolver); +MODULE_REGISTER_NS(ZRBPrecCG, TRBPrecCG, MSolver); /****************************************************************************** * TRBPrecCG template implementation * diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 4a9b2630..79db9396 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -43,6 +43,7 @@ modules_hpp =\ Modules/MAction/DWF.hpp \ Modules/MAction/Wilson.hpp \ Modules/MAction/WilsonClover.hpp \ + Modules/MAction/ZMobiusDWF.hpp \ Modules/MScalarSUN/Div.hpp \ Modules/MScalarSUN/TrMag.hpp \ Modules/MScalarSUN/TwoPoint.hpp \ From 6ec42b4b82311b6eaa20e37dec49a17af6df0f95 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 1 Mar 2018 12:27:29 +0000 Subject: [PATCH 069/267] LCL: external storage fix --- lib/algorithms/iterative/LocalCoherenceLanczos.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/algorithms/iterative/LocalCoherenceLanczos.h b/lib/algorithms/iterative/LocalCoherenceLanczos.h index b8348c0c..3f997a01 100644 --- a/lib/algorithms/iterative/LocalCoherenceLanczos.h +++ b/lib/algorithms/iterative/LocalCoherenceLanczos.h @@ -373,14 +373,14 @@ public: RealD MaxIt, RealD betastp, int MinRes) { Chebyshev Cheby(cheby_op); - ProjectedHermOp Op(_FineOp,_subspace); - ProjectedFunctionHermOp ChebyOp (Cheby,_FineOp,_subspace); + ProjectedHermOp Op(_FineOp,subspace); + ProjectedFunctionHermOp ChebyOp (Cheby,_FineOp,subspace); ////////////////////////////////////////////////////////////////////////////////////////////////// // create a smoother and see if we can get a cheap convergence test and smooth inside the IRL ////////////////////////////////////////////////////////////////////////////////////////////////// Chebyshev ChebySmooth(cheby_smooth); - ImplicitlyRestartedLanczosSmoothedTester ChebySmoothTester(ChebyOp,ChebySmooth,_FineOp,_subspace,relax); + ImplicitlyRestartedLanczosSmoothedTester ChebySmoothTester(ChebyOp,ChebySmooth,_FineOp,subspace,relax); evals_coarse.resize(Nm); evec_coarse.resize(Nm,_CoarseGrid); From b8b05f143fa7bdf66d2b5bbeed193b74b32037fa Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 1 Mar 2018 12:53:16 +0000 Subject: [PATCH 070/267] Hadrons: Lanczos more conservative type names --- extras/Hadrons/LanczosUtils.hpp | 12 +++++----- .../Modules/MSolver/LocalCoherenceLanczos.hpp | 22 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/extras/Hadrons/LanczosUtils.hpp b/extras/Hadrons/LanczosUtils.hpp index e6a78753..ab3ddbd5 100644 --- a/extras/Hadrons/LanczosUtils.hpp +++ b/extras/Hadrons/LanczosUtils.hpp @@ -11,16 +11,13 @@ BEGIN_HADRONS_NAMESPACE #define HADRONS_DEFAULT_LANCZOS_NBASIS 60 #endif -template -using LCL = LocalCoherenceLanczos; - template struct EigenPack { + typedef T VectorType; std::vector eval; std::vector evec; - + EigenPack(void) = default; EigenPack(const size_t size, GridBase *grid) @@ -81,7 +78,10 @@ template using FineEigenPack = EigenPack; template -using CoarseEigenPack = EigenPack::CoarseField>; +using CoarseEigenPack = EigenPack< + typename LocalCoherenceLanczos::CoarseField>; END_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index feb1d0be..b708d59d 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -60,9 +60,11 @@ class TLocalCoherenceLanczos: public Module { public: FERM_TYPE_ALIASES(FImpl,); - typedef LCL LCL; - typedef FineEigenPack FineEigenPack; - typedef CoarseEigenPack CoarseEigenPack; + typedef LocalCoherenceLanczos LCL; + typedef FineEigenPack FinePack; + typedef CoarseEigenPack CoarsePack; typedef HADRONS_DEFAULT_SCHUR_OP SchurFMat; public: // constructor @@ -185,12 +187,10 @@ void TLocalCoherenceLanczos::setup(void) { makeCoarseGrid(); } - envCreate(FineEigenPack, fineName_, Ls_, par().fineParams.Nm, - env().getRbGrid(Ls_)); - envCreate(CoarseEigenPack, coarseName_, Ls_, par().coarseParams.Nm, - coarseGridRb_.get()); - auto &fine = envGet(FineEigenPack, fineName_); - auto &coarse = envGet(CoarseEigenPack, coarseName_); + envCreate(FinePack, fineName_, Ls_, par().fineParams.Nm, env().getRbGrid(Ls_)); + envCreate(CoarsePack, coarseName_, Ls_, par().coarseParams.Nm, coarseGridRb_.get()); + auto &fine = envGet(FinePack, fineName_); + auto &coarse = envGet(CoarsePack, coarseName_); envTmp(SchurFMat, "mat", Ls_, envGet(FMat, par().action)); envGetTmp(SchurFMat, mat); envTmp(LCL, "solver", Ls_, env().getRbGrid(Ls_), coarseGridRb_.get(), mat, @@ -203,8 +203,8 @@ void TLocalCoherenceLanczos::execute(void) { auto &finePar = par().fineParams; auto &coarsePar = par().coarseParams; - auto &fine = envGet(FineEigenPack, fineName_); - auto &coarse = envGet(CoarseEigenPack, coarseName_); + auto &fine = envGet(FinePack, fineName_); + auto &coarse = envGet(CoarsePack, coarseName_); envGetTmp(LCL, solver); if (par().doFine) From e418b044f747f0375cdf420699a3c026f5f82d1b Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 1 Mar 2018 12:57:28 +0000 Subject: [PATCH 071/267] Hadrons: code cleaning --- extras/Hadrons/LanczosUtils.hpp | 27 +++++++++++++++++ extras/Hadrons/Modules.hpp | 30 +++++++++++++++++++ .../Hadrons/Modules/MAction/WilsonClover.hpp | 1 + extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp | 27 +++++++++++++++++ extras/Hadrons/Modules/MGauge/FundtoHirep.hpp | 1 + extras/Hadrons/Modules/MIO/LoadNersc.cc | 2 -- .../Modules/MSolver/LocalCoherenceLanczos.hpp | 18 +++++------ 7 files changed, 95 insertions(+), 11 deletions(-) diff --git a/extras/Hadrons/LanczosUtils.hpp b/extras/Hadrons/LanczosUtils.hpp index ab3ddbd5..f8e7693a 100644 --- a/extras/Hadrons/LanczosUtils.hpp +++ b/extras/Hadrons/LanczosUtils.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/LanczosUtils.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_LanczosUtils_hpp_ #define Hadrons_LanczosUtils_hpp_ diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 1b78a85d..57fa93a3 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,3 +1,33 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli +Author: Guido Cossu +Author: Lanny91 +Author: pretidav + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include #include #include diff --git a/extras/Hadrons/Modules/MAction/WilsonClover.hpp b/extras/Hadrons/Modules/MAction/WilsonClover.hpp index d5174c6d..2967931c 100644 --- a/extras/Hadrons/Modules/MAction/WilsonClover.hpp +++ b/extras/Hadrons/Modules/MAction/WilsonClover.hpp @@ -6,6 +6,7 @@ Source file: extras/Hadrons/Modules/MAction/WilsonClover.hpp Copyright (C) 2015-2018 +Author: Antonin Portelli Author: Guido Cossu Author: pretidav diff --git a/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp b/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp index b0c614df..fd812a2a 100644 --- a/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp +++ b/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MAction_ZMobiusDWF_hpp_ #define Hadrons_MAction_ZMobiusDWF_hpp_ diff --git a/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp b/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp index 4fba59f0..508145bc 100644 --- a/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp +++ b/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp @@ -6,6 +6,7 @@ Source file: extras/Hadrons/Modules/MGauge/FundtoHirep.hpp Copyright (C) 2015-2018 +Author: Antonin Portelli Author: pretidav This program is free software; you can redistribute it and/or modify diff --git a/extras/Hadrons/Modules/MIO/LoadNersc.cc b/extras/Hadrons/Modules/MIO/LoadNersc.cc index f20606fc..36a56d54 100644 --- a/extras/Hadrons/Modules/MIO/LoadNersc.cc +++ b/extras/Hadrons/Modules/MIO/LoadNersc.cc @@ -71,6 +71,4 @@ void TLoadNersc::execute(void) auto &U = envGet(LatticeGaugeField, getName()); NerscIO::readConfiguration(U, header, fileName); - LOG(Message) << "NERSC header:" << std::endl; - dump_meta_data(header, LOG(Message)); } diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index b708d59d..6ab0412a 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -44,15 +44,15 @@ class LocalCoherenceLanczosPar: Serializable { public: GRID_SERIALIZABLE_CLASS_MEMBERS(LocalCoherenceLanczosPar, - std::string, action, - int, doFine, - int, doCoarse, - LanczosParams, fineParams, - LanczosParams, coarseParams, - ChebyParams, smoother, - RealD, coarseRelaxTol, - std::string, blockSize, - std::string, output); + std::string, action, + int, doFine, + int, doCoarse, + LanczosParams, fineParams, + LanczosParams, coarseParams, + ChebyParams, smoother, + RealD, coarseRelaxTol, + std::string, blockSize, + std::string, output); }; template From 5b937e3644dba95b6e1c3e868fc567ccf991c2ea Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 1 Mar 2018 17:28:38 +0000 Subject: [PATCH 072/267] Hadrons: VM memory profiling fix --- extras/Hadrons/VirtualMachine.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index d47bafb7..c91667e7 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -424,11 +424,17 @@ void VirtualMachine::memoryProfile(const unsigned int address) cleanEnvironment(); for (auto &in: m->getInput()) { - memoryProfile(env().getObjectModule(in)); + if (!env().hasCreatedObject(in)) + { + memoryProfile(env().getObjectModule(in)); + } } for (auto &ref: m->getReference()) { - memoryProfile(env().getObjectModule(ref)); + if (!env().hasCreatedObject(ref)) + { + memoryProfile(env().getObjectModule(ref)); + } } m->setup(); updateProfile(address); From 4d2a32ae7ace84c8a762d5f97cd34146c8edbf7d Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 1 Mar 2018 18:03:44 +0000 Subject: [PATCH 073/267] Hadrons: z-Mobius message fix --- extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp b/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp index fd812a2a..518b88f2 100644 --- a/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp +++ b/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp @@ -105,9 +105,9 @@ template void TZMobiusDWF::setup(void) { LOG(Message) << "Setting up z-Mobius domain wall fermion matrix with m= " - << par().mass << ", M5= " << par().M5 << ", Ls= " + << par().mass << ", M5= " << par().M5 << ", Ls= " << par().Ls << ", b= " << par().b << ", c= " << par().c - << par().Ls << " using gauge field '" << par().gauge << "'" + << " using gauge field '" << par().gauge << "'" << std::endl; LOG(Message) << "Omegas: " << std::endl; for (unsigned int i = 0; i < par().omega.size(); ++i) From 15767a1491a36edd02ee29eeef4efd7ac1fd85fe Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 1 Mar 2018 18:04:08 +0000 Subject: [PATCH 074/267] Hadrons: LCL fine convergence test --- extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index 6ab0412a..e30788bd 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -215,6 +215,7 @@ void TLocalCoherenceLanczos::execute(void) solver.calcFine(finePar.Cheby, finePar.Nstop, finePar.Nk, finePar.Nm, finePar.resid,finePar.MaxIt, finePar.betastp, finePar.MinRes); + solver.testFine(finePar.resid*100.0); LOG(Message) << "Orthogonalising" << std::endl; solver.Orthogonalise(); if (!par().output.empty()) From e5ea84d5311e86aab789e771fb4557d6b87ef3cc Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 1 Mar 2018 19:33:11 +0000 Subject: [PATCH 075/267] Hadrons: LCL: orthogonalise coarse evec --- extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index e30788bd..c9adc2a7 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -232,6 +232,8 @@ void TLocalCoherenceLanczos::execute(void) coarsePar.Nstop, coarsePar.Nk, coarsePar.Nm, coarsePar.resid, coarsePar.MaxIt, coarsePar.betastp, coarsePar.MinRes); + LOG(Message) << "Orthogonalising" << std::endl; + solver.Orthogonalise(); if (!par().output.empty()) { coarse.write(par().output + "_coarse"); From ba6db55cb0c9dd95e009420634860ad01003170c Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 1 Mar 2018 23:30:58 +0000 Subject: [PATCH 076/267] Hadrons: reverse last commit --- extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index c9adc2a7..ae289ddf 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -233,7 +233,6 @@ void TLocalCoherenceLanczos::execute(void) coarsePar.resid, coarsePar.MaxIt, coarsePar.betastp, coarsePar.MinRes); LOG(Message) << "Orthogonalising" << std::endl; - solver.Orthogonalise(); if (!par().output.empty()) { coarse.write(par().output + "_coarse"); From c4274e1660ea529e5c9e8c396677ca61c8b11537 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 2 Mar 2018 10:18:33 +0000 Subject: [PATCH 077/267] Hadrons: LCL cleaning --- extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index ae289ddf..3a299bd6 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -174,6 +174,7 @@ void TLocalCoherenceLanczos::makeCoarseGrid(void) GridDefaultMpi())); coarseGridRb_.reset(SpaceTimeGrid::makeFourDimRedBlackGrid(coarseGrid_.get())); } + LOG(Message) << "Coarse grid: " << coarseGrid_->GlobalDimensions() << std::endl; } template @@ -232,7 +233,8 @@ void TLocalCoherenceLanczos::execute(void) coarsePar.Nstop, coarsePar.Nk, coarsePar.Nm, coarsePar.resid, coarsePar.MaxIt, coarsePar.betastp, coarsePar.MinRes); - LOG(Message) << "Orthogonalising" << std::endl; + solver.testCoarse(coarsePar.resid*100.0, par().smoother, + par().coarseRelaxTol); if (!par().output.empty()) { coarse.write(par().output + "_coarse"); From 83a101db8332a0b26958635614293be20a661991 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 2 Mar 2018 11:05:02 +0000 Subject: [PATCH 078/267] Hadrons: more LCL fixes --- extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp | 2 +- lib/algorithms/iterative/LocalCoherenceLanczos.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index 3a299bd6..284b233b 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -174,7 +174,6 @@ void TLocalCoherenceLanczos::makeCoarseGrid(void) GridDefaultMpi())); coarseGridRb_.reset(SpaceTimeGrid::makeFourDimRedBlackGrid(coarseGrid_.get())); } - LOG(Message) << "Coarse grid: " << coarseGrid_->GlobalDimensions() << std::endl; } template @@ -188,6 +187,7 @@ void TLocalCoherenceLanczos::setup(void) { makeCoarseGrid(); } + LOG(Message) << "Coarse grid: " << coarseGrid_->GlobalDimensions() << std::endl; envCreate(FinePack, fineName_, Ls_, par().fineParams.Nm, env().getRbGrid(Ls_)); envCreate(CoarsePack, coarseName_, Ls_, par().coarseParams.Nm, coarseGridRb_.get()); auto &fine = envGet(FinePack, fineName_); diff --git a/lib/algorithms/iterative/LocalCoherenceLanczos.h b/lib/algorithms/iterative/LocalCoherenceLanczos.h index 3f997a01..0c7f4f65 100644 --- a/lib/algorithms/iterative/LocalCoherenceLanczos.h +++ b/lib/algorithms/iterative/LocalCoherenceLanczos.h @@ -332,7 +332,7 @@ public: // create a smoother and see if we can get a cheap convergence test and smooth inside the IRL ////////////////////////////////////////////////////////////////////////////////////////////////// Chebyshev ChebySmooth(cheby_smooth); - ProjectedFunctionHermOp ChebyOp (ChebySmooth,_FineOp,_subspace); + ProjectedFunctionHermOp ChebyOp (ChebySmooth,_FineOp,subspace); ImplicitlyRestartedLanczosSmoothedTester ChebySmoothTester(ChebyOp,ChebySmooth,_FineOp,subspace,relax); for(int k=0;k Date: Fri, 2 Mar 2018 11:47:38 +0000 Subject: [PATCH 079/267] changes requested for the pull request --- .../Hadrons/Modules/MSource/SeqConserved.hpp | 44 +++++---- extras/Hadrons/modules.inc | 2 +- lib/qcd/action/fermion/FermionOperator.h | 2 +- .../fermion/ImprovedStaggeredFermion.cc | 2 +- .../action/fermion/ImprovedStaggeredFermion.h | 2 +- .../fermion/ImprovedStaggeredFermion5D.cc | 2 +- .../fermion/ImprovedStaggeredFermion5D.h | 2 +- lib/qcd/action/fermion/WilsonFermion.cc | 71 +------------- lib/qcd/action/fermion/WilsonFermion.h | 4 +- lib/qcd/action/fermion/WilsonFermion5D.cc | 94 +------------------ lib/qcd/action/fermion/WilsonFermion5D.h | 2 +- 11 files changed, 38 insertions(+), 189 deletions(-) diff --git a/extras/Hadrons/Modules/MSource/SeqConserved.hpp b/extras/Hadrons/Modules/MSource/SeqConserved.hpp index 0fb23cc4..5c4a320b 100644 --- a/extras/Hadrons/Modules/MSource/SeqConserved.hpp +++ b/extras/Hadrons/Modules/MSource/SeqConserved.hpp @@ -2,7 +2,7 @@ Grid physics library, www.github.com/paboyle/Grid -Source file: extras/Hadrons/Modules/MContraction/SeqConserved.hpp +Source file: extras/Hadrons/Modules/MSource/SeqConserved.hpp Copyright (C) 2015-2018 @@ -35,8 +35,6 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include -#include - BEGIN_HADRONS_NAMESPACE /* @@ -100,6 +98,9 @@ protected: virtual void setup(void); // execution virtual void execute(void); +private: + bool SeqhasPhase_{false}; + std::string SeqmomphName_; }; MODULE_REGISTER_NS(SeqConserved, TSeqConserved, MSource); @@ -112,6 +113,7 @@ MODULE_REGISTER_NS(SeqConserved, TSeqConserved, MSource); template TSeqConserved::TSeqConserved(const std::string name) : Module(name) +, SeqmomphName_ (name + "_Seqmomph") {} // dependencies/products /////////////////////////////////////////////////////// @@ -139,7 +141,7 @@ void TSeqConserved::setup(void) auto Ls_ = env().getObjectLs(par().action); envCreateLat(PropagatorField, getName(), Ls_); envTmpLat(PropagatorField, "src_tmp"); - envTmpLat(LatticeComplex, "mom_phase"); + envCacheLat(LatticeComplex, SeqmomphName_); envTmpLat(LatticeComplex, "coor"); envTmpLat(LatticeComplex, "latt_compl"); } @@ -152,37 +154,45 @@ void TSeqConserved::execute(void) { LOG(Message) << "Generating sequential source with conserved " << par().curr_type << " current at " - << "t = " << par().tA << std::endl; + << "t = " << par().tA << " summed over the indices " + << par().mu_min << " <= mu <= " << par().mu_max + << std::endl; } else { LOG(Message) << "Generating sequential source with conserved " << par().curr_type << " current for " << par().tA << " <= t <= " - << par().tB << std::endl; + << par().tB << " summed over the indices " + << par().mu_min << " <= mu <= " << par().mu_max + << std::endl; } auto &src = envGet(PropagatorField, getName()); envGetTmp(PropagatorField, src_tmp); src_tmp = src; auto &q = envGet(PropagatorField, par().q); auto &mat = envGet(FMat, par().action); - envGetTmp(LatticeComplex, mom_phase); - envGetTmp(LatticeComplex, coor); envGetTmp(LatticeComplex, latt_compl); src = zero; //exp(ipx) - std::vector mom = strToVec(par().mom); - mom_phase = zero; - Complex i(0.0,1.0); - for(unsigned int mu = 0; mu < env().getNd(); mu++) - { - LatticeCoordinate(coor, mu); - mom_phase = mom_phase + (mom[mu]/env().getGrid()->_fdimensions[mu])*coor; + auto &mom_phase = envGet(LatticeComplex, SeqmomphName_); + if (!SeqhasPhase_) + { + std::vector mom = strToVec(par().mom); + mom_phase = zero; + Complex i(0.0,1.0); + envGetTmp(LatticeComplex, coor); + for(unsigned int mu = 0; mu < env().getNd(); mu++) + { + LatticeCoordinate(coor, mu); + mom_phase = mom_phase + (mom[mu]/env().getGrid()->_fdimensions[mu])*coor; + } + mom_phase = exp((Real)(2*M_PI)*i*mom_phase); + SeqhasPhase_ = true; } - mom_phase = exp((Real)(2*M_PI)*i*mom_phase); - LOG(Message) << "Inserting momentum " << mom << std::endl; + LOG(Message) << "Inserting momentum " << strToVec(par().mom) << std::endl; diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 8bf22cc0..90602275 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -49,5 +49,5 @@ modules_hpp =\ Modules/MScalarSUN/TwoPoint.hpp \ Modules/MScalarSUN/TrPhi.hpp \ Modules/MIO/LoadNersc.hpp \ -Modules/MIO/LoadBinary.hpp + Modules/MIO/LoadBinary.hpp diff --git a/lib/qcd/action/fermion/FermionOperator.h b/lib/qcd/action/fermion/FermionOperator.h index 94e065cc..9eb74baa 100644 --- a/lib/qcd/action/fermion/FermionOperator.h +++ b/lib/qcd/action/fermion/FermionOperator.h @@ -127,7 +127,7 @@ namespace Grid { unsigned int mu, unsigned int tmin, unsigned int tmax, - Lattice> &lattice_cmplx)=0; + ComplexField &lattice_cmplx)=0; }; } diff --git a/lib/qcd/action/fermion/ImprovedStaggeredFermion.cc b/lib/qcd/action/fermion/ImprovedStaggeredFermion.cc index 3a296e52..ed07fb5b 100644 --- a/lib/qcd/action/fermion/ImprovedStaggeredFermion.cc +++ b/lib/qcd/action/fermion/ImprovedStaggeredFermion.cc @@ -413,7 +413,7 @@ void ImprovedStaggeredFermion::SeqConservedCurrent(PropagatorField &q_in, unsigned int mu, unsigned int tmin, unsigned int tmax, - Lattice> &lattice_cmplx) + ComplexField &lattice_cmplx) { assert(0); diff --git a/lib/qcd/action/fermion/ImprovedStaggeredFermion.h b/lib/qcd/action/fermion/ImprovedStaggeredFermion.h index 015eb6bb..d2426ef7 100644 --- a/lib/qcd/action/fermion/ImprovedStaggeredFermion.h +++ b/lib/qcd/action/fermion/ImprovedStaggeredFermion.h @@ -172,7 +172,7 @@ class ImprovedStaggeredFermion : public StaggeredKernels, public ImprovedS unsigned int mu, unsigned int tmin, unsigned int tmax, - Lattice> &lattice_cmplx); + ComplexField &lattice_cmplx); }; typedef ImprovedStaggeredFermion ImprovedStaggeredFermionF; diff --git a/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.cc b/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.cc index 3640a26b..3510b8f1 100644 --- a/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.cc +++ b/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.cc @@ -425,7 +425,7 @@ void ImprovedStaggeredFermion5D::SeqConservedCurrent(PropagatorField &q_in unsigned int mu, unsigned int tmin, unsigned int tmax, - Lattice> &lattice_cmplx) + ComplexField &lattice_cmplx) { assert(0); diff --git a/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.h b/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.h index 1c211938..e9cf2013 100644 --- a/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.h +++ b/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.h @@ -184,7 +184,7 @@ namespace QCD { unsigned int mu, unsigned int tmin, unsigned int tmax, - Lattice> &lattice_cmplx); + ComplexField &lattice_cmplx); }; }} diff --git a/lib/qcd/action/fermion/WilsonFermion.cc b/lib/qcd/action/fermion/WilsonFermion.cc index 5b14651b..2d9cf22d 100644 --- a/lib/qcd/action/fermion/WilsonFermion.cc +++ b/lib/qcd/action/fermion/WilsonFermion.cc @@ -407,75 +407,6 @@ void WilsonFermion::ContractConservedCurrent(PropagatorField &q_in_1, } } -//template -//void WilsonFermion::SeqConservedCurrent(PropagatorField &q_in, -// PropagatorField &q_out, -// Current curr_type, -// unsigned int mu, -// std::vector mom, -// unsigned int tmin, -// unsigned int tmax) -//{ -// conformable(_grid, q_in._grid); -// conformable(_grid, q_out._grid); -// Lattice> ph(_grid), coor(_grid); -// Complex i(0.0,1.0); -// PropagatorField tmpFwd(_grid), tmpBwd(_grid), tmp(_grid); -// unsigned int tshift = (mu == Tp) ? 1 : 0; -// unsigned int LLt = GridDefaultLatt()[Tp]; -// -// // Momentum projection -// ph = zero; -// for(unsigned int mu = 0; mu < Nd - 1; mu++) -// { -// LatticeCoordinate(coor, mu); -// ph = ph + mom[mu]*coor*((1./(_grid->_fdimensions[mu]))); -// } -// ph = exp((Real)(2*M_PI)*i*ph); -// -// q_out = zero; -// LatticeInteger coords(_grid); -// LatticeCoordinate(coords, Tp); -// -// // Need q(x + mu) and q(x - mu). -// tmp = Cshift(q_in, mu, 1); -// tmpFwd = tmp*ph; -// tmp = ph*q_in; -// tmpBwd = Cshift(tmp, mu, -1); -// -// parallel_for (unsigned int sU = 0; sU < Umu._grid->oSites(); ++sU) -// { -// // Compute the sequential conserved current insertion only if our simd -// // object contains a timeslice we need. -// vInteger t_mask = ((coords._odata[sU] >= tmin) && -// (coords._odata[sU] <= tmax)); -// Integer timeSlices = Reduce(t_mask); -// -// if (timeSlices > 0) -// { -// Kernels::SeqConservedCurrentSiteFwd(tmpFwd._odata[sU], -// q_out._odata[sU], -// Umu, sU, mu, t_mask); -// } -// -// // Repeat for backward direction. -// t_mask = ((coords._odata[sU] >= (tmin + tshift)) && -// (coords._odata[sU] <= (tmax + tshift))); -// -// //if tmax = LLt-1 (last timeslice) include timeslice 0 if the time is shifted (mu=3) -// unsigned int t0 = 0; -// if((tmax==LLt-1) && (tshift==1)) t_mask = (t_mask || (coords._odata[sU] == t0 )); -// -// timeSlices = Reduce(t_mask); -// -// if (timeSlices > 0) -// { -// Kernels::SeqConservedCurrentSiteBwd(tmpBwd._odata[sU], -// q_out._odata[sU], -// Umu, sU, mu, t_mask); -// } -// } -//} template void WilsonFermion::SeqConservedCurrent(PropagatorField &q_in, @@ -484,7 +415,7 @@ void WilsonFermion::SeqConservedCurrent(PropagatorField &q_in, unsigned int mu, unsigned int tmin, unsigned int tmax, - Lattice> &lattice_cmplx) + ComplexField &lattice_cmplx) { conformable(_grid, q_in._grid); conformable(_grid, q_out._grid); diff --git a/lib/qcd/action/fermion/WilsonFermion.h b/lib/qcd/action/fermion/WilsonFermion.h index 1ef6451e..ea25ed7f 100644 --- a/lib/qcd/action/fermion/WilsonFermion.h +++ b/lib/qcd/action/fermion/WilsonFermion.h @@ -174,13 +174,13 @@ class WilsonFermion : public WilsonKernels, public WilsonFermionStatic { PropagatorField &q_out, Current curr_type, unsigned int mu); - void SeqConservedCurrent(PropagatorField &q_in, + void SeqConservedCurrent(PropagatorField &q_in, PropagatorField &q_out, Current curr_type, unsigned int mu, unsigned int tmin, unsigned int tmax, - Lattice> &lattice_cmplx); + ComplexField &lattice_cmplx); }; typedef WilsonFermion WilsonFermionF; diff --git a/lib/qcd/action/fermion/WilsonFermion5D.cc b/lib/qcd/action/fermion/WilsonFermion5D.cc index 8a795a1e..6f82aad2 100644 --- a/lib/qcd/action/fermion/WilsonFermion5D.cc +++ b/lib/qcd/action/fermion/WilsonFermion5D.cc @@ -779,98 +779,6 @@ void WilsonFermion5D::ContractConservedCurrent(PropagatorField &q_in_1, } -//template -//void WilsonFermion5D::SeqConservedCurrent(PropagatorField &q_in, -// PropagatorField &q_out, -// Current curr_type, -// unsigned int mu, -// std::vector mom, -// unsigned int tmin, -// unsigned int tmax) -//{ -// conformable(q_in._grid, FermionGrid()); -// conformable(q_in._grid, q_out._grid); -// Lattice> ph(FermionGrid()), coor(FermionGrid()); -// PropagatorField tmpFwd(FermionGrid()), tmpBwd(FermionGrid()), -// tmp(FermionGrid()); -// Complex i(0.0, 1.0); -// unsigned int tshift = (mu == Tp) ? 1 : 0; -// unsigned int LLs = q_in._grid->_rdimensions[0]; -// unsigned int LLt = GridDefaultLatt()[Tp]; -// -// // Momentum projection. -// ph = zero; -// for(unsigned int nu = 0; nu < Nd - 1; nu++) -// { -// // Shift coordinate lattice index by 1 to account for 5th dimension. -// LatticeCoordinate(coor, nu + 1); -// ph = ph + mom[nu]*coor*((1./(_FourDimGrid->_fdimensions[nu]))); -// } -// ph = exp((Real)(2*M_PI)*i*ph); -// -// q_out = zero; -// LatticeInteger coords(_FourDimGrid); -// LatticeCoordinate(coords, Tp); -// -// -// // Need q(x + mu, s) and q(x - mu, s). 5D lattice so shift 4D coordinate mu -// // by one. -// tmp = Cshift(q_in, mu + 1, 1); -// tmpFwd = tmp*ph; -// tmp = ph*q_in; -// tmpBwd = Cshift(tmp, mu + 1, -1); -// -// parallel_for (unsigned int sU = 0; sU < Umu._grid->oSites(); ++sU) -// { -// // Compute the sequential conserved current insertion only if our simd -// // object contains a timeslice we need. -// vInteger t_mask = ((coords._odata[sU] >= tmin) && -// (coords._odata[sU] <= tmax)); -// Integer timeSlices = Reduce(t_mask); -// -// if (timeSlices > 0) -// { -// unsigned int sF = sU * LLs; -// for (unsigned int s = 0; s < LLs; ++s) -// { -// bool axial_sign = ((curr_type == Current::Axial) && (s < (LLs / 2))); -// bool tadpole_sign = (curr_type == Current::Tadpole); -// bool switch_sgn = tadpole_sign || axial_sign; -// -// Kernels::SeqConservedCurrentSiteFwd(tmpFwd._odata[sF], -// q_out._odata[sF], Umu, sU, -// mu, t_mask, switch_sgn); -// ++sF; -// } -// } -// -// // Repeat for backward direction. -// t_mask = ((coords._odata[sU] >= (tmin + tshift)) && -// (coords._odata[sU] <= (tmax + tshift))); -// -// //if tmax = LLt-1 (last timeslice) include timeslice 0 if the time is shifted (mu=3) -// unsigned int t0 = 0; -// if((tmax==LLt-1) && (tshift==1)) t_mask = (t_mask || (coords._odata[sU] == t0 )); -// -// timeSlices = Reduce(t_mask); -// -// if (timeSlices > 0) -// { -// unsigned int sF = sU * LLs; -// for (unsigned int s = 0; s < LLs; ++s) -// { -// bool axial_sign = ((curr_type == Current::Axial) && (s < (LLs / 2))); -// Kernels::SeqConservedCurrentSiteBwd(tmpBwd._odata[sF], -// q_out._odata[sF], Umu, sU, -// mu, t_mask, axial_sign); -// ++sF; -// } -// } -// } -//} - - - template void WilsonFermion5D::SeqConservedCurrent(PropagatorField &q_in, @@ -879,7 +787,7 @@ void WilsonFermion5D::SeqConservedCurrent(PropagatorField &q_in, unsigned int mu, unsigned int tmin, unsigned int tmax, - Lattice> &lattice_cmplx) + ComplexField &lattice_cmplx) { conformable(q_in._grid, FermionGrid()); conformable(q_in._grid, q_out._grid); diff --git a/lib/qcd/action/fermion/WilsonFermion5D.h b/lib/qcd/action/fermion/WilsonFermion5D.h index 6a7c6c7d..21da4c31 100644 --- a/lib/qcd/action/fermion/WilsonFermion5D.h +++ b/lib/qcd/action/fermion/WilsonFermion5D.h @@ -228,7 +228,7 @@ namespace QCD { unsigned int mu, unsigned int tmin, unsigned int tmax, - Lattice> &lattice_cmplx); + ComplexField &lattice_cmplx); }; }} From 37fe9442248f6a894220e6f0d0314fc247d69b25 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 2 Mar 2018 14:14:11 +0000 Subject: [PATCH 080/267] Hadrons: scalar kinetic term --- extras/Hadrons/Modules.hpp | 31 +-- .../Hadrons/Modules/MScalarSUN/TrKinetic.hpp | 198 ++++++++++++++++++ extras/Hadrons/modules.inc | 1 + 3 files changed, 200 insertions(+), 30 deletions(-) create mode 100644 extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 57fa93a3..274a6d86 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,33 +1,3 @@ -/************************************************************************************* - -Grid physics library, www.github.com/paboyle/Grid - -Source file: extras/Hadrons/Modules.hpp - -Copyright (C) 2015-2018 - -Author: Antonin Portelli -Author: Guido Cossu -Author: Lanny91 -Author: pretidav - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -See the full license in the file "LICENSE" in the top level distribution directory -*************************************************************************************/ -/* END LEGAL */ #include #include #include @@ -65,5 +35,6 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include #include #include diff --git a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp new file mode 100644 index 00000000..83e0c29e --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp @@ -0,0 +1,198 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp + +Copyright (C) 2015-2018 + + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ +#ifndef Hadrons_MScalarSUN_TrKinetic_hpp_ +#define Hadrons_MScalarSUN_TrKinetic_hpp_ + +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * TrKinetic * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MScalarSUN) + +class TrKineticPar: Serializable +{ +public: + GRID_SERIALIZABLE_ENUM(DiffType, undef, forward, 1, backward, 2, central, 3); + GRID_SERIALIZABLE_CLASS_MEMBERS(TrKineticPar, + std::string, field, + DiffType, type, + std::string, output); +}; + +template +class TTrKinetic: public Module +{ +public: + typedef typename SImpl::Field Field; + typedef typename SImpl::ComplexField ComplexField; + class Result: Serializable + { + public: + GRID_SERIALIZABLE_CLASS_MEMBERS(Result, + std::string, op, + Complex , value); + }; +public: + // constructor + TTrKinetic(const std::string name); + // destructor + virtual ~TTrKinetic(void) = default; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +private: + std::string outName(const unsigned int mu, const unsigned int nu); + std::string bufName(const unsigned int mu); +}; + +MODULE_REGISTER_NS(TrKineticSU2, TTrKinetic>, MScalarSUN); +MODULE_REGISTER_NS(TrKineticSU3, TTrKinetic>, MScalarSUN); +MODULE_REGISTER_NS(TrKineticSU4, TTrKinetic>, MScalarSUN); +MODULE_REGISTER_NS(TrKineticSU5, TTrKinetic>, MScalarSUN); +MODULE_REGISTER_NS(TrKineticSU6, TTrKinetic>, MScalarSUN); + +/****************************************************************************** + * TTrKinetic implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TTrKinetic::TTrKinetic(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TTrKinetic::getInput(void) +{ + std::vector in = {par().field}; + + return in; +} + +template +std::vector TTrKinetic::getOutput(void) +{ + std::vector out ; + + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + for (unsigned int nu = mu; nu < env().getNd(); ++nu) + { + out.push_back(outName(mu, nu)); + } + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TTrKinetic::setup(void) +{ + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + for (unsigned int nu = mu; nu < env().getNd(); ++nu) + { + envCreateLat(ComplexField, outName(mu, nu)); + } + envTmp(std::vector, "der", 1, env().getNd(), env().getGrid()); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TTrKinetic::execute(void) +{ + LOG(Message) << "Computing tr(d_mu phi*d_nu phi) using " << par().type + << " derivative" << std::endl; + + std::vector result; + auto &phi = envGet(Field, par().field); + + envGetTmp(std::vector, der); + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + switch(par().type) + { + case TrKineticPar::DiffType::backward: + der[mu] = phi - Cshift(phi, mu, -1); + break; + case TrKineticPar::DiffType::forward: + der[mu] = Cshift(phi, mu, 1) - phi; + break; + case TrKineticPar::DiffType::central: + der[mu] = 0.5*(Cshift(phi, mu, 1) - Cshift(phi, mu, -1)); + break; + } + } + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + for (unsigned int nu = mu; nu < env().getNd(); ++nu) + { + auto &out = envGet(ComplexField, outName(mu, nu)); + + out = -trace(der[mu]*der[nu]); + if (!par().output.empty()) + { + Result r; + + r.op = "tr(d_" + std::to_string(mu) + "phi*d_" + + std::to_string(nu) + "phi)"; + r.value = TensorRemove(sum(out)); + result.push_back(r); + } + } + if (result.size() > 0) + { + saveResult(par().output, "trkinetic", result); + } +} + +// variable name generators //////////////////////////////////////////////////// +template +std::string TTrKinetic::outName(const unsigned int mu, + const unsigned int nu) +{ + return getName() + "_" + std::to_string(mu) + "_" + std::to_string(nu); +} + +template +std::string TTrKinetic::bufName(const unsigned int mu) +{ + return "d_" + std::to_string(mu); +} + + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MScalarSUN_TrKinetic_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 79db9396..3ee3fb69 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -48,6 +48,7 @@ modules_hpp =\ Modules/MScalarSUN/TrMag.hpp \ Modules/MScalarSUN/TwoPoint.hpp \ Modules/MScalarSUN/TrPhi.hpp \ + Modules/MScalarSUN/TrKinetic.hpp \ Modules/MIO/LoadNersc.hpp \ Modules/MIO/LoadBinary.hpp From c0a929aef7e72bcc68e8a355c758d34cbe94f90c Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 2 Mar 2018 14:29:54 +0000 Subject: [PATCH 081/267] Hadrons: code cleaning --- extras/Hadrons/LanczosUtils.hpp | 2 +- extras/Hadrons/Modules.hpp | 30 +++++++++++++++++++ extras/Hadrons/Modules/MScalarSUN/Div.hpp | 4 +-- .../Hadrons/Modules/MScalarSUN/TrKinetic.hpp | 1 + extras/Hadrons/Modules/MScalarSUN/TrMag.hpp | 4 +-- extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp | 4 +-- .../Hadrons/Modules/MScalarSUN/TwoPoint.hpp | 2 +- .../Modules/MSolver/LocalCoherenceLanczos.hpp | 6 ++-- 8 files changed, 42 insertions(+), 11 deletions(-) diff --git a/extras/Hadrons/LanczosUtils.hpp b/extras/Hadrons/LanczosUtils.hpp index f8e7693a..a080da4b 100644 --- a/extras/Hadrons/LanczosUtils.hpp +++ b/extras/Hadrons/LanczosUtils.hpp @@ -112,4 +112,4 @@ using CoarseEigenPack = EigenPack< END_HADRONS_NAMESPACE -#endif // Hadrons_LanczosUtils_hpp_ \ No newline at end of file +#endif // Hadrons_LanczosUtils_hpp_ diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 274a6d86..dc0d2420 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,3 +1,33 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli +Author: Guido Cossu +Author: Lanny91 +Author: pretidav + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include #include #include diff --git a/extras/Hadrons/Modules/MScalarSUN/Div.hpp b/extras/Hadrons/Modules/MScalarSUN/Div.hpp index cab6e88c..7d5b08b2 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Div.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/Div.hpp @@ -35,7 +35,7 @@ See the full license in the file "LICENSE" in the top level distribution directo BEGIN_HADRONS_NAMESPACE /****************************************************************************** - * Div * + * Divergence of a vector field * ******************************************************************************/ BEGIN_MODULE_NAMESPACE(MScalarSUN) @@ -83,7 +83,7 @@ MODULE_REGISTER_NS(DivSU5, TDiv>, MScalarSUN); MODULE_REGISTER_NS(DivSU6, TDiv>, MScalarSUN); /****************************************************************************** - * TDiv implementation * + * TDiv implementation * ******************************************************************************/ // constructor ///////////////////////////////////////////////////////////////// template diff --git a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp index 83e0c29e..75318488 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp @@ -6,6 +6,7 @@ Source file: extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp Copyright (C) 2015-2018 +Author: Antonin Portelli This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp b/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp index 2858984c..d7d1cce7 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp @@ -35,7 +35,7 @@ See the full license in the file "LICENSE" in the top level distribution directo BEGIN_HADRONS_NAMESPACE /****************************************************************************** - * Module to compute tr(mag^n) * + * Trace of powers of the magnetisation * ******************************************************************************/ BEGIN_MODULE_NAMESPACE(MScalarSUN) @@ -117,7 +117,7 @@ template void TTrMag::execute(void) { LOG(Message) << "Computing tr(mag^n) for n even up to " << par().maxPow - << "..." << std::endl; + << std::endl; std::vector result; auto &phi = envGet(Field, par().field); diff --git a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp b/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp index 4b305128..e5e2b0ef 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp @@ -35,7 +35,7 @@ See the full license in the file "LICENSE" in the top level distribution directo BEGIN_HADRONS_NAMESPACE /****************************************************************************** - * Module to compute tr(phi^n) * + * Trace of powers of a scalar field * ******************************************************************************/ BEGIN_MODULE_NAMESPACE(MScalarSUN) @@ -136,7 +136,7 @@ template void TTrPhi::execute(void) { LOG(Message) << "Computing tr(phi^n) for n even up to " << par().maxPow - << "..." << std::endl; + << std::endl; std::vector result; auto &phi = envGet(Field, par().field); diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp index 58570dd5..8772cfbe 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp @@ -87,7 +87,7 @@ MODULE_REGISTER_NS(TwoPointSU5, TTwoPoint>, MScalarSUN); MODULE_REGISTER_NS(TwoPointSU6, TTwoPoint>, MScalarSUN); /****************************************************************************** - * TTwoPoint implementation * + * TTwoPoint implementation * ******************************************************************************/ // constructor ///////////////////////////////////////////////////////////////// template diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index 284b233b..6e2103ce 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -36,8 +36,8 @@ See the full license in the file "LICENSE" in the top level distribution directo BEGIN_HADRONS_NAMESPACE /****************************************************************************** - * LocalCoherenceLanczos * - ******************************************************************************/ + * Local coherence Lanczos eigensolver * + *****************************************************************************/ BEGIN_MODULE_NAMESPACE(MSolver) class LocalCoherenceLanczosPar: Serializable @@ -98,7 +98,7 @@ MODULE_REGISTER_NS(ZLocalCoherenceLanczos, MSolver); /****************************************************************************** - * TLocalCoherenceLanczos implementation * + * TLocalCoherenceLanczos implementation * ******************************************************************************/ // constructor ///////////////////////////////////////////////////////////////// template From 550142bd6a2a4326b50871da51f362bc56fe10f7 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 2 Mar 2018 14:30:45 +0000 Subject: [PATCH 082/267] Hadrons: more code cleaning --- extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp index 75318488..19776bef 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp @@ -35,7 +35,7 @@ See the full license in the file "LICENSE" in the top level distribution directo BEGIN_HADRONS_NAMESPACE /****************************************************************************** - * TrKinetic * + * Trace of kinetic term * ******************************************************************************/ BEGIN_MODULE_NAMESPACE(MScalarSUN) @@ -86,7 +86,7 @@ MODULE_REGISTER_NS(TrKineticSU5, TTrKinetic>, MScalarSUN); MODULE_REGISTER_NS(TrKineticSU6, TTrKinetic>, MScalarSUN); /****************************************************************************** - * TTrKinetic implementation * + * TTrKinetic implementation * ******************************************************************************/ // constructor ///////////////////////////////////////////////////////////////// template From 614a0e8277f23c713ae6898b4744cc9c411d907f Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 2 Mar 2018 17:34:23 +0000 Subject: [PATCH 083/267] Hadrons: Scalar SU(N) utility functions --- extras/Hadrons/Modules.hpp | 1 + extras/Hadrons/Modules/MScalarSUN/Div.hpp | 19 +---- .../Hadrons/Modules/MScalarSUN/TrKinetic.hpp | 39 ++------- extras/Hadrons/Modules/MScalarSUN/TrMag.hpp | 1 + extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp | 17 +--- .../Hadrons/Modules/MScalarSUN/TwoPoint.hpp | 1 + extras/Hadrons/Modules/MScalarSUN/Utils.hpp | 80 +++++++++++++++++++ extras/Hadrons/modules.inc | 1 + 8 files changed, 97 insertions(+), 62 deletions(-) create mode 100644 extras/Hadrons/Modules/MScalarSUN/Utils.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index dc0d2420..68b96822 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -65,6 +65,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MScalarSUN/Div.hpp b/extras/Hadrons/Modules/MScalarSUN/Div.hpp index 7d5b08b2..0ecb1dbe 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Div.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/Div.hpp @@ -31,6 +31,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include BEGIN_HADRONS_NAMESPACE @@ -42,7 +43,6 @@ BEGIN_MODULE_NAMESPACE(MScalarSUN) class DivPar: Serializable { public: - GRID_SERIALIZABLE_ENUM(DiffType, undef, forward, 1, backward, 2, central, 3); GRID_SERIALIZABLE_CLASS_MEMBERS(DivPar, std::vector, op, DiffType, type, @@ -59,8 +59,8 @@ public: { public: GRID_SERIALIZABLE_CLASS_MEMBERS(Result, - DivPar::DiffType, type, - Complex, value); + DiffType, type, + Complex, value); }; public: // constructor @@ -135,18 +135,7 @@ void TDiv::execute(void) for (unsigned int mu = 0; mu < nd; ++mu) { auto &op = envGet(ComplexField, par().op[mu]); - switch(par().type) - { - case DivPar::DiffType::backward: - div += op - Cshift(op, mu, -1); - break; - case DivPar::DiffType::forward: - div += Cshift(op, mu, 1) - op; - break; - case DivPar::DiffType::central: - div += 0.5*(Cshift(op, mu, 1) - Cshift(op, mu, -1)); - break; - } + dmuAcc(div, op, mu, par().type); } if (!par().output.empty()) { diff --git a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp index 19776bef..f1b520de 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp @@ -31,6 +31,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include BEGIN_HADRONS_NAMESPACE @@ -42,7 +43,6 @@ BEGIN_MODULE_NAMESPACE(MScalarSUN) class TrKineticPar: Serializable { public: - GRID_SERIALIZABLE_ENUM(DiffType, undef, forward, 1, backward, 2, central, 3); GRID_SERIALIZABLE_CLASS_MEMBERS(TrKineticPar, std::string, field, DiffType, type, @@ -74,9 +74,6 @@ public: virtual void setup(void); // execution virtual void execute(void); -private: - std::string outName(const unsigned int mu, const unsigned int nu); - std::string bufName(const unsigned int mu); }; MODULE_REGISTER_NS(TrKineticSU2, TTrKinetic>, MScalarSUN); @@ -111,7 +108,7 @@ std::vector TTrKinetic::getOutput(void) for (unsigned int mu = 0; mu < env().getNd(); ++mu) for (unsigned int nu = mu; nu < env().getNd(); ++nu) { - out.push_back(outName(mu, nu)); + out.push_back(varName(getName(), mu, nu)); } return out; @@ -124,7 +121,7 @@ void TTrKinetic::setup(void) for (unsigned int mu = 0; mu < env().getNd(); ++mu) for (unsigned int nu = mu; nu < env().getNd(); ++nu) { - envCreateLat(ComplexField, outName(mu, nu)); + envCreateLat(ComplexField, varName(getName(), mu, nu)); } envTmp(std::vector, "der", 1, env().getNd(), env().getGrid()); } @@ -142,23 +139,12 @@ void TTrKinetic::execute(void) envGetTmp(std::vector, der); for (unsigned int mu = 0; mu < env().getNd(); ++mu) { - switch(par().type) - { - case TrKineticPar::DiffType::backward: - der[mu] = phi - Cshift(phi, mu, -1); - break; - case TrKineticPar::DiffType::forward: - der[mu] = Cshift(phi, mu, 1) - phi; - break; - case TrKineticPar::DiffType::central: - der[mu] = 0.5*(Cshift(phi, mu, 1) - Cshift(phi, mu, -1)); - break; - } + dmu(der[mu], phi, mu, par().type); } for (unsigned int mu = 0; mu < env().getNd(); ++mu) for (unsigned int nu = mu; nu < env().getNd(); ++nu) { - auto &out = envGet(ComplexField, outName(mu, nu)); + auto &out = envGet(ComplexField, varName(getName(), mu, nu)); out = -trace(der[mu]*der[nu]); if (!par().output.empty()) @@ -177,21 +163,6 @@ void TTrKinetic::execute(void) } } -// variable name generators //////////////////////////////////////////////////// -template -std::string TTrKinetic::outName(const unsigned int mu, - const unsigned int nu) -{ - return getName() + "_" + std::to_string(mu) + "_" + std::to_string(nu); -} - -template -std::string TTrKinetic::bufName(const unsigned int mu) -{ - return "d_" + std::to_string(mu); -} - - END_MODULE_NAMESPACE END_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp b/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp index d7d1cce7..879951d5 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp @@ -31,6 +31,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp b/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp index e5e2b0ef..aa98bfb3 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp @@ -31,6 +31,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include BEGIN_HADRONS_NAMESPACE @@ -73,9 +74,6 @@ public: virtual void setup(void); // execution virtual void execute(void); -private: - // output name generator - std::string outName(const unsigned int n); }; MODULE_REGISTER_NS(TrPhiSU2, TTrPhi>, MScalarSUN); @@ -109,7 +107,7 @@ std::vector TTrPhi::getOutput(void) for (unsigned int n = 2; n <= par().maxPow; n += 2) { - out.push_back(outName(n)); + out.push_back(varName(getName(), n)); } return out; @@ -127,7 +125,7 @@ void TTrPhi::setup(void) envTmpLat(Field, "buf"); for (unsigned int n = 2; n <= par().maxPow; n += 2) { - envCreateLat(ComplexField, outName(n)); + envCreateLat(ComplexField, varName(getName(), n)); } } @@ -147,7 +145,7 @@ void TTrPhi::execute(void) phi2 = -phi*phi; for (unsigned int n = 2; n <= par().maxPow; n += 2) { - auto &phin = envGet(ComplexField, outName(n)); + auto &phin = envGet(ComplexField, varName(getName(), n)); buf = buf*phi2; phin = trace(buf); @@ -166,13 +164,6 @@ void TTrPhi::execute(void) } } -// output name generator /////////////////////////////////////////////////////// -template -std::string TTrPhi::outName(const unsigned int n) -{ - return getName() + "_" + std::to_string(n); -} - END_MODULE_NAMESPACE END_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp index 8772cfbe..5227e95a 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp @@ -31,6 +31,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/Utils.hpp b/extras/Hadrons/Modules/MScalarSUN/Utils.hpp new file mode 100644 index 00000000..1a13f8f5 --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/Utils.hpp @@ -0,0 +1,80 @@ +#ifndef Hadrons_MScalarSUN_Utils_hpp_ +#define Hadrons_MScalarSUN_Utils_hpp_ + +#include +#include + +BEGIN_HADRONS_NAMESPACE + +BEGIN_MODULE_NAMESPACE(MScalarSUN) + +GRID_SERIALIZABLE_ENUM(DiffType, undef, forward, 1, backward, 2, central, 3); + +template +inline void dmu(Field &out, const Field &in, const unsigned int mu, const DiffType type) +{ + auto & env = Environment::getInstance(); + + if (mu >= env.getNd()) + { + HADRON_ERROR(Range, "Derivative direction out of range"); + } + switch(type) + { + case DiffType::backward: + out = in - Cshift(in, mu, -1); + break; + case DiffType::forward: + out = Cshift(in, mu, 1) - in; + break; + case DiffType::central: + out = 0.5*(Cshift(in, mu, 1) - Cshift(in, mu, -1)); + break; + default: + HADRON_ERROR(Argument, "Derivative type invalid"); + break; + } +} + +template +inline void dmuAcc(Field &out, const Field &in, const unsigned int mu, const DiffType type) +{ + auto & env = Environment::getInstance(); + + if (mu >= env.getNd()) + { + HADRON_ERROR(Range, "Derivative direction out of range"); + } + switch(type) + { + case DiffType::backward: + out += in - Cshift(in, mu, -1); + break; + case DiffType::forward: + out += Cshift(in, mu, 1) - in; + break; + case DiffType::central: + out += 0.5*(Cshift(in, mu, 1) - Cshift(in, mu, -1)); + break; + default: + HADRON_ERROR(Argument, "Derivative type invalid"); + break; + } +} + +inline std::string varName(const std::string name, const unsigned int mu) +{ + return name + "_" + std::to_string(mu); +} + +inline std::string varName(const std::string name, const unsigned int mu, + const unsigned int nu) +{ + return name + "_" + std::to_string(mu) + "_" + std::to_string(nu); +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MScalarSUN_Utils_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 3ee3fb69..ea94179e 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -48,6 +48,7 @@ modules_hpp =\ Modules/MScalarSUN/TrMag.hpp \ Modules/MScalarSUN/TwoPoint.hpp \ Modules/MScalarSUN/TrPhi.hpp \ + Modules/MScalarSUN/Utils.hpp \ Modules/MScalarSUN/TrKinetic.hpp \ Modules/MIO/LoadNersc.hpp \ Modules/MIO/LoadBinary.hpp From d9c435e282e3bce3ea42027f96475ceb74cdc959 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 2 Mar 2018 17:35:12 +0000 Subject: [PATCH 084/267] Hadrons: Scalar SU(N) transverse projection module --- extras/Hadrons/Modules.hpp | 1 + .../Hadrons/Modules/MScalarSUN/TransProj.hpp | 158 ++++++++++++++++++ extras/Hadrons/modules.inc | 1 + 3 files changed, 160 insertions(+) create mode 100644 extras/Hadrons/Modules/MScalarSUN/TransProj.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 68b96822..d92f2661 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -66,6 +66,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp b/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp new file mode 100644 index 00000000..59b7097c --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp @@ -0,0 +1,158 @@ +#ifndef Hadrons_MScalarSUN_TransProj_hpp_ +#define Hadrons_MScalarSUN_TransProj_hpp_ + +#include +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * Transverse projection * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MScalarSUN) + +class TransProjPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(TransProjPar, + std::string, op, + DiffType, type, + std::string, output); +}; + +template +class TTransProj: public Module +{ +public: + typedef typename SImpl::Field Field; + typedef typename SImpl::ComplexField ComplexField; + class Result: Serializable + { + public: + GRID_SERIALIZABLE_CLASS_MEMBERS(Result, + std::string, op, + Complex , value); + }; +public: + // constructor + TTransProj(const std::string name); + // destructor + virtual ~TTransProj(void) = default; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + + virtual void execute(void); +}; + +MODULE_REGISTER_NS(TransProjSU2, TTransProj>, MScalarSUN); +MODULE_REGISTER_NS(TransProjSU3, TTransProj>, MScalarSUN); +MODULE_REGISTER_NS(TransProjSU4, TTransProj>, MScalarSUN); +MODULE_REGISTER_NS(TransProjSU5, TTransProj>, MScalarSUN); +MODULE_REGISTER_NS(TransProjSU6, TTransProj>, MScalarSUN); + +/****************************************************************************** + * TTransProj implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TTransProj::TTransProj(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TTransProj::getInput(void) +{ + std::vector in = {par().op}; + + return in; +} + +template +std::vector TTransProj::getOutput(void) +{ + std::vector out = {getName()}; + + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + for (unsigned int nu = mu; nu < env().getNd(); ++nu) + { + out.push_back(varName(getName(), mu, nu)); + } + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TTransProj::setup(void) +{ + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + for (unsigned int nu = mu; nu < env().getNd(); ++nu) + { + envCreateLat(ComplexField, varName(getName(), mu, nu)); + } + envTmpLat(ComplexField, "buf1"); + envTmpLat(ComplexField, "buf2"); + envTmpLat(ComplexField, "lap"); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TTransProj::execute(void) +{ + LOG(Message) << "Computing (delta_mu,nu d^2 - d_mu*d_nu)*op using " + << par().type << " derivatives and op= '" << par().op + << "'" << std::endl; + + std::vector result; + auto &op = envGet(ComplexField, par().op); + + envGetTmp(ComplexField, buf1); + envGetTmp(ComplexField, buf2); + envGetTmp(ComplexField, lap); + lap = zero; + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + dmu(buf1, op, mu, par().type); + dmu(buf2, buf1, mu, par().type); + lap += buf2; + } + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + for (unsigned int nu = mu; nu < env().getNd(); ++nu) + { + auto &out = envGet(ComplexField, varName(getName(), mu, nu)); + dmu(buf1, op, mu, par().type); + dmu(buf2, buf1, nu, par().type); + out = -buf2; + if (mu == nu) + { + out += lap; + } + if (!par().output.empty()) + { + Result r; + + r.op = "(delta_" + std::to_string(mu) + "," + std::to_string(nu) + + " d^2 - d_" + std::to_string(mu) + "*d_" + + std::to_string(nu) + ")*op"; + r.value = TensorRemove(sum(out)); + result.push_back(r); + } + } + if (result.size() > 0) + { + saveResult(par().output, "transproj", result); + } +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MScalarSUN_TransProj_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index ea94179e..dbfa359c 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -49,6 +49,7 @@ modules_hpp =\ Modules/MScalarSUN/TwoPoint.hpp \ Modules/MScalarSUN/TrPhi.hpp \ Modules/MScalarSUN/Utils.hpp \ + Modules/MScalarSUN/TransProj.hpp \ Modules/MScalarSUN/TrKinetic.hpp \ Modules/MIO/LoadNersc.hpp \ Modules/MIO/LoadBinary.hpp From 1d83521daadf983e6bb599982c2d5552eaadfc1d Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 2 Mar 2018 17:55:18 +0000 Subject: [PATCH 085/267] Hadrons: scalar SU(N) EMT --- extras/Hadrons/Modules.hpp | 1 + extras/Hadrons/Modules/MScalarSUN/EMT.hpp | 150 ++++++++++++++++++++++ extras/Hadrons/modules.inc | 1 + 3 files changed, 152 insertions(+) create mode 100644 extras/Hadrons/Modules/MScalarSUN/EMT.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index d92f2661..695dfd02 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -63,6 +63,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp new file mode 100644 index 00000000..7f1a612d --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp @@ -0,0 +1,150 @@ +#ifndef Hadrons_MScalarSUN_EMT_hpp_ +#define Hadrons_MScalarSUN_EMT_hpp_ + +#include +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * Energy-momentum tensor * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MScalarSUN) + +class EMTPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(EMTPar, + std::string, kinetic, + std::string, phiPow, + std::string, improvement, + double , m2, + double , lambda, + double , g, + double , xi, + std::string, output); +}; + +template +class TEMT: public Module +{ +public: + typedef typename SImpl::Field Field; + typedef typename SImpl::ComplexField ComplexField; +public: + // constructor + TEMT(const std::string name); + // destructor + virtual ~TEMT(void) = default; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER_NS(EMTSU2, TEMT>, MScalarSUN); +MODULE_REGISTER_NS(EMTSU3, TEMT>, MScalarSUN); +MODULE_REGISTER_NS(EMTSU4, TEMT>, MScalarSUN); +MODULE_REGISTER_NS(EMTSU5, TEMT>, MScalarSUN); +MODULE_REGISTER_NS(EMTSU6, TEMT>, MScalarSUN); + +/****************************************************************************** + * TEMT implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TEMT::TEMT(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TEMT::getInput(void) +{ + std::vector in; + + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + for (unsigned int nu = mu; nu < env().getNd(); ++nu) + { + in.push_back(varName(par().kinetic, mu, nu)); + in.push_back(varName(par().improvement, mu, nu)); + } + in.push_back(varName(par().phiPow, 2)); + in.push_back(varName(par().phiPow, 4)); + + return in; +} + +template +std::vector TEMT::getOutput(void) +{ + std::vector out = {getName()}; + + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + for (unsigned int nu = mu; nu < env().getNd(); ++nu) + { + out.push_back(varName(getName(), mu, nu)); + } + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TEMT::setup(void) +{ + envCreateLat(ComplexField, getName()); + envTmpLat(ComplexField, "sumkin"); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TEMT::execute(void) +{ + LOG(Message) << "Computing energy-momentum tensor" << std::endl; + LOG(Message) << " kinetic terms: '" << par().kinetic << "'" << std::endl; + LOG(Message) << " tr(phi^n): '" << par().phiPow << "'" << std::endl; + LOG(Message) << " improvement: '" << par().improvement << "'" << std::endl; + LOG(Message) << " m^2= " << par().m2 << std::endl; + LOG(Message) << " lambda= " << par().lambda << std::endl; + LOG(Message) << " g= " << par().g << std::endl; + LOG(Message) << " xi= " << par().xi << std::endl; + + const unsigned int N = SImpl::Group::Dimension; + auto &trphi2 = envGet(ComplexField, varName(par().phiPow, 2)); + auto &trphi4 = envGet(ComplexField, varName(par().phiPow, 4)); + + envGetTmp(ComplexField, sumkin); + sumkin = zero; + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + auto &trkin = envGet(ComplexField, varName(par().kinetic, mu, mu)); + + sumkin += trkin; + } + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + for (unsigned int nu = mu; nu < env().getNd(); ++nu) + { + auto &out = envGet(ComplexField, varName(getName(), mu, nu)); + auto &trkin = envGet(ComplexField, varName(par().kinetic, mu, nu)); + auto &imp = envGet(ComplexField, varName(par().improvement, mu, nu)); + + out = 2.*trkin + par().xi*imp; + if (mu == nu) + { + out -= sumkin + par().m2*trphi2 + par().lambda*trphi4; + } + out *= N/par().g; + } +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MScalarSUN_EMT_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index dbfa359c..44df3091 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -46,6 +46,7 @@ modules_hpp =\ Modules/MAction/ZMobiusDWF.hpp \ Modules/MScalarSUN/Div.hpp \ Modules/MScalarSUN/TrMag.hpp \ + Modules/MScalarSUN/EMT.hpp \ Modules/MScalarSUN/TwoPoint.hpp \ Modules/MScalarSUN/TrPhi.hpp \ Modules/MScalarSUN/Utils.hpp \ From 018801d9731e8a01ecdef8c17fa9b773b5c85260 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 2 Mar 2018 17:56:00 +0000 Subject: [PATCH 086/267] Hadrons: legal update --- extras/Hadrons/Modules/MScalarSUN/EMT.hpp | 27 +++++++++++++++++++ .../Hadrons/Modules/MScalarSUN/TransProj.hpp | 27 +++++++++++++++++++ extras/Hadrons/Modules/MScalarSUN/Utils.hpp | 27 +++++++++++++++++++ 3 files changed, 81 insertions(+) diff --git a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp index 7f1a612d..850efe6a 100644 --- a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/EMT.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MScalarSUN_EMT_hpp_ #define Hadrons_MScalarSUN_EMT_hpp_ diff --git a/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp b/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp index 59b7097c..09386cea 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/TransProj.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MScalarSUN_TransProj_hpp_ #define Hadrons_MScalarSUN_TransProj_hpp_ diff --git a/extras/Hadrons/Modules/MScalarSUN/Utils.hpp b/extras/Hadrons/Modules/MScalarSUN/Utils.hpp index 1a13f8f5..1a17282a 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Utils.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/Utils.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/Utils.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MScalarSUN_Utils_hpp_ #define Hadrons_MScalarSUN_Utils_hpp_ From 2f4dac35313d342a36eb4a09ed3a04db717ff8c4 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 2 Mar 2018 18:10:58 +0000 Subject: [PATCH 087/267] Hadrons: legal update --- extras/Hadrons/Modules/MGauge/StochEm.hpp | 1 + extras/Hadrons/Modules/MSource/SeqConserved.hpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/extras/Hadrons/Modules/MGauge/StochEm.hpp b/extras/Hadrons/Modules/MGauge/StochEm.hpp index 05162443..9e2ba1fb 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.hpp +++ b/extras/Hadrons/Modules/MGauge/StochEm.hpp @@ -7,6 +7,7 @@ Source file: extras/Hadrons/Modules/MGauge/StochEm.hpp Copyright (C) 2015-2018 Author: Antonin Portelli +Author: Vera Guelpers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/extras/Hadrons/Modules/MSource/SeqConserved.hpp b/extras/Hadrons/Modules/MSource/SeqConserved.hpp index 5c4a320b..d7780528 100644 --- a/extras/Hadrons/Modules/MSource/SeqConserved.hpp +++ b/extras/Hadrons/Modules/MSource/SeqConserved.hpp @@ -7,8 +7,8 @@ Source file: extras/Hadrons/Modules/MSource/SeqConserved.hpp Copyright (C) 2015-2018 Author: Antonin Portelli -Author: Andrew Lawson -Author: Vera Guelpers +Author: Lanny91 +Author: Vera Guelpers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by From c4baf876d4896318817dbcc7d5b03680c8142bc9 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 2 Mar 2018 18:40:18 +0000 Subject: [PATCH 088/267] Hadrons: graph consistency check --- extras/Hadrons/VirtualMachine.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index c91667e7..1bd18100 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -296,7 +296,18 @@ void VirtualMachine::makeModuleGraph(void) { for (auto &in: module_[m].input) { - graph.addEdge(env().getObjectModule(in), m); + int min = env().getObjectModule(in); + + if (min < 0) + { + HADRON_ERROR(Definition, "object with address " + + std::to_string(in) + + " is not produced by any module"); + } + else + { + graph.addEdge(min, m); + } } } graph_ = graph; From 480708b9a0aac92e00a34bf1ba988f6e0994c215 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 2 Mar 2018 19:19:37 +0000 Subject: [PATCH 089/267] Hadrons: safer error handling for HadronsXmlRun --- extras/Hadrons/Exceptions.hpp | 1 - extras/Hadrons/HadronsXmlRun.cc | 24 +++++++--- extras/Hadrons/HadronsXmlSchedule.cc | 65 ---------------------------- extras/Hadrons/Makefile.am | 5 +-- 4 files changed, 19 insertions(+), 76 deletions(-) delete mode 100644 extras/Hadrons/HadronsXmlSchedule.cc diff --git a/extras/Hadrons/Exceptions.hpp b/extras/Hadrons/Exceptions.hpp index ab588e5e..ce11618a 100644 --- a/extras/Hadrons/Exceptions.hpp +++ b/extras/Hadrons/Exceptions.hpp @@ -37,7 +37,6 @@ See the full license in the file "LICENSE" in the top level distribution directo #define SRC_LOC std::string(__FUNCTION__) + " at " + std::string(__FILE__) + ":"\ + std::to_string(__LINE__) #define HADRON_ERROR(exc, msg)\ -LOG(Error) << msg << std::endl;\ throw(Exceptions::exc(msg, SRC_LOC)); #define DECL_EXC(name, base) \ diff --git a/extras/Hadrons/HadronsXmlRun.cc b/extras/Hadrons/HadronsXmlRun.cc index 680f234b..4fcfabf2 100644 --- a/extras/Hadrons/HadronsXmlRun.cc +++ b/extras/Hadrons/HadronsXmlRun.cc @@ -56,14 +56,26 @@ int main(int argc, char *argv[]) Grid_init(&argc, &argv); // execution - Application application(parameterFileName); - - application.parseParameterFile(parameterFileName); - if (!scheduleFileName.empty()) + try { - application.loadSchedule(scheduleFileName); + Application application(parameterFileName); + + application.parseParameterFile(parameterFileName); + if (!scheduleFileName.empty()) + { + application.loadSchedule(scheduleFileName); + } + application.run(); + } + catch (const std::exception& e) + { + LOG(Error) << "FATAL ERROR -- Exception " << typeName(&typeid(e)) << std::endl; + LOG(Error) << e.what() << std::endl; + LOG(Error) << "Aborting program" << std::endl; + Grid_finalize(); + + return EXIT_FAILURE; } - application.run(); // epilogue LOG(Message) << "Grid is finalizing now" << std::endl; diff --git a/extras/Hadrons/HadronsXmlSchedule.cc b/extras/Hadrons/HadronsXmlSchedule.cc deleted file mode 100644 index 55f3b231..00000000 --- a/extras/Hadrons/HadronsXmlSchedule.cc +++ /dev/null @@ -1,65 +0,0 @@ -/************************************************************************************* - -Grid physics library, www.github.com/paboyle/Grid - -Source file: extras/Hadrons/HadronsXmlSchedule.cc - -Copyright (C) 2015-2018 - -Author: Antonin Portelli - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -See the full license in the file "LICENSE" in the top level distribution directory -*************************************************************************************/ -/* END LEGAL */ - -#include - -using namespace Grid; -using namespace QCD; -using namespace Hadrons; - -int main(int argc, char *argv[]) -{ - // parse command line - std::string parameterFileName, scheduleFileName; - - if (argc < 3) - { - std::cerr << "usage: " << argv[0] << " [Grid options]"; - std::cerr << std::endl; - std::exit(EXIT_FAILURE); - } - parameterFileName = argv[1]; - scheduleFileName = argv[2]; - - // initialization - Grid_init(&argc, &argv); - - // execution - Application application; - - application.parseParameterFile(parameterFileName); - application.schedule(); - application.printSchedule(); - application.saveSchedule(scheduleFileName); - - // epilogue - LOG(Message) << "Grid is finalizing now" << std::endl; - Grid_finalize(); - - return EXIT_SUCCESS; -} diff --git a/extras/Hadrons/Makefile.am b/extras/Hadrons/Makefile.am index 477b93e4..3b393cd1 100644 --- a/extras/Hadrons/Makefile.am +++ b/extras/Hadrons/Makefile.am @@ -1,5 +1,5 @@ lib_LIBRARIES = libHadrons.a -bin_PROGRAMS = HadronsXmlRun HadronsXmlSchedule +bin_PROGRAMS = HadronsXmlRun include modules.inc @@ -29,6 +29,3 @@ nobase_libHadrons_a_HEADERS = \ HadronsXmlRun_SOURCES = HadronsXmlRun.cc HadronsXmlRun_LDADD = libHadrons.a -lGrid - -HadronsXmlSchedule_SOURCES = HadronsXmlSchedule.cc -HadronsXmlSchedule_LDADD = libHadrons.a -lGrid From 90f40009358acf4c8e75888c0425369c3dea1d4d Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 2 Mar 2018 19:20:01 +0000 Subject: [PATCH 090/267] Hadrons: scheduler debug less verbose --- extras/Hadrons/GeneticScheduler.hpp | 8 ++++---- extras/Hadrons/VirtualMachine.cc | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/extras/Hadrons/GeneticScheduler.hpp b/extras/Hadrons/GeneticScheduler.hpp index 9a6476c3..d6f9bdee 100644 --- a/extras/Hadrons/GeneticScheduler.hpp +++ b/extras/Hadrons/GeneticScheduler.hpp @@ -130,7 +130,7 @@ void GeneticScheduler::nextGeneration(void) { initPopulation(); } - LOG(Debug) << "Starting population:\n" << *this << std::endl; + //LOG(Debug) << "Starting population:\n" << *this << std::endl; // random mutations //PARALLEL_FOR_LOOP @@ -138,7 +138,7 @@ void GeneticScheduler::nextGeneration(void) { doMutation(); } - LOG(Debug) << "After mutations:\n" << *this << std::endl; + //LOG(Debug) << "After mutations:\n" << *this << std::endl; // mating //PARALLEL_FOR_LOOP @@ -146,14 +146,14 @@ void GeneticScheduler::nextGeneration(void) { doCrossover(); } - LOG(Debug) << "After mating:\n" << *this << std::endl; + //LOG(Debug) << "After mating:\n" << *this << std::endl; // grim reaper auto it = population_.begin(); std::advance(it, par_.popSize); population_.erase(it, population_.end()); - LOG(Debug) << "After grim reaper:\n" << *this << std::endl; + //LOG(Debug) << "After grim reaper:\n" << *this << std::endl; } // evolution steps ///////////////////////////////////////////////////////////// diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index 1bd18100..1c60aa5b 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -549,7 +549,7 @@ VirtualMachine::Program VirtualMachine::schedule(const GeneticPar &par) gen = 0; do { - LOG(Debug) << "Generation " << gen << ":" << std::endl; + //LOG(Debug) << "Generation " << gen << ":" << std::endl; scheduler.nextGeneration(); if (gen != 0) { From fcac5c07722a3fb200a6e2ae62e998c526f44473 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 2 Mar 2018 19:20:23 +0000 Subject: [PATCH 091/267] Hadrons: scalar SU(N) fixes --- extras/Hadrons/Modules/MScalarSUN/EMT.hpp | 8 ++++++-- extras/Hadrons/Modules/MScalarSUN/TransProj.hpp | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp index 850efe6a..8c1239df 100644 --- a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp @@ -110,7 +110,7 @@ std::vector TEMT::getInput(void) template std::vector TEMT::getOutput(void) { - std::vector out = {getName()}; + std::vector out; for (unsigned int mu = 0; mu < env().getNd(); ++mu) for (unsigned int nu = mu; nu < env().getNd(); ++nu) @@ -125,7 +125,11 @@ std::vector TEMT::getOutput(void) template void TEMT::setup(void) { - envCreateLat(ComplexField, getName()); + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + for (unsigned int nu = mu; nu < env().getNd(); ++nu) + { + envCreateLat(ComplexField, varName(getName(), mu, nu)); + } envTmpLat(ComplexField, "sumkin"); } diff --git a/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp b/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp index 09386cea..4532b4ab 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp @@ -104,7 +104,7 @@ std::vector TTransProj::getInput(void) template std::vector TTransProj::getOutput(void) { - std::vector out = {getName()}; + std::vector out; for (unsigned int mu = 0; mu < env().getNd(); ++mu) for (unsigned int nu = mu; nu < env().getNd(); ++nu) From e93c8834704aec28c32df33965ed9367c20c9a9f Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Sat, 3 Mar 2018 13:42:36 +0000 Subject: [PATCH 092/267] Hadrons: basic GraphViz visualisation --- extras/Hadrons/VirtualMachine.cc | 43 +++++++++++++++++++++++++++++++ extras/Hadrons/VirtualMachine.hpp | 6 ++++- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index 1c60aa5b..eb1f68ba 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -111,6 +111,7 @@ void VirtualMachine::pushModule(VirtualMachine::ModPt &pt) { // output does not exists, add it env().addObject(out, address); + module_[address].output.push_back(env().getObjectAddress(out)); } else { @@ -313,6 +314,48 @@ void VirtualMachine::makeModuleGraph(void) graph_ = graph; } +// dump GraphViz graph ///////////////////////////////////////////////////////// +void VirtualMachine::dumpModuleGraph(std::ostream &out) +{ + makeModuleGraph(); + out << "digraph hadrons {" << std::endl; + out << "node [shape=record, fontname=\"Courier\", fontsize=\"11\"];" << std::endl; + out << "graph [fontname = \"Courier\", fontsize=\"11\"];" << std::endl; + out << "edge [fontname = \"Courier\", fontsize=\"11\"];"<< std::endl; + for (unsigned int m = 0; m < module_.size(); ++m) + { + + } + for (unsigned int m = 0; m < module_.size(); ++m) + { + for (auto &in: module_[m].input) + { + int min = env().getObjectModule(in); + + out << min << " -> " << m << " [ label = \"" + << env().getObjectName(in) << "\" ];" << std::endl; + } + } + for (unsigned int m = 0; m < module_.size(); ++m) + { + out << m << " [ label = \"{ " << getModule(m)->getRegisteredName() + << " | " << getModuleName(m) << "}\" ];" << std::endl; + } + out << "}\n" << std::endl; +} + +void VirtualMachine::dumpModuleGraph(void) +{ + dumpModuleGraph(std::cout); +} + +void VirtualMachine::dumpModuleGraph(const std::string filename) +{ + std::ofstream f(filename); + + dumpModuleGraph(f); +} + // memory profile ////////////////////////////////////////////////////////////// const VirtualMachine::MemoryProfile & VirtualMachine::getMemoryProfile(void) { diff --git a/extras/Hadrons/VirtualMachine.hpp b/extras/Hadrons/VirtualMachine.hpp index 19a74f94..68eeb0c0 100644 --- a/extras/Hadrons/VirtualMachine.hpp +++ b/extras/Hadrons/VirtualMachine.hpp @@ -84,7 +84,7 @@ private: const std::type_info *type{nullptr}; std::string name; ModPt data{nullptr}; - std::vector input; + std::vector input, output; size_t maxAllocated; }; public: @@ -120,6 +120,10 @@ public: void printContent(void) const; // module graph (could be a const reference if topoSort was const) Graph getModuleGraph(void); + // dump GraphViz graph + void dumpModuleGraph(std::ostream &out); + void dumpModuleGraph(void); + void dumpModuleGraph(const std::string filename); // memory profile const MemoryProfile &getMemoryProfile(void); // garbage collector From cd51b9af99e0226a22112592682eb3bfe6c63fc2 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 5 Mar 2018 19:58:13 +0000 Subject: [PATCH 093/267] Torture yourself with namespace lookup 101 --- extras/Hadrons/Global.hpp | 7 +++- lib/serialisation/BaseIO.h | 82 +++++++++++++++++++------------------- 2 files changed, 46 insertions(+), 43 deletions(-) diff --git a/extras/Hadrons/Global.hpp b/extras/Hadrons/Global.hpp index ed8f4f32..e9f5933b 100644 --- a/extras/Hadrons/Global.hpp +++ b/extras/Hadrons/Global.hpp @@ -43,12 +43,15 @@ See the full license in the file "LICENSE" in the top level distribution directo namespace Grid {\ using namespace QCD;\ namespace Hadrons {\ -using Grid::operator<<; +using Grid::operator<<;\ +using Grid::operator>>; #define END_HADRONS_NAMESPACE }} #define BEGIN_MODULE_NAMESPACE(name)\ namespace name {\ -using Grid::operator<<; +using Grid::operator<<;\ +using Grid::operator>>; + #define END_MODULE_NAMESPACE } /* the 'using Grid::operator<<;' statement prevents a very nasty compilation diff --git a/lib/serialisation/BaseIO.h b/lib/serialisation/BaseIO.h index 24e1cec7..d2db8bfc 100644 --- a/lib/serialisation/BaseIO.h +++ b/lib/serialisation/BaseIO.h @@ -33,42 +33,6 @@ Author: Guido Cossu #include namespace Grid { - // Vector IO utilities /////////////////////////////////////////////////////// - // helper function to read space-separated values - template - std::vector strToVec(const std::string s) - { - std::istringstream sstr(s); - T buf; - std::vector v; - - while(!sstr.eof()) - { - sstr >> buf; - v.push_back(buf); - } - - return v; - } - - // output to streams for vectors - template < class T > - inline std::ostream & operator<<(std::ostream &os, const std::vector &v) - { - os << "["; - for (auto &x: v) - { - os << x << " "; - } - if (v.size() > 0) - { - os << "\b"; - } - os << "]"; - - return os; - } - // Vector element trait ////////////////////////////////////////////////////// template struct element @@ -151,15 +115,15 @@ namespace Grid { do { is.get(c); - } while (c != '<' && !is.eof()); - if (c == '<') + } while (c != '{' && !is.eof()); + if (c == '{') { int start = is.tellg(); do { is.get(c); - } while (c != '>' && !is.eof()); - if (c == '>') + } while (c != '}' && !is.eof()); + if (c == '}') { int end = is.tellg(); int psize = end - start - 1; @@ -182,7 +146,43 @@ namespace Grid { template inline std::ostream & operator<<(std::ostream &os, const std::pair &p) { - os << "<" << p.first << " " << p.second << ">"; + os << "{" << p.first << " " << p.second << "}"; + return os; + } + + // Vector IO utilities /////////////////////////////////////////////////////// + // helper function to read space-separated values + template + std::vector strToVec(const std::string s) + { + std::istringstream sstr(s); + T buf; + std::vector v; + + while(!sstr.eof()) + { + sstr >> buf; + v.push_back(buf); + } + + return v; + } + + // output to streams for vectors + template < class T > + inline std::ostream & operator<<(std::ostream &os, const std::vector &v) + { + os << "["; + for (auto &x: v) + { + os << x << " "; + } + if (v.size() > 0) + { + os << "\b"; + } + os << "]"; + return os; } From dda6c69d5b32aa7d108b225928b76b8e6748b265 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 5 Mar 2018 19:58:40 +0000 Subject: [PATCH 094/267] Hadrons: scalar SU(N) shift probes --- extras/Hadrons/Modules.hpp | 1 + .../Hadrons/Modules/MScalarSUN/ShiftProbe.hpp | 169 ++++++++++++++++++ extras/Hadrons/modules.inc | 1 + 3 files changed, 171 insertions(+) create mode 100644 extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 695dfd02..ee53faa8 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -61,6 +61,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp new file mode 100644 index 00000000..89059180 --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp @@ -0,0 +1,169 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ +#ifndef Hadrons_MScalarSUN_ShiftProbe_hpp_ +#define Hadrons_MScalarSUN_ShiftProbe_hpp_ + +#include +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * Ward identity phi^n probe with fields at different positions * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MScalarSUN) + +typedef std::pair ShiftPair; + +class ShiftProbePar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(ShiftProbePar, + std::string, field, + std::string, shifts, + std::string, output); +}; + +template +class TShiftProbe: public Module +{ +public: + + typedef typename SImpl::Field Field; + typedef typename SImpl::ComplexField ComplexField; + class Result: Serializable + { + public: + GRID_SERIALIZABLE_CLASS_MEMBERS(Result, + std::string, op, + Complex , value); + }; +public: + // constructor + TShiftProbe(const std::string name); + // destructor + virtual ~TShiftProbe(void) = default; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER_NS(ShiftProbeSU2, TShiftProbe>, MScalarSUN); +MODULE_REGISTER_NS(ShiftProbeSU3, TShiftProbe>, MScalarSUN); +MODULE_REGISTER_NS(ShiftProbeSU4, TShiftProbe>, MScalarSUN); +MODULE_REGISTER_NS(ShiftProbeSU5, TShiftProbe>, MScalarSUN); +MODULE_REGISTER_NS(ShiftProbeSU6, TShiftProbe>, MScalarSUN); + +/****************************************************************************** + * TShiftProbe implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TShiftProbe::TShiftProbe(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TShiftProbe::getInput(void) +{ + std::vector in = {par().field}; + + return in; +} + +template +std::vector TShiftProbe::getOutput(void) +{ + std::vector out = {getName()}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TShiftProbe::setup(void) +{ + envTmpLat(Field, "acc"); + envCacheLat(ComplexField, getName()); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TShiftProbe::execute(void) +{ + LOG(Message) << "Creating shift probe for shifts " << par().shifts + << std::endl; + + std::vector shift; + unsigned int sign; + auto &phi = envGet(Field, par().field); + auto &probe = envGet(ComplexField, getName()); + + shift = strToVec(par().shifts); + if (shift.size() % 2 != 0) + { + HADRON_ERROR(Size, "the number of shifts is odd"); + } + sign = (shift.size() % 4 == 0) ? 1 : -1; + for (auto &s: shift) + { + if (s.first >= env().getNd()) + { + HADRON_ERROR(Size, "dimension to large for shift <" + + std::to_string(s.first) + " " + + std::to_string(s.second) + ">" ); + } + } + envGetTmp(Field, acc); + acc = 1.; + for (unsigned int i = 0; i < shift.size(); ++i) + { + if (shift[i].second == 0) + { + acc *= phi; + } + else + { + acc *= Cshift(phi, shift[i].first, shift[i].second); + } + } + probe = sign*trace(acc); +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MScalarSUN_ShiftProbe_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 44df3091..c0be8aef 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -44,6 +44,7 @@ modules_hpp =\ Modules/MAction/Wilson.hpp \ Modules/MAction/WilsonClover.hpp \ Modules/MAction/ZMobiusDWF.hpp \ + Modules/MScalarSUN/ShiftProbe.hpp \ Modules/MScalarSUN/Div.hpp \ Modules/MScalarSUN/TrMag.hpp \ Modules/MScalarSUN/EMT.hpp \ From c793947209aa0fb0111cf95b911e931b2c725d4c Mon Sep 17 00:00:00 2001 From: James Harrison Date: Tue, 6 Mar 2018 16:27:26 +0000 Subject: [PATCH 095/267] Add overloaded Photon constructors, with default parameters for IR improvements and infinite-volume G(x=0). --- extras/Hadrons/Modules/MGauge/UnitEm.cc | 2 +- lib/qcd/action/gauge/Photon.h | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.cc b/extras/Hadrons/Modules/MGauge/UnitEm.cc index ad842584..e5536d7a 100644 --- a/extras/Hadrons/Modules/MGauge/UnitEm.cc +++ b/extras/Hadrons/Modules/MGauge/UnitEm.cc @@ -61,7 +61,7 @@ void TUnitEm::setup(void) // execution /////////////////////////////////////////////////////////////////// void TUnitEm::execute(void) { - PhotonR photon(0, 0, std::vector(), 0.0); // Just chose arbitrary input values here + PhotonR photon(0, 0); // Just chose arbitrary input values here auto &a = envGet(EmField, getName()); LOG(Message) << "Generating unit EM potential..." << std::endl; photon.UnitField(a); diff --git a/lib/qcd/action/gauge/Photon.h b/lib/qcd/action/gauge/Photon.h index bcfe40e0..f36df5ea 100644 --- a/lib/qcd/action/gauge/Photon.h +++ b/lib/qcd/action/gauge/Photon.h @@ -60,6 +60,9 @@ namespace QCD{ GRID_SERIALIZABLE_ENUM(Gauge, undef, feynman, 1, coulomb, 2, landau, 3); GRID_SERIALIZABLE_ENUM(ZmScheme, undef, qedL, 1, qedTL, 2, qedInf, 3); public: + Photon(Gauge gauge, ZmScheme zmScheme); + Photon(Gauge gauge, ZmScheme zmScheme, std::vector improvements); + Photon(Gauge gauge, ZmScheme zmScheme, Real G0); Photon(Gauge gauge, ZmScheme zmScheme, std::vector improvements, Real G0); virtual ~Photon(void) = default; void FreePropagator(const GaugeField &in, GaugeField &out); @@ -82,12 +85,30 @@ namespace QCD{ typedef Photon PhotonR; + template + Photon::Photon(Gauge gauge, ZmScheme zmScheme) + : gauge_(gauge), zmScheme_(zmScheme), improvement_(std::vector()), + G0_(0.15493339023106021408483720810737508876916113364521) + {} + + template + Photon::Photon(Gauge gauge, ZmScheme zmScheme, + std::vector improvements) + : gauge_(gauge), zmScheme_(zmScheme), improvement_(improvements), + G0_(0.15493339023106021408483720810737508876916113364521) + {} + + template + Photon::Photon(Gauge gauge, ZmScheme zmScheme, Real G0) + : gauge_(gauge), zmScheme_(zmScheme), improvement_(std::vector()), G0_(G0) + {} + template Photon::Photon(Gauge gauge, ZmScheme zmScheme, std::vector improvements, Real G0) : gauge_(gauge), zmScheme_(zmScheme), improvement_(improvements), G0_(G0) {} - + template void Photon::FreePropagator (const GaugeField &in,GaugeField &out) { From 2f849ee25227dde692d93c2d571051d18e8068f4 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 8 Mar 2018 23:34:00 +0000 Subject: [PATCH 096/267] declaration fix --- lib/serialisation/BaseIO.h | 48 --------------------------------- lib/serialisation/VectorUtils.h | 48 +++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/lib/serialisation/BaseIO.h b/lib/serialisation/BaseIO.h index c9b3fb9e..298bff87 100644 --- a/lib/serialisation/BaseIO.h +++ b/lib/serialisation/BaseIO.h @@ -35,54 +35,6 @@ Author: Guido Cossu #include namespace Grid { - // Pair IO utilities ///////////////////////////////////////////////////////// - // helper function to parse input in the format "" - template - inline std::istream & operator>>(std::istream &is, std::pair &buf) - { - T1 buf1; - T2 buf2; - char c; - - // Search for "pair" delimiters. - do - { - is.get(c); - } while (c != '(' && !is.eof()); - if (c == '(') - { - int start = is.tellg(); - do - { - is.get(c); - } while (c != ')' && !is.eof()); - if (c == ')') - { - int end = is.tellg(); - int psize = end - start - 1; - - // Only read data between pair limiters. - is.seekg(start); - std::string tmpstr(psize, ' '); - is.read(&tmpstr[0], psize); - std::istringstream temp(tmpstr); - temp >> buf1 >> buf2; - buf = std::make_pair(buf1, buf2); - is.seekg(end); - } - } - is.peek(); - return is; - } - - // output to streams for pairs - template - inline std::ostream & operator<<(std::ostream &os, const std::pair &p) - { - os << "(" << p.first << " " << p.second << ")"; - return os; - } - // Abstract writer/reader classes //////////////////////////////////////////// // static polymorphism implemented using CRTP idiom class Serializable; diff --git a/lib/serialisation/VectorUtils.h b/lib/serialisation/VectorUtils.h index f5c76b84..6df9416d 100644 --- a/lib/serialisation/VectorUtils.h +++ b/lib/serialisation/VectorUtils.h @@ -5,6 +5,54 @@ #include namespace Grid { + // Pair IO utilities ///////////////////////////////////////////////////////// + // helper function to parse input in the format "" + template + inline std::istream & operator>>(std::istream &is, std::pair &buf) + { + T1 buf1; + T2 buf2; + char c; + + // Search for "pair" delimiters. + do + { + is.get(c); + } while (c != '(' && !is.eof()); + if (c == '(') + { + int start = is.tellg(); + do + { + is.get(c); + } while (c != ')' && !is.eof()); + if (c == ')') + { + int end = is.tellg(); + int psize = end - start - 1; + + // Only read data between pair limiters. + is.seekg(start); + std::string tmpstr(psize, ' '); + is.read(&tmpstr[0], psize); + std::istringstream temp(tmpstr); + temp >> buf1 >> buf2; + buf = std::make_pair(buf1, buf2); + is.seekg(end); + } + } + is.peek(); + return is; + } + + // output to streams for pairs + template + inline std::ostream & operator<<(std::ostream &os, const std::pair &p) + { + os << "(" << p.first << " " << p.second << ")"; + return os; + } + // Grid scalar tensors to nested std::vectors ////////////////////////////////// template struct TensorToVec From 70ec2faa98a86f904e1f63234e4ce1a602d939c5 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 9 Mar 2018 19:53:55 +0000 Subject: [PATCH 097/267] Hadrons: maximum iteration specified for tests and error if 0 --- extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 8 +++++++- tests/hadrons/Test_QED.cc | 5 +++-- tests/hadrons/Test_hadrons.hpp | 5 +++-- tests/hadrons/Test_hadrons_2AS_spectrum.cc | 5 +++-- tests/hadrons/Test_hadrons_meson_3pt.cc | 5 +++-- tests/hadrons/Test_hadrons_spectrum.cc | 5 +++-- tests/hadrons/Test_hadrons_wilsonFund.cc | 5 +++-- 7 files changed, 25 insertions(+), 13 deletions(-) diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index 2b914625..4bff910e 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -111,9 +111,15 @@ std::vector TRBPrecCG::getOutput(void) template void TRBPrecCG::setup(void) { + if (par().maxIteration == 0) + { + HADRON_ERROR(Argument, "zero maximum iteration"); + } + LOG(Message) << "setting up Schur red-black preconditioned CG for" << " action '" << par().action << "' with residual " - << par().residual << std::endl; + << par().residual << ", maximum iteration " + << par().maxIteration << std::endl; auto Ls = env().getObjectLs(par().action); auto &mat = envGet(FMat, par().action); diff --git a/tests/hadrons/Test_QED.cc b/tests/hadrons/Test_QED.cc index 44dd0578..3377bf3c 100644 --- a/tests/hadrons/Test_QED.cc +++ b/tests/hadrons/Test_QED.cc @@ -93,8 +93,9 @@ int main(int argc, char *argv[]) // solvers MSolver::RBPrecCG::Par solverPar; - solverPar.action = "DWF_" + flavour[i]; - solverPar.residual = 1.0e-8; + solverPar.action = "DWF_" + flavour[i]; + solverPar.residual = 1.0e-8; + solverPar.maxIteration = 10000; application.createModule("CG_" + flavour[i], solverPar); diff --git a/tests/hadrons/Test_hadrons.hpp b/tests/hadrons/Test_hadrons.hpp index 6188a580..67124d6c 100644 --- a/tests/hadrons/Test_hadrons.hpp +++ b/tests/hadrons/Test_hadrons.hpp @@ -176,8 +176,9 @@ inline void makeRBPrecCGSolver(Application &application, std::string &solverName if (!(VirtualMachine::getInstance().hasModule(solverName))) { MSolver::RBPrecCG::Par solverPar; - solverPar.action = actionName; - solverPar.residual = residual; + solverPar.action = actionName; + solverPar.residual = residual; + solverPar.maxIteration = 10000; application.createModule(solverName, solverPar); } diff --git a/tests/hadrons/Test_hadrons_2AS_spectrum.cc b/tests/hadrons/Test_hadrons_2AS_spectrum.cc index 2f519834..b3906730 100644 --- a/tests/hadrons/Test_hadrons_2AS_spectrum.cc +++ b/tests/hadrons/Test_hadrons_2AS_spectrum.cc @@ -106,8 +106,9 @@ int main(int argc, char *argv[]) // solvers MSolver::RBPrecCG2AS::Par solverPar; - solverPar.action = "WilsonClover2AS_" + flavour[i]; - solverPar.residual = 1.0e-8; + solverPar.action = "WilsonClover2AS_" + flavour[i]; + solverPar.residual = 1.0e-8; + solverPar.maxIteration = 10000; application.createModule("CG_" + flavour[i], solverPar); diff --git a/tests/hadrons/Test_hadrons_meson_3pt.cc b/tests/hadrons/Test_hadrons_meson_3pt.cc index 382c39d4..b12ef472 100644 --- a/tests/hadrons/Test_hadrons_meson_3pt.cc +++ b/tests/hadrons/Test_hadrons_meson_3pt.cc @@ -82,8 +82,9 @@ int main(int argc, char *argv[]) // solvers MSolver::RBPrecCG::Par solverPar; - solverPar.action = "DWF_" + flavour[i]; - solverPar.residual = 1.0e-8; + solverPar.action = "DWF_" + flavour[i]; + solverPar.residual = 1.0e-8; + solverPar.maxIteration = 10000; application.createModule("CG_" + flavour[i], solverPar); } diff --git a/tests/hadrons/Test_hadrons_spectrum.cc b/tests/hadrons/Test_hadrons_spectrum.cc index 801674f7..682dcc9b 100644 --- a/tests/hadrons/Test_hadrons_spectrum.cc +++ b/tests/hadrons/Test_hadrons_spectrum.cc @@ -84,8 +84,9 @@ int main(int argc, char *argv[]) // solvers MSolver::RBPrecCG::Par solverPar; - solverPar.action = "DWF_" + flavour[i]; - solverPar.residual = 1.0e-8; + solverPar.action = "DWF_" + flavour[i]; + solverPar.residual = 1.0e-8; + solverPar.maxIteration = 10000; application.createModule("CG_" + flavour[i], solverPar); diff --git a/tests/hadrons/Test_hadrons_wilsonFund.cc b/tests/hadrons/Test_hadrons_wilsonFund.cc index 083d3b8c..36e751b6 100644 --- a/tests/hadrons/Test_hadrons_wilsonFund.cc +++ b/tests/hadrons/Test_hadrons_wilsonFund.cc @@ -96,8 +96,9 @@ int main(int argc, char *argv[]) // solvers MSolver::RBPrecCG::Par solverPar; - solverPar.action = "WilsonClover_" + flavour[i]; - solverPar.residual = 1.0e-8; + solverPar.action = "WilsonClover_" + flavour[i]; + solverPar.residual = 1.0e-8; + solverPar.maxIteration = 10000; application.createModule("CG_" + flavour[i], solverPar); From e485a07133f0e8694f3e51e8167c84848f673060 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 9 Mar 2018 21:56:01 +0000 Subject: [PATCH 098/267] Hadrons: garbage collector debug output --- extras/Hadrons/VirtualMachine.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index eb1f68ba..8d253805 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -632,6 +632,15 @@ void VirtualMachine::executeProgram(const Program &p) const // build garbage collection schedule LOG(Debug) << "Building garbage collection schedule..." << std::endl; freeProg = makeGarbageSchedule(p); + for (unsigned int i = 0; i < freeProg.size(); ++i) + { + LOG(Debug) << std::setw(4) << i + 1 << ": ["; + for (auto &a: freeProg[i]) + { + std::cout << env().getObjectName(a) << " "; + } + std::cout << "]" << std::endl; + } // program execution LOG(Debug) << "Executing program..." << std::endl; From 229977c9553a4b6f9757fddec33dfe8b43b2cd7d Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 9 Mar 2018 21:56:27 +0000 Subject: [PATCH 099/267] Hadrons: minor memory fix for ShiftProbe module --- extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp index 89059180..8d52327e 100644 --- a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp @@ -116,7 +116,7 @@ template void TShiftProbe::setup(void) { envTmpLat(Field, "acc"); - envCacheLat(ComplexField, getName()); + envCreateLat(ComplexField, getName()); } // execution /////////////////////////////////////////////////////////////////// From 8462bbfe638702f027889cd45e51c9e7e8212837 Mon Sep 17 00:00:00 2001 From: Vera Guelpers Date: Mon, 12 Mar 2018 18:02:12 +0000 Subject: [PATCH 100/267] Gamma input for meson contraction with round brackets --- extras/Hadrons/Modules/MContraction/Meson.hpp | 4 ++-- tests/hadrons/Test_QED.cc | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/Meson.hpp b/extras/Hadrons/Modules/MContraction/Meson.hpp index 5d27c526..742ac96a 100644 --- a/extras/Hadrons/Modules/MContraction/Meson.hpp +++ b/extras/Hadrons/Modules/MContraction/Meson.hpp @@ -45,8 +45,8 @@ BEGIN_HADRONS_NAMESPACE - q1: input propagator 1 (string) - q2: input propagator 2 (string) - gammas: gamma products to insert at sink & source, pairs of gamma matrices - (space-separated strings) in angled brackets (i.e. ), - in a sequence (e.g. ""). + (space-separated strings) in round brackets (i.e. (g_sink g_src)), + in a sequence (e.g. "(Gamma5 Gamma5)(Gamma5 GammaT)"). Special values: "all" - perform all possible contractions. - sink: module to compute the sink to use in contraction (string). diff --git a/tests/hadrons/Test_QED.cc b/tests/hadrons/Test_QED.cc index 3377bf3c..c0bfacc6 100644 --- a/tests/hadrons/Test_QED.cc +++ b/tests/hadrons/Test_QED.cc @@ -189,7 +189,7 @@ int main(int argc, char *argv[]) mesPar.output = "QED/pt_" + flavour[i] + flavour[j]; mesPar.q1 = "Qpt_" + flavour[i]; mesPar.q2 = "Qpt_" + flavour[j]; - mesPar.gammas = ""; + mesPar.gammas = "(Gamma5 Gamma5)"; mesPar.sink = "sink"; application.createModule("meson_pt_" + flavour[i] + flavour[j], @@ -203,7 +203,7 @@ int main(int argc, char *argv[]) + flavour[i] + "__" + flavour[j]; mesPar_seq_T.q1 = "Qpt_" + flavour[i] + "_seq_T" + flavour[i]; mesPar_seq_T.q2 = "Qpt_" + flavour[j]; - mesPar_seq_T.gammas = ""; + mesPar_seq_T.gammas = "(Gamma5 Gamma5)"; mesPar_seq_T.sink = "sink"; application.createModule("meson_tadpole_pt_" + flavour[i] + "_seq_T" @@ -219,7 +219,7 @@ int main(int argc, char *argv[]) + flavour[j]; mesPar_seq_E.q1 = "Qpt_" + flavour[i] + "_seq_V_ph_" + flavour[i]; mesPar_seq_E.q2 = "Qpt_" + flavour[j] + "_seq_V_ph_" + flavour[j]; - mesPar_seq_E.gammas = ""; + mesPar_seq_E.gammas = "(Gamma5 Gamma5)"; mesPar_seq_E.sink = "sink"; application.createModule("meson_exchange_pt_" + flavour[i] + "_seq_V_ph_" + flavour[i] @@ -236,7 +236,7 @@ int main(int argc, char *argv[]) mesPar_seq_S.q1 = "Qpt_" + flavour[i] + "_seq_V_ph_" + flavour[i] + "_seq_V_ph_" + flavour[i]; mesPar_seq_S.q2 = "Qpt_" + flavour[j]; - mesPar_seq_S.gammas = ""; + mesPar_seq_S.gammas = "(Gamma5 Gamma5)"; mesPar_seq_S.sink = "sink"; application.createModule("meson_selfenergy_pt_" + flavour[i] + "_seq_V_ph_" From f57afe2079aad747b7ccd2d8f1835f2b58cb523b Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 13 Mar 2018 13:51:09 +0000 Subject: [PATCH 101/267] Hadrons: much cleaner eigenpack implementation, to be tested --- extras/Hadrons/EigenPack.hpp | 213 ++++++++++++++++++ extras/Hadrons/Environment.cc | 99 +++++++- extras/Hadrons/Environment.hpp | 10 + extras/Hadrons/LanczosUtils.hpp | 115 ---------- extras/Hadrons/Makefile.am | 2 +- .../Modules/MSolver/LocalCoherenceLanczos.hpp | 142 ++++-------- 6 files changed, 362 insertions(+), 219 deletions(-) create mode 100644 extras/Hadrons/EigenPack.hpp delete mode 100644 extras/Hadrons/LanczosUtils.hpp diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp new file mode 100644 index 00000000..eeb04d17 --- /dev/null +++ b/extras/Hadrons/EigenPack.hpp @@ -0,0 +1,213 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/EigenPack.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ +#ifndef Hadrons_EigenPack_hpp_ +#define Hadrons_EigenPack_hpp_ + +#include +#include + +BEGIN_HADRONS_NAMESPACE + +// Lanczos type +#ifndef HADRONS_DEFAULT_LANCZOS_NBASIS +#define HADRONS_DEFAULT_LANCZOS_NBASIS 60 +#endif + +template +class EigenPack +{ +public: + std::vector eval; + std::vector evec; +public: + EigenPack(void) = default; + virtual ~EigenPack(void) = default; + + EigenPack(const size_t size, GridBase *grid) + { + resize(size, grid); + } + + void resize(const size_t size, GridBase *grid) + { + eval.resize(size); + evec.resize(size, grid); + } + + virtual void read(const std::string fileStem, const int traj = -1) + { + std::string evecFilename, evalFilename; + + makeFilenames(evecFilename, evalFilename, fileStem, traj); + XmlReader xmlReader(evalFilename); + basicRead(evec, evecFilename, evec.size()); + LOG(Message) << "Reading " << eval.size() << " eigenvalues from '" + << evalFilename << "'" << std::endl; + Grid::read(xmlReader, "evals", eval); + } + + virtual void write(const std::string fileStem, const int traj = -1) + { + std::string evecFilename, evalFilename; + + makeFilenames(evecFilename, evalFilename, fileStem, traj); + XmlWriter xmlWriter(evalFilename); + basicWrite(evecFilename, evec, evec.size()); + LOG(Message) << "Writing " << eval.size() << " eigenvalues to '" + << evalFilename << "'" << std::endl; + Grid::write(xmlWriter, "evals", eval); + } +protected: + void makeFilenames(std::string &evecFilename, std::string &evalFilename, + const std::string stem, const int traj = -1) + { + std::string t = (traj < 0) ? "" : ("." + std::to_string(traj)); + + evecFilename = stem + "_evec" + t + ".bin"; + evalFilename = stem + "_eval" + t + ".xml"; + } + + template + static void basicRead(std::vector &evec, const std::string filename, + const unsigned int size) + { + emptyUserRecord record; + ScidacReader binReader; + + binReader.open(filename); + for(int k = 0; k < size; ++k) + { + binReader.readScidacFieldRecord(evec[k], record); + } + binReader.close(); + } + + template + static void basicWrite(const std::string filename, std::vector &evec, + const unsigned int size) + { + emptyUserRecord record; + ScidacWriter binWriter; + + binWriter.open(filename); + for(int k = 0; k < size; ++k) + { + binWriter.writeScidacFieldRecord(evec[k], record); + } + binWriter.close(); + } +}; + +template +class CoarseEigenPack: public EigenPack +{ +public: + std::vector evalCoarse; + std::vector evecCoarse; +public: + CoarseEigenPack(void) = default; + virtual ~CoarseEigenPack(void) = default; + + CoarseEigenPack(const size_t sizeFine, const size_t sizeCoarse, + GridBase *gridFine, GridBase *gridCoarse) + { + resize(sizeFine, sizeCoarse, gridFine, gridCoarse); + } + + void resize(const size_t sizeFine, const size_t sizeCoarse, + GridBase *gridFine, GridBase *gridCoarse) + { + EigenPack::resize(sizeFine, gridFine); + evalCoarse.resize(sizeCoarse); + evecCoarse.resize(sizeCoarse, gridCoarse); + } + + virtual void read(const std::string fileStem, const int traj = -1) + { + std::string evecFineFilename, evalFineFilename; + std::string evecCoarseFilename, evalCoarseFilename; + + this->makeFilenames(evecFineFilename, evalFineFilename, + fileStem + "_fine", traj); + this->makeFilenames(evecCoarseFilename, evalCoarseFilename, + fileStem + "_coarse", traj); + XmlReader xmlFineReader(evalFineFilename); + XmlReader xmlCoarseReader(evalCoarseFilename); + LOG(Message) << "Reading " << this->evec.size() << " fine eigenvectors from '" + << evecFineFilename << "'" << std::endl; + this->basicRead(this->evec, evecFineFilename, this->evec.size()); + LOG(Message) << "Reading " << evecCoarse.size() << " coarse eigenvectors from '" + << evecCoarseFilename << "'" << std::endl; + this->basicRead(evecCoarse, evecCoarseFilename, evecCoarse.size()); + LOG(Message) << "Reading " << this->eval.size() << " fine eigenvalues from '" + << evalFineFilename << "'" << std::endl; + Grid::read(xmlFineReader, "evals", this->eval); + LOG(Message) << "Reading " << evalCoarse.size() << " coarse eigenvalues from '" + << evalCoarseFilename << "'" << std::endl; + Grid::read(xmlCoarseReader, "evals", evalCoarse); + } + + virtual void write(const std::string fileStem, const int traj = -1) + { + std::string evecFineFilename, evalFineFilename; + std::string evecCoarseFilename, evalCoarseFilename; + + this->makeFilenames(evecFineFilename, evalFineFilename, + fileStem + "_fine", traj); + this->makeFilenames(evecCoarseFilename, evalCoarseFilename, + fileStem + "_coarse", traj); + XmlWriter xmlFineWriter(evalFineFilename); + XmlWriter xmlCoarseWriter(evalCoarseFilename); + LOG(Message) << "Writing " << this->evec.size() << " fine eigenvectors to '" + << evecFineFilename << "'" << std::endl; + this->basicWrite(evecFineFilename, this->evec, this->evec.size()); + LOG(Message) << "Writing " << evecCoarse.size() << " coarse eigenvectors to '" + << evecCoarseFilename << "'" << std::endl; + this->basicWrite(evecCoarseFilename, evecCoarse, evecCoarse.size()); + LOG(Message) << "Writing " << this->eval.size() << " fine eigenvalues to '" + << evalFineFilename << "'" << std::endl; + Grid::write(xmlFineWriter, "evals", this->eval); + LOG(Message) << "Writing " << evalCoarse.size() << " coarse eigenvalues to '" + << evalCoarseFilename << "'" << std::endl; + Grid::write(xmlCoarseWriter, "evals", evalCoarse); + } +}; + +template +using FermionEigenPack = EigenPack; + +template +using CoarseFermionEigenPack = CoarseEigenPack< + typename FImpl::FermionField, + typename LocalCoherenceLanczos::CoarseField>; + +END_HADRONS_NAMESPACE + +#endif // Hadrons_EigenPack_hpp_ diff --git a/extras/Hadrons/Environment.cc b/extras/Hadrons/Environment.cc index 6554122e..9c9618f7 100644 --- a/extras/Hadrons/Environment.cc +++ b/extras/Hadrons/Environment.cc @@ -61,7 +61,7 @@ Environment::Environment(void) // grids /////////////////////////////////////////////////////////////////////// void Environment::createGrid(const unsigned int Ls) { - if (grid5d_.find(Ls) == grid5d_.end()) + if ((Ls > 1) and (grid5d_.find(Ls) == grid5d_.end())) { auto g = getGrid(); @@ -70,6 +70,53 @@ void Environment::createGrid(const unsigned int Ls) } } +void Environment::createCoarseGrid(const std::vector &blockSize, + const unsigned int Ls) +{ + int nd = getNd(); + std::vector fineDim = getDim(), coarseDim; + unsigned int cLs; + auto key4d = blockSize, key5d = blockSize; + + createGrid(Ls); + coarseDim.resize(nd); + for (int d = 0; d < coarseDim.size(); d++) + { + coarseDim[d] = fineDim[d]/blockSize[d]; + if (coarseDim[d]*blockSize[d] != fineDim[d]) + { + HADRON_ERROR(Size, "Fine dimension " + std::to_string(d) + + " (" + std::to_string(fineDim[d]) + + ") not divisible by coarse dimension (" + + std::to_string(coarseDim[d]) + ")"); + } + } + if (blockSize.size() > nd) + { + cLs = Ls/blockSize[nd]; + if (cLs*blockSize[nd] != Ls) + { + HADRON_ERROR(Size, "Fine Ls (" + std::to_string(Ls) + + ") not divisible by coarse Ls (" + + std::to_string(cLs) + ")"); + } + key4d.resize(nd); + key5d.push_back(Ls); + } + gridCoarse4d_[key4d].reset( + SpaceTimeGrid::makeFourDimGrid(coarseDim, + GridDefaultSimd(nd, vComplex::Nsimd()), GridDefaultMpi())); + gridCoarseRb4d_[key4d].reset( + SpaceTimeGrid::makeFourDimRedBlackGrid(gridCoarse4d_[key4d].get())); + if (Ls > 1) + { + gridCoarse5d_[key5d].reset( + SpaceTimeGrid::makeFiveDimGrid(cLs, gridCoarse4d_[key4d].get())); + gridCoarseRb5d_[key5d].reset( + SpaceTimeGrid::makeFiveDimRedBlackGrid(cLs, gridCoarse4d_[key4d].get())); + } +} + GridCartesian * Environment::getGrid(const unsigned int Ls) const { try @@ -104,7 +151,55 @@ GridRedBlackCartesian * Environment::getRbGrid(const unsigned int Ls) const } catch(std::out_of_range &) { - HADRON_ERROR(Definition, "no red-black 5D grid with Ls= " + std::to_string(Ls)); + HADRON_ERROR(Definition, "no red-black grid with Ls= " + std::to_string(Ls)); + } +} + +GridCartesian * Environment::getCoarseGrid( + const std::vector &blockSize, const unsigned int Ls) const +{ + auto key = blockSize; + + try + { + if (Ls == 1) + { + key.resize(getNd()); + return gridCoarse4d_.at(key).get(); + } + else + { + key.push_back(Ls); + return gridCoarse5d_.at(key).get(); + } + } + catch(std::out_of_range &) + { + HADRON_ERROR(Definition, "no coarse grid with Ls= " + std::to_string(Ls)); + } +} + +GridRedBlackCartesian * Environment::getRbCoarseGrid( + const std::vector &blockSize, const unsigned int Ls) const +{ + auto key = blockSize; + + try + { + if (Ls == 1) + { + key.resize(getNd()); + return gridCoarseRb4d_.at(key).get(); + } + else + { + key.push_back(Ls); + return gridCoarseRb5d_.at(key).get(); + } + } + catch(std::out_of_range &) + { + HADRON_ERROR(Definition, "no coarse red-black grid with Ls= " + std::to_string(Ls)); } } diff --git a/extras/Hadrons/Environment.hpp b/extras/Hadrons/Environment.hpp index e9bfffe1..3b1d45f8 100644 --- a/extras/Hadrons/Environment.hpp +++ b/extras/Hadrons/Environment.hpp @@ -86,8 +86,14 @@ private: public: // grids void createGrid(const unsigned int Ls); + void createCoarseGrid(const std::vector &blockSize, + const unsigned int Ls = 1); GridCartesian * getGrid(const unsigned int Ls = 1) const; GridRedBlackCartesian * getRbGrid(const unsigned int Ls = 1) const; + GridCartesian * getCoarseGrid(const std::vector &blockSize, + const unsigned int Ls = 1) const; + GridRedBlackCartesian * getRbCoarseGrid(const std::vector &blockSize, + const unsigned int Ls = 1) const; std::vector getDim(void) const; int getDim(const unsigned int mu) const; unsigned long int getLocalVolume(void) const; @@ -155,6 +161,10 @@ private: std::map grid5d_; GridRbPt gridRb4d_; std::map gridRb5d_; + std::map, GridPt> gridCoarse4d_; + std::map, GridRbPt> gridCoarseRb4d_; + std::map, GridPt> gridCoarse5d_; + std::map, GridRbPt> gridCoarseRb5d_; unsigned int nd_; // random number generator RngPt rng4d_; diff --git a/extras/Hadrons/LanczosUtils.hpp b/extras/Hadrons/LanczosUtils.hpp deleted file mode 100644 index a080da4b..00000000 --- a/extras/Hadrons/LanczosUtils.hpp +++ /dev/null @@ -1,115 +0,0 @@ -/************************************************************************************* - -Grid physics library, www.github.com/paboyle/Grid - -Source file: extras/Hadrons/LanczosUtils.hpp - -Copyright (C) 2015-2018 - -Author: Antonin Portelli - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -See the full license in the file "LICENSE" in the top level distribution directory -*************************************************************************************/ -/* END LEGAL */ -#ifndef Hadrons_LanczosUtils_hpp_ -#define Hadrons_LanczosUtils_hpp_ - -#include -#include - -BEGIN_HADRONS_NAMESPACE - -// Lanczos type -#ifndef HADRONS_DEFAULT_LANCZOS_NBASIS -#define HADRONS_DEFAULT_LANCZOS_NBASIS 60 -#endif - -template -struct EigenPack -{ - typedef T VectorType; - std::vector eval; - std::vector evec; - - EigenPack(void) = default; - - EigenPack(const size_t size, GridBase *grid) - { - resize(size, grid); - } - - void resize(const size_t size, GridBase *grid) - { - eval.resize(size); - evec.resize(size, grid); - } - - void read(const std::string fileStem) - { - std::string evecFilename = fileStem + "_evec.bin"; - std::string evalFilename = fileStem + "_eval.xml"; - emptyUserRecord record; - ScidacReader binReader; - XmlReader xmlReader(evalFilename); - - LOG(Message) << "Reading " << evec.size() << " eigenvectors from '" - << evecFilename << "'" << std::endl; - binReader.open(evecFilename); - for(int k = 0; k < evec.size(); ++k) - { - binReader.readScidacFieldRecord(evec[k], record); - } - binReader.close(); - LOG(Message) << "Reading " << eval.size() << " eigenvalues from '" - << evalFilename << "'" << std::endl; - Grid::read(xmlReader, "evals", eval); - } - - void write(const std::string fileStem) - { - std::string evecFilename = fileStem + "_evec.bin"; - std::string evalFilename = fileStem + "_eval.xml"; - emptyUserRecord record; - ScidacWriter binWriter; - XmlWriter xmlWriter(evalFilename); - - LOG(Message) << "Writing " << evec.size() << " eigenvectors to '" - << evecFilename << "'" << std::endl; - binWriter.open(fileStem + "_evec.bin"); - for(int k = 0; k < evec.size(); ++k) - { - binWriter.writeScidacFieldRecord(evec[k], record); - } - binWriter.close(); - LOG(Message) << "Writing " << eval.size() << " eigenvalues to '" - << evalFilename << "'" << std::endl; - Grid::write(xmlWriter, "evals", eval); - } -}; - -template -using FineEigenPack = EigenPack; - -template -using CoarseEigenPack = EigenPack< - typename LocalCoherenceLanczos::CoarseField>; - -END_HADRONS_NAMESPACE - -#endif // Hadrons_LanczosUtils_hpp_ diff --git a/extras/Hadrons/Makefile.am b/extras/Hadrons/Makefile.am index 3b393cd1..3b945124 100644 --- a/extras/Hadrons/Makefile.am +++ b/extras/Hadrons/Makefile.am @@ -21,7 +21,7 @@ nobase_libHadrons_a_HEADERS = \ GeneticScheduler.hpp \ Global.hpp \ Graph.hpp \ - LanczosUtils.hpp \ + EigenPack.hpp \ Module.hpp \ Modules.hpp \ ModuleFactory.hpp \ diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index 6e2103ce..3cc17bdc 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -31,7 +31,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include -#include +#include BEGIN_HADRONS_NAMESPACE @@ -45,8 +45,7 @@ class LocalCoherenceLanczosPar: Serializable public: GRID_SERIALIZABLE_CLASS_MEMBERS(LocalCoherenceLanczosPar, std::string, action, - int, doFine, - int, doCoarse, + bool, doCoarse, LanczosParams, fineParams, LanczosParams, coarseParams, ChebyParams, smoother, @@ -63,8 +62,8 @@ public: typedef LocalCoherenceLanczos LCL; - typedef FineEigenPack FinePack; - typedef CoarseEigenPack CoarsePack; + typedef FermionEigenPack BasePack; + typedef CoarseFermionEigenPack CoarsePack; typedef HADRONS_DEFAULT_SCHUR_OP SchurFMat; public: // constructor @@ -79,15 +78,7 @@ public: // execution virtual void execute(void); private: - void makeCoarseGrid(void); -private: - std::vector coarseDim_; - int Ls_, cLs_{1}; - std::unique_ptr coarseGrid4_{nullptr}; - std::unique_ptr coarseGrid_{nullptr}; - std::unique_ptr coarseGrid4Rb_{nullptr}; - std::unique_ptr coarseGridRb_{nullptr}; - std::string fineName_, coarseName_; + std::string fineName_, coarseName_; }; MODULE_REGISTER_NS(LocalCoherenceLanczos, @@ -127,55 +118,6 @@ std::vector TLocalCoherenceLanczos::getOutput(void) } // setup /////////////////////////////////////////////////////////////////////// -template -void TLocalCoherenceLanczos::makeCoarseGrid(void) -{ - int nd = env().getNd(); - std::vector blockSize = strToVec(par().blockSize); - auto fineDim = env().getDim(); - - Ls_ = env().getObjectLs(par().action); - env().createGrid(Ls_); - coarseDim_.resize(nd); - for (int d = 0; d < coarseDim_.size(); d++) - { - coarseDim_[d] = fineDim[d]/blockSize[d]; - if (coarseDim_[d]*blockSize[d] != fineDim[d]) - { - HADRON_ERROR(Size, "Fine dimension " + std::to_string(d) - + " (" + std::to_string(fineDim[d]) - + ") not divisible by coarse dimension (" - + std::to_string(coarseDim_[d]) + ")"); - } - } - if (blockSize.size() > nd) - { - cLs_ = Ls_/blockSize[nd]; - if (cLs_*blockSize[nd] != Ls_) - { - HADRON_ERROR(Size, "Fine Ls (" + std::to_string(Ls_) - + ") not divisible by coarse Ls (" - + std::to_string(cLs_) + ")"); - } - } - if (Ls_ > 1) - { - coarseGrid4_.reset(SpaceTimeGrid::makeFourDimGrid( - coarseDim_, GridDefaultSimd(nd, vComplex::Nsimd()), - GridDefaultMpi())); - coarseGrid4Rb_.reset(SpaceTimeGrid::makeFourDimRedBlackGrid(coarseGrid4_.get())); - coarseGrid_.reset(SpaceTimeGrid::makeFiveDimGrid(cLs_, coarseGrid4_.get())); - coarseGridRb_.reset(SpaceTimeGrid::makeFiveDimRedBlackGrid(cLs_, coarseGrid4_.get())); - } - else - { - coarseGrid_.reset(SpaceTimeGrid::makeFourDimGrid( - coarseDim_, GridDefaultSimd(nd, vComplex::Nsimd()), - GridDefaultMpi())); - coarseGridRb_.reset(SpaceTimeGrid::makeFourDimRedBlackGrid(coarseGrid_.get())); - } -} - template void TLocalCoherenceLanczos::setup(void) { @@ -183,19 +125,25 @@ void TLocalCoherenceLanczos::setup(void) << " action '" << par().action << "' (" << nBasis << " eigenvectors)..." << std::endl; - if (!coarseGrid_) - { - makeCoarseGrid(); - } - LOG(Message) << "Coarse grid: " << coarseGrid_->GlobalDimensions() << std::endl; - envCreate(FinePack, fineName_, Ls_, par().fineParams.Nm, env().getRbGrid(Ls_)); - envCreate(CoarsePack, coarseName_, Ls_, par().coarseParams.Nm, coarseGridRb_.get()); - auto &fine = envGet(FinePack, fineName_); - auto &coarse = envGet(CoarsePack, coarseName_); - envTmp(SchurFMat, "mat", Ls_, envGet(FMat, par().action)); + unsigned int Ls = env().getObjectLs(par().action); + auto blockSize = strToVec(par().blockSize); + + env().createCoarseGrid(blockSize, Ls); + + auto cg = env().getCoarseGrid(blockSize, Ls); + auto cgrb = env().getRbCoarseGrid(blockSize, Ls); + int cNm = (par().doCoarse) ? par().coarseParams.Nm : 0; + + LOG(Message) << "Coarse grid: " << cg->GlobalDimensions() << std::endl; + envCreateDerived(BasePack, CoarsePack, getName(), Ls, + par().fineParams.Nm, cNm, env().getRbGrid(Ls), cgrb); + + auto &epack = envGet(CoarsePack, getName()); + + envTmp(SchurFMat, "mat", Ls, envGet(FMat, par().action)); envGetTmp(SchurFMat, mat); - envTmp(LCL, "solver", Ls_, env().getRbGrid(Ls_), coarseGridRb_.get(), mat, - Odd, fine.evec, coarse.evec, fine.eval, coarse.eval); + envTmp(LCL, "solver", Ls, env().getRbGrid(Ls), cgrb, mat, + Odd, epack.evec, epack.evecCoarse, epack.eval, epack.evalCoarse); } // execution /////////////////////////////////////////////////////////////////// @@ -204,41 +152,33 @@ void TLocalCoherenceLanczos::execute(void) { auto &finePar = par().fineParams; auto &coarsePar = par().coarseParams; - auto &fine = envGet(FinePack, fineName_); - auto &coarse = envGet(CoarsePack, coarseName_); + auto &epack = envGet(CoarsePack, getName()); envGetTmp(LCL, solver); - if (par().doFine) - { - LOG(Message) << "Performing fine grid IRL -- Nstop= " - << finePar.Nstop << ", Nk= " << finePar.Nk << ", Nm= " - << finePar.Nm << std::endl; - solver.calcFine(finePar.Cheby, finePar.Nstop, finePar.Nk, finePar.Nm, - finePar.resid,finePar.MaxIt, finePar.betastp, - finePar.MinRes); - solver.testFine(finePar.resid*100.0); - LOG(Message) << "Orthogonalising" << std::endl; - solver.Orthogonalise(); - if (!par().output.empty()) - { - fine.write(par().output + "_fine"); - } - } + LOG(Message) << "Performing fine grid IRL -- Nstop= " + << finePar.Nstop << ", Nk= " << finePar.Nk << ", Nm= " + << finePar.Nm << std::endl; + solver.calcFine(finePar.Cheby, finePar.Nstop, finePar.Nk, finePar.Nm, + finePar.resid,finePar.MaxIt, finePar.betastp, + finePar.MinRes); + solver.testFine(finePar.resid*100.0); if (par().doCoarse) { + LOG(Message) << "Orthogonalising" << std::endl; + solver.Orthogonalise(); LOG(Message) << "Performing coarse grid IRL -- Nstop= " - << coarsePar.Nstop << ", Nk= " << coarsePar.Nk << ", Nm= " - << coarsePar.Nm << std::endl; + << coarsePar.Nstop << ", Nk= " << coarsePar.Nk << ", Nm= " + << coarsePar.Nm << std::endl; solver.calcCoarse(coarsePar.Cheby, par().smoother, par().coarseRelaxTol, - coarsePar.Nstop, coarsePar.Nk, coarsePar.Nm, + coarsePar.Nstop, coarsePar.Nk, coarsePar.Nm, coarsePar.resid, coarsePar.MaxIt, coarsePar.betastp, coarsePar.MinRes); solver.testCoarse(coarsePar.resid*100.0, par().smoother, - par().coarseRelaxTol); - if (!par().output.empty()) - { - coarse.write(par().output + "_coarse"); - } + par().coarseRelaxTol); + } + if (!par().output.empty()) + { + epack.write(par().output, vm().getTrajectory()); } } From b85f987b0b29756d320ee17056d15d1e39d5cf44 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 13 Mar 2018 16:09:22 +0000 Subject: [PATCH 102/267] Hadrons: error message channel verbose during profiling --- extras/Hadrons/VirtualMachine.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index 8d253805..ba963276 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -381,7 +381,6 @@ void VirtualMachine::makeMemoryProfile(void) env().protectObjects(false); GridLogMessage.Active(false); HadronsLogMessage.Active(false); - HadronsLogError.Active(false); for (auto it = program.rbegin(); it != program.rend(); ++it) { auto a = *it; @@ -397,7 +396,6 @@ void VirtualMachine::makeMemoryProfile(void) env().protectObjects(protect); GridLogMessage.Active(gmsg); HadronsLogMessage.Active(hmsg); - HadronsLogError.Active(err); LOG(Debug) << "Memory profile:" << std::endl; LOG(Debug) << "----------------" << std::endl; for (unsigned int a = 0; a < profile_.module.size(); ++a) From 78f8d475283269f43b7d26b5711edf8459a19bb5 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 13 Mar 2018 16:10:16 +0000 Subject: [PATCH 103/267] Hadrons: environment access to derived objects --- extras/Hadrons/Environment.hpp | 48 ++++++++++++++++++++++++++++------ extras/Hadrons/Module.hpp | 3 +++ 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/extras/Hadrons/Environment.hpp b/extras/Hadrons/Environment.hpp index 3b1d45f8..637962b1 100644 --- a/extras/Hadrons/Environment.hpp +++ b/extras/Hadrons/Environment.hpp @@ -116,6 +116,10 @@ public: Ts && ... args); void setObjectModule(const unsigned int objAddress, const int modAddress); + template + T * getDerivedObject(const unsigned int address) const; + template + T * getDerivedObject(const std::string name) const; template T * getObject(const unsigned int address) const; template @@ -186,7 +190,7 @@ Holder::Holder(T *pt) template T & Holder::get(void) const { - return &objPt_.get(); + return *objPt_.get(); } template @@ -231,7 +235,7 @@ void Environment::createDerivedObject(const std::string name, object_[address].Ls = Ls; object_[address].data.reset(new Holder(new T(std::forward(args)...))); object_[address].size = MemoryProfiler::stats->maxAllocated - initMem; - object_[address].type = &typeid(T); + object_[address].type = &typeid(B); if (MemoryProfiler::stats == &memStats) { MemoryProfiler::stats = nullptr; @@ -241,7 +245,7 @@ void Environment::createDerivedObject(const std::string name, else if ((object_[address].storage != Storage::cache) or (object_[address].storage != storage) or (object_[address].name != name) or - (object_[address].type != &typeid(T))) + (object_[address].type != &typeid(B))) { HADRON_ERROR(Definition, "object '" + name + "' already allocated"); } @@ -256,21 +260,37 @@ void Environment::createObject(const std::string name, createDerivedObject(name, storage, Ls, std::forward(args)...); } -template -T * Environment::getObject(const unsigned int address) const +template +T * Environment::getDerivedObject(const unsigned int address) const { if (hasObject(address)) { if (hasCreatedObject(address)) { - if (auto h = dynamic_cast *>(object_[address].data.get())) + if (auto h = dynamic_cast *>(object_[address].data.get())) { - return h->getPt(); + if (&typeid(T) == &typeid(B)) + { + return dynamic_cast(h->getPt()); + } + else + { + if (auto hder = dynamic_cast(h->getPt())) + { + return hder; + } + else + { + HADRON_ERROR(Definition, "object with address " + std::to_string(address) + + " cannot be casted to '" + typeName(&typeid(T)) + + "' (has type '" + typeName(&typeid(h->get())) + "')"); + } + } } else { HADRON_ERROR(Definition, "object with address " + std::to_string(address) + - " does not have type '" + typeName(&typeid(T)) + + " does not have type '" + typeName(&typeid(B)) + "' (has type '" + getObjectType(address) + "')"); } } @@ -286,6 +306,18 @@ T * Environment::getObject(const unsigned int address) const } } +template +T * Environment::getDerivedObject(const std::string name) const +{ + return getDerivedObject(getObjectAddress(name)); +} + +template +T * Environment::getObject(const unsigned int address) const +{ + return getDerivedObject(address); +} + template T * Environment::getObject(const std::string name) const { diff --git a/extras/Hadrons/Module.hpp b/extras/Hadrons/Module.hpp index 018a26f7..85c27472 100644 --- a/extras/Hadrons/Module.hpp +++ b/extras/Hadrons/Module.hpp @@ -91,6 +91,9 @@ static ns##mod##ModuleRegistrar ns##mod##ModuleRegistrarInstance; #define envGet(type, name)\ *env().template getObject(name) +#define envGetDerived(base, type, name)\ +*env().template getDerivedObject(name) + #define envGetTmp(type, var)\ type &var = *env().template getObject(getName() + "_tmp_" + #var) From 2d4d70d3ecda9cf817f36be7649796489ed35c7b Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 13 Mar 2018 16:10:36 +0000 Subject: [PATCH 104/267] Hadrons: LCL fixes --- .../Modules/MSolver/LocalCoherenceLanczos.hpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index 3cc17bdc..80717f32 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -77,8 +77,6 @@ public: virtual void setup(void); // execution virtual void execute(void); -private: - std::string fineName_, coarseName_; }; MODULE_REGISTER_NS(LocalCoherenceLanczos, @@ -95,10 +93,7 @@ MODULE_REGISTER_NS(ZLocalCoherenceLanczos, template TLocalCoherenceLanczos::TLocalCoherenceLanczos(const std::string name) : Module(name) -{ - fineName_ = getName() + "_fine"; - coarseName_ = getName() + "_coarse"; -} +{} // dependencies/products /////////////////////////////////////////////////////// template @@ -112,7 +107,7 @@ std::vector TLocalCoherenceLanczos::getInput(void) template std::vector TLocalCoherenceLanczos::getOutput(void) { - std::vector out = {fineName_, coarseName_}; + std::vector out = {getName()}; return out; } @@ -138,7 +133,7 @@ void TLocalCoherenceLanczos::setup(void) envCreateDerived(BasePack, CoarsePack, getName(), Ls, par().fineParams.Nm, cNm, env().getRbGrid(Ls), cgrb); - auto &epack = envGet(CoarsePack, getName()); + auto &epack = envGetDerived(BasePack, CoarsePack, getName()); envTmp(SchurFMat, "mat", Ls, envGet(FMat, par().action)); envGetTmp(SchurFMat, mat); @@ -152,7 +147,7 @@ void TLocalCoherenceLanczos::execute(void) { auto &finePar = par().fineParams; auto &coarsePar = par().coarseParams; - auto &epack = envGet(CoarsePack, getName()); + auto &epack = envGetDerived(BasePack, CoarsePack, getName()); envGetTmp(LCL, solver); LOG(Message) << "Performing fine grid IRL -- Nstop= " From 72344d1418ee165c0acf9c6cf4b3a373efadc085 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 13 Mar 2018 17:10:54 +0000 Subject: [PATCH 105/267] Hadrons: change default Schur convention to DiagTwo --- extras/Hadrons/Global.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/Hadrons/Global.hpp b/extras/Hadrons/Global.hpp index e9f5933b..12b9a029 100644 --- a/extras/Hadrons/Global.hpp +++ b/extras/Hadrons/Global.hpp @@ -190,7 +190,7 @@ name + "." + std::to_string(vm().getTrajectory()) + "." + resultFileExt // default Schur convention #ifndef HADRONS_DEFAULT_SCHUR -#define HADRONS_DEFAULT_SCHUR DiagMooee +#define HADRONS_DEFAULT_SCHUR DiagTwo #endif #define _HADRONS_SCHUR_OP_(conv) Schur##conv##Operator #define HADRONS_SCHUR_OP(conv) _HADRONS_SCHUR_OP_(conv) From d516938707bf4fea9da60f7333126de8be77f992 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Wed, 14 Mar 2018 14:54:25 +0000 Subject: [PATCH 106/267] Hadrons: eigen packs I/O and deflation interface --- extras/Hadrons/EigenPack.hpp | 19 ++- extras/Hadrons/Environment.hpp | 22 +-- extras/Hadrons/Modules.hpp | 2 + extras/Hadrons/Modules/MGauge/FundtoHirep.cc | 12 +- .../Modules/MIO/LoadCoarseEigenPack.hpp | 126 ++++++++++++++++++ extras/Hadrons/Modules/MIO/LoadEigenPack.hpp | 121 +++++++++++++++++ extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 80 ++++++++--- extras/Hadrons/VirtualMachine.cc | 8 +- extras/Hadrons/modules.inc | 2 + lib/algorithms/iterative/Deflation.h | 27 ++-- lib/algorithms/iterative/SchurRedBlack.h | 8 +- lib/serialisation/BaseIO.h | 2 +- 12 files changed, 368 insertions(+), 61 deletions(-) create mode 100644 extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp create mode 100644 extras/Hadrons/Modules/MIO/LoadEigenPack.hpp diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index eeb04d17..d27e35b9 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -29,6 +29,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #define Hadrons_EigenPack_hpp_ #include +#include #include BEGIN_HADRONS_NAMESPACE @@ -38,12 +39,14 @@ BEGIN_HADRONS_NAMESPACE #define HADRONS_DEFAULT_LANCZOS_NBASIS 60 #endif -template +template class EigenPack { +public: + typedef F Field; public: std::vector eval; - std::vector evec; + std::vector evec; public: EigenPack(void) = default; virtual ~EigenPack(void) = default; @@ -123,12 +126,14 @@ protected: } }; -template -class CoarseEigenPack: public EigenPack +template +class CoarseEigenPack: public EigenPack { public: - std::vector evalCoarse; - std::vector evecCoarse; + typedef CoarseF CoarseField; +public: + std::vector evalCoarse; + std::vector evecCoarse; public: CoarseEigenPack(void) = default; virtual ~CoarseEigenPack(void) = default; @@ -142,7 +147,7 @@ public: void resize(const size_t sizeFine, const size_t sizeCoarse, GridBase *gridFine, GridBase *gridCoarse) { - EigenPack::resize(sizeFine, gridFine); + EigenPack::resize(sizeFine, gridFine); evalCoarse.resize(sizeCoarse); evecCoarse.resize(sizeCoarse, gridCoarse); } diff --git a/extras/Hadrons/Environment.hpp b/extras/Hadrons/Environment.hpp index 637962b1..0fb81250 100644 --- a/extras/Hadrons/Environment.hpp +++ b/extras/Hadrons/Environment.hpp @@ -78,7 +78,7 @@ private: Size size{0}; Storage storage{Storage::object}; unsigned int Ls{0}; - const std::type_info *type{nullptr}; + const std::type_info *type{nullptr}, *derivedType{nullptr}; std::string name; int module{-1}; std::unique_ptr data{nullptr}; @@ -230,22 +230,24 @@ void Environment::createDerivedObject(const std::string name, { MemoryProfiler::stats = &memStats; } - size_t initMem = MemoryProfiler::stats->currentlyAllocated; - object_[address].storage = storage; - object_[address].Ls = Ls; + size_t initMem = MemoryProfiler::stats->currentlyAllocated; + object_[address].storage = storage; + object_[address].Ls = Ls; object_[address].data.reset(new Holder(new T(std::forward(args)...))); - object_[address].size = MemoryProfiler::stats->maxAllocated - initMem; - object_[address].type = &typeid(B); + object_[address].size = MemoryProfiler::stats->maxAllocated - initMem; + object_[address].type = &typeid(B); + object_[address].derivedType = &typeid(T); if (MemoryProfiler::stats == &memStats) { MemoryProfiler::stats = nullptr; } } // object already exists, no error if it is a cache, error otherwise - else if ((object_[address].storage != Storage::cache) or - (object_[address].storage != storage) or - (object_[address].name != name) or - (object_[address].type != &typeid(B))) + else if ((object_[address].storage != Storage::cache) or + (object_[address].storage != storage) or + (object_[address].name != name) or + (object_[address].type != &typeid(B)) or + (object_[address].derivedType != &typeid(T))) { HADRON_ERROR(Definition, "object '" + name + "' already allocated"); } diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index ee53faa8..528faecd 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -70,5 +70,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include #include +#include #include diff --git a/extras/Hadrons/Modules/MGauge/FundtoHirep.cc b/extras/Hadrons/Modules/MGauge/FundtoHirep.cc index 31c5a34d..ba8e9330 100644 --- a/extras/Hadrons/Modules/MGauge/FundtoHirep.cc +++ b/extras/Hadrons/Modules/MGauge/FundtoHirep.cc @@ -42,7 +42,8 @@ TFundtoHirep::TFundtoHirep(const std::string name) template std::vector TFundtoHirep::getInput(void) { - std::vector in; + std::vector in = {par().gaugeconf}; + return in; } @@ -50,6 +51,7 @@ template std::vector TFundtoHirep::getOutput(void) { std::vector out = {getName()}; + return out; } @@ -57,19 +59,19 @@ std::vector TFundtoHirep::getOutput(void) template void TFundtoHirep::setup(void) { - envCreateLat(typename Rep::LatticeField, getName()); + envCreateLat(Rep::LatticeField, getName()); } // execution /////////////////////////////////////////////////////////////////// template void TFundtoHirep::execute(void) { - auto &U = *env().template getObject(par().gaugeconf); LOG(Message) << "Transforming Representation" << std::endl; + auto &U = envGet(LatticeGaugeField, par().gaugeconf); + auto &URep = envGet(Rep::LatticeField, getName()); + Rep TargetRepresentation(U._grid); TargetRepresentation.update_representation(U); - - auto &URep = envGet(typename Rep::LatticeField, getName()); URep = TargetRepresentation.U; } diff --git a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp b/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp new file mode 100644 index 00000000..77c3a7ee --- /dev/null +++ b/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp @@ -0,0 +1,126 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ +#ifndef Hadrons_MIO_LoadCoarseEigenPack_hpp_ +#define Hadrons_MIO_LoadCoarseEigenPack_hpp_ + +#include +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * Load local coherence eigen vectors/values package * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MIO) + +class LoadCoarseEigenPackPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(LoadCoarseEigenPackPar, + std::string, filestem, + unsigned int, sizeFine, + unsigned int, sizeCoarse, + unsigned int, Ls, + std::vector, blockSize); +}; + +template +class TLoadCoarseEigenPack: public Module +{ +public: + typedef CoarseEigenPack BasePack; +public: + // constructor + TLoadCoarseEigenPack(const std::string name); + // destructor + virtual ~TLoadCoarseEigenPack(void) = default; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER_NS(LoadCoarseFermionEigenPack, + ARG(TLoadCoarseEigenPack>), MIO); + +/****************************************************************************** + * TLoadCoarseEigenPack implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TLoadCoarseEigenPack::TLoadCoarseEigenPack(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TLoadCoarseEigenPack::getInput(void) +{ + std::vector in; + + return in; +} + +template +std::vector TLoadCoarseEigenPack::getOutput(void) +{ + std::vector out = {getName()}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TLoadCoarseEigenPack::setup(void) +{ + env().createGrid(par().Ls); + env().createCoarseGrid(par().blockSize, par().Ls); + envCreateDerived(BasePack, Pack, getName(), par().Ls, par().sizeFine, + par().sizeCoarse, env().getRbGrid(par().Ls), + env().getCoarseGrid(par().blockSize, par().Ls)); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TLoadCoarseEigenPack::execute(void) +{ + auto &epack = envGetDerived(BasePack, Pack, getName()); + + epack.read(par().filestem, vm().getTrajectory()); +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MIO_LoadCoarseEigenPack_hpp_ diff --git a/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp b/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp new file mode 100644 index 00000000..bcc3f22b --- /dev/null +++ b/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp @@ -0,0 +1,121 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MIO/LoadEigenPack.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ +#ifndef Hadrons_MIO_LoadEigenPack_hpp_ +#define Hadrons_MIO_LoadEigenPack_hpp_ + +#include +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * Load eigen vectors/values package * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MIO) + +class LoadEigenPackPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(LoadEigenPackPar, + std::string, filestem, + unsigned int, size, + unsigned int, Ls); +}; + +template +class TLoadEigenPack: public Module +{ +public: + typedef EigenPack BasePack; +public: + // constructor + TLoadEigenPack(const std::string name); + // destructor + virtual ~TLoadEigenPack(void) = default; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER_NS(LoadFermionEigenPack, TLoadEigenPack>, MIO); + +/****************************************************************************** + * TLoadEigenPack implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TLoadEigenPack::TLoadEigenPack(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TLoadEigenPack::getInput(void) +{ + std::vector in; + + return in; +} + +template +std::vector TLoadEigenPack::getOutput(void) +{ + std::vector out = {getName()}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TLoadEigenPack::setup(void) +{ + env().createGrid(par().Ls); + envCreateDerived(BasePack, Pack, getName(), par().Ls, par().size, + env().getRbGrid(par().Ls)); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TLoadEigenPack::execute(void) +{ + auto &epack = envGetDerived(BasePack, Pack, getName()); + + epack.read(par().filestem, vm().getTrajectory()); +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MIO_LoadEigenPack_hpp_ diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index 4bff910e..4af81537 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -32,6 +32,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include BEGIN_HADRONS_NAMESPACE @@ -44,15 +45,22 @@ class RBPrecCGPar: Serializable { public: GRID_SERIALIZABLE_CLASS_MEMBERS(RBPrecCGPar , - std::string , action, - unsigned int , maxIteration, - double , residual); + std::string , action, + unsigned int, maxIteration, + double , residual, + std::string , eigenPack); }; -template +template class TRBPrecCG: public Module { public: + typedef FermionEigenPack EPack; + typedef CoarseFermionEigenPack CoarseEPack; + typedef DeflatedGuesser FineGuesser; + typedef LocalCoherenceDeflatedGuesser< + typename FImpl::FermionField, + typename CoarseEPack::CoarseField> CoarseGuesser; FGS_TYPE_ALIASES(FImpl,); public: // constructor @@ -70,37 +78,39 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(RBPrecCG, TRBPrecCG, MSolver); -MODULE_REGISTER_NS(ZRBPrecCG, TRBPrecCG, MSolver); +MODULE_REGISTER_NS(RBPrecCG, + ARG(TRBPrecCG), MSolver); +MODULE_REGISTER_NS(ZRBPrecCG, + ARG(TRBPrecCG), MSolver); /****************************************************************************** * TRBPrecCG template implementation * ******************************************************************************/ // constructor ///////////////////////////////////////////////////////////////// -template -TRBPrecCG::TRBPrecCG(const std::string name) +template +TRBPrecCG::TRBPrecCG(const std::string name) : Module(name) {} // dependencies/products /////////////////////////////////////////////////////// -template -std::vector TRBPrecCG::getInput(void) +template +std::vector TRBPrecCG::getInput(void) { std::vector in = {}; return in; } -template -std::vector TRBPrecCG::getReference(void) +template +std::vector TRBPrecCG::getReference(void) { std::vector ref = {par().action}; return ref; } -template -std::vector TRBPrecCG::getOutput(void) +template +std::vector TRBPrecCG::getOutput(void) { std::vector out = {getName()}; @@ -108,8 +118,8 @@ std::vector TRBPrecCG::getOutput(void) } // setup /////////////////////////////////////////////////////////////////////// -template -void TRBPrecCG::setup(void) +template +void TRBPrecCG::setup(void) { if (par().maxIteration == 0) { @@ -121,23 +131,49 @@ void TRBPrecCG::setup(void) << par().residual << ", maximum iteration " << par().maxIteration << std::endl; - auto Ls = env().getObjectLs(par().action); - auto &mat = envGet(FMat, par().action); - auto solver = [&mat, this](FermionField &sol, const FermionField &source) + auto Ls = env().getObjectLs(par().action); + auto &mat = envGet(FMat, par().action); + std::string guesserName = getName() + "_guesser"; + + if (par().eigenPack.empty()) + { + env().template createDerivedObject, ZeroGuesser> + (guesserName, Environment::Storage::object, Ls); + } + else + { + try + { + auto &epack = envGetDerived(EPack, CoarseEPack, par().eigenPack); + + envCreateDerived(Guesser, CoarseGuesser, + guesserName, Ls, epack.evec, epack.evecCoarse, + epack.evalCoarse); + } + catch (Exceptions::Definition &e) + { + auto &epack = envGet(EPack, par().eigenPack); + + envCreateDerived(Guesser, FineGuesser, + guesserName, Ls, epack.evec, epack.eval); + } + } + auto &guesser = envGet(Guesser, guesserName); + auto solver = [&mat, &guesser, this](FermionField &sol, const FermionField &source) { ConjugateGradient cg(par().residual, par().maxIteration); HADRONS_DEFAULT_SCHUR_SOLVE schurSolver(cg); - schurSolver(mat, source, sol); + schurSolver(mat, source, sol, guesser); }; envCreate(SolverFn, getName(), Ls, solver); } // execution /////////////////////////////////////////////////////////////////// -template -void TRBPrecCG::execute(void) +template +void TRBPrecCG::execute(void) {} END_MODULE_NAMESPACE diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index ba963276..2b7f9620 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -632,12 +632,14 @@ void VirtualMachine::executeProgram(const Program &p) const freeProg = makeGarbageSchedule(p); for (unsigned int i = 0; i < freeProg.size(); ++i) { - LOG(Debug) << std::setw(4) << i + 1 << ": ["; + std::string msg = ""; + for (auto &a: freeProg[i]) { - std::cout << env().getObjectName(a) << " "; + msg += env().getObjectName(a) + " "; } - std::cout << "]" << std::endl; + msg += "]"; + LOG(Debug) << std::setw(4) << i + 1 << ": [" << msg << std::endl; } // program execution diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index c0be8aef..5932cc89 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -53,6 +53,8 @@ modules_hpp =\ Modules/MScalarSUN/Utils.hpp \ Modules/MScalarSUN/TransProj.hpp \ Modules/MScalarSUN/TrKinetic.hpp \ + Modules/MIO/LoadEigenPack.hpp \ Modules/MIO/LoadNersc.hpp \ + Modules/MIO/LoadCoarseEigenPack.hpp \ Modules/MIO/LoadBinary.hpp diff --git a/lib/algorithms/iterative/Deflation.h b/lib/algorithms/iterative/Deflation.h index b2239c55..316afe90 100644 --- a/lib/algorithms/iterative/Deflation.h +++ b/lib/algorithms/iterative/Deflation.h @@ -30,22 +30,31 @@ Author: Peter Boyle namespace Grid { -struct ZeroGuesser { +template +class Guesser { public: - template - void operator()(const Field &src,Field &guess) { guess = Zero(); }; + Guesser(void) = default; + virtual ~Guesser(void) = default; + virtual void operator()(const Field &src, Field &guess) = 0; }; -struct SourceGuesser { + +template +class ZeroGuesser: public Guesser { public: - template - void operator()(const Field &src,Field &guess) { guess = src; }; + virtual void operator()(const Field &src, Field &guess) { guess = zero; }; +}; + +template +class SourceGuesser: public Guesser { +public: + virtual void operator()(const Field &src, Field &guess) { guess = src; }; }; //////////////////////////////// // Fine grid deflation //////////////////////////////// template -struct DeflatedGuesser { +class DeflatedGuesser: public Guesser { private: const std::vector &evec; const std::vector &eval; @@ -54,7 +63,7 @@ public: DeflatedGuesser(const std::vector & _evec,const std::vector & _eval) : evec(_evec), eval(_eval) {}; - void operator()(const Field &src,Field &guess) { + virtual void operator()(const Field &src,Field &guess) { guess = zero; assert(evec.size()==eval.size()); auto N = evec.size(); @@ -66,7 +75,7 @@ public: }; template -class LocalCoherenceDeflatedGuesser { +class LocalCoherenceDeflatedGuesser: public Guesser { private: const std::vector &subspace; const std::vector &evec_coarse; diff --git a/lib/algorithms/iterative/SchurRedBlack.h b/lib/algorithms/iterative/SchurRedBlack.h index fac2030f..091330b2 100644 --- a/lib/algorithms/iterative/SchurRedBlack.h +++ b/lib/algorithms/iterative/SchurRedBlack.h @@ -108,7 +108,7 @@ namespace Grid { template void operator() (Matrix & _Matrix,const Field &in, Field &out){ - ZeroGuesser guess; + ZeroGuesser guess; (*this)(_Matrix,in,out,guess); } template @@ -195,7 +195,7 @@ namespace Grid { }; template void operator() (Matrix & _Matrix,const Field &in, Field &out){ - ZeroGuesser guess; + ZeroGuesser guess; (*this)(_Matrix,in,out,guess); } template @@ -280,7 +280,7 @@ namespace Grid { template void operator() (Matrix & _Matrix,const Field &in, Field &out){ - ZeroGuesser guess; + ZeroGuesser guess; (*this)(_Matrix,in,out,guess); } template @@ -365,7 +365,7 @@ namespace Grid { template void operator() (Matrix & _Matrix,const Field &in, Field &out){ - ZeroGuesser guess; + ZeroGuesser guess; (*this)(_Matrix,in,out,guess); } template diff --git a/lib/serialisation/BaseIO.h b/lib/serialisation/BaseIO.h index 298bff87..bc178e0d 100644 --- a/lib/serialisation/BaseIO.h +++ b/lib/serialisation/BaseIO.h @@ -232,7 +232,7 @@ namespace Grid { { is >> std::boolalpha >> output; } - catch(std::istringstream::failure &e) + catch(std::ios_base::failure &e) { std::cerr << "numerical conversion failure on '" << s << "' "; std::cerr << "(typeid: " << typeid(U).name() << ")" << std::endl; From cbc73a3fd176dd3b63e7bfafaf7a8dc35e7f27af Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 19 Mar 2018 13:11:38 +0000 Subject: [PATCH 107/267] Hadrons: CG guesser fix --- extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 27 ++++++++++----------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index 4af81537..8d1b0fc6 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -55,13 +55,14 @@ template class TRBPrecCG: public Module { public: + FGS_TYPE_ALIASES(FImpl,); typedef FermionEigenPack EPack; typedef CoarseFermionEigenPack CoarseEPack; + typedef std::shared_ptr> GuesserPt; typedef DeflatedGuesser FineGuesser; typedef LocalCoherenceDeflatedGuesser< typename FImpl::FermionField, typename CoarseEPack::CoarseField> CoarseGuesser; - FGS_TYPE_ALIASES(FImpl,); public: // constructor TRBPrecCG(const std::string name); @@ -131,41 +132,39 @@ void TRBPrecCG::setup(void) << par().residual << ", maximum iteration " << par().maxIteration << std::endl; - auto Ls = env().getObjectLs(par().action); - auto &mat = envGet(FMat, par().action); + auto Ls = env().getObjectLs(par().action); + auto &mat = envGet(FMat, par().action); std::string guesserName = getName() + "_guesser"; + GuesserPt guesser{nullptr}; if (par().eigenPack.empty()) { - env().template createDerivedObject, ZeroGuesser> - (guesserName, Environment::Storage::object, Ls); + guesser.reset(new ZeroGuesser()); } else { try { auto &epack = envGetDerived(EPack, CoarseEPack, par().eigenPack); - - envCreateDerived(Guesser, CoarseGuesser, - guesserName, Ls, epack.evec, epack.evecCoarse, - epack.evalCoarse); + + guesser.reset(new CoarseGuesser(epack.evec, epack.evecCoarse, + epack.evalCoarse)); } catch (Exceptions::Definition &e) { auto &epack = envGet(EPack, par().eigenPack); - envCreateDerived(Guesser, FineGuesser, - guesserName, Ls, epack.evec, epack.eval); + guesser.reset(new FineGuesser(epack.evec, epack.eval)); } } - auto &guesser = envGet(Guesser, guesserName); - auto solver = [&mat, &guesser, this](FermionField &sol, const FermionField &source) + auto solver = [&mat, guesser, this](FermionField &sol, + const FermionField &source) { ConjugateGradient cg(par().residual, par().maxIteration); HADRONS_DEFAULT_SCHUR_SOLVE schurSolver(cg); - schurSolver(mat, source, sol, guesser); + schurSolver(mat, source, sol, *guesser); }; envCreate(SolverFn, getName(), Ls, solver); } From 62702dbcb805543ed1beb66fed073f5cc2a79e85 Mon Sep 17 00:00:00 2001 From: Guido Cossu Date: Mon, 19 Mar 2018 17:56:53 +0000 Subject: [PATCH 108/267] Fixing bug in the Point sink causing NaNs --- extras/Hadrons/Modules/MSink/Point.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/Hadrons/Modules/MSink/Point.hpp b/extras/Hadrons/Modules/MSink/Point.hpp index c5f6eff0..ee824c03 100644 --- a/extras/Hadrons/Modules/MSink/Point.hpp +++ b/extras/Hadrons/Modules/MSink/Point.hpp @@ -128,7 +128,7 @@ void TPoint::execute(void) envGetTmp(LatticeComplex, coor); p = strToVec(par().mom); ph = zero; - for(unsigned int mu = 0; mu < env().getNd(); mu++) + for(unsigned int mu = 0; mu < p.size(); mu++) { LatticeCoordinate(coor, mu); ph = ph + (p[mu]/env().getGrid()->_fdimensions[mu])*coor; From 8a0cf0194f4ea42d104690b69cc43a1982ebeae0 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 26 Mar 2018 19:16:16 +0100 Subject: [PATCH 109/267] Lattice serialisation, just HDF5 for the moment --- lib/lattice/Lattice_transfer.h | 93 +++++++++++++++++++++++++++++++++ lib/serialisation/Hdf5IO.h | 64 ++++++++++++++++++++++- lib/serialisation/VectorUtils.h | 44 +++++++++++++++- 3 files changed, 199 insertions(+), 2 deletions(-) diff --git a/lib/lattice/Lattice_transfer.h b/lib/lattice/Lattice_transfer.h index 44f0337d..f988f310 100644 --- a/lib/lattice/Lattice_transfer.h +++ b/lib/lattice/Lattice_transfer.h @@ -599,6 +599,51 @@ unvectorizeToLexOrdArray(std::vector &out, const Lattice &in) extract1(in_vobj, out_ptrs, 0); } } + +template +typename std::enable_if::value && !isSIMDvectorized::value, void>::type +unvectorizeToRevLexOrdArray(std::vector &out, const Lattice &in) +{ + + typedef typename vobj::vector_type vtype; + + GridBase* in_grid = in._grid; + out.resize(in_grid->lSites()); + + int ndim = in_grid->Nd(); + int in_nsimd = vtype::Nsimd(); + + std::vector > in_icoor(in_nsimd); + + for(int lane=0; lane < in_nsimd; lane++){ + in_icoor[lane].resize(ndim); + in_grid->iCoorFromIindex(in_icoor[lane], lane); + } + + parallel_for(int in_oidx = 0; in_oidx < in_grid->oSites(); in_oidx++){ //loop over outer index + //Assemble vector of pointers to output elements + std::vector out_ptrs(in_nsimd); + + std::vector in_ocoor(ndim); + in_grid->oCoorFromOindex(in_ocoor, in_oidx); + + std::vector lcoor(in_grid->Nd()); + + for(int lane=0; lane < in_nsimd; lane++){ + for(int mu=0;mu_rdimensions[mu]*in_icoor[lane][mu]; + + int lex; + Lexicographic::IndexFromCoorReversed(lcoor, lex, in_grid->_ldimensions); + out_ptrs[lane] = &out[lex]; + } + + //Unpack into those ptrs + const vobj & in_vobj = in._odata[in_oidx]; + extract1(in_vobj, out_ptrs, 0); + } +} + //Copy SIMD-vectorized lattice to array of scalar objects in lexicographic order template typename std::enable_if::value @@ -648,6 +693,54 @@ vectorizeFromLexOrdArray( std::vector &in, Lattice &out) } } +template +typename std::enable_if::value + && !isSIMDvectorized::value, void>::type +vectorizeFromRevLexOrdArray( std::vector &in, Lattice &out) +{ + + typedef typename vobj::vector_type vtype; + + GridBase* grid = out._grid; + assert(in.size()==grid->lSites()); + + int ndim = grid->Nd(); + int nsimd = vtype::Nsimd(); + + std::vector > icoor(nsimd); + + for(int lane=0; lane < nsimd; lane++){ + icoor[lane].resize(ndim); + grid->iCoorFromIindex(icoor[lane],lane); + } + + parallel_for(uint64_t oidx = 0; oidx < grid->oSites(); oidx++){ //loop over outer index + //Assemble vector of pointers to output elements + std::vector ptrs(nsimd); + + std::vector ocoor(ndim); + grid->oCoorFromOindex(ocoor, oidx); + + std::vector lcoor(grid->Nd()); + + for(int lane=0; lane < nsimd; lane++){ + + for(int mu=0;mu_rdimensions[mu]*icoor[lane][mu]; + } + + int lex; + Lexicographic::IndexFromCoorReversed(lcoor, lex, grid->_ldimensions); + ptrs[lane] = &in[lex]; + } + + //pack from those ptrs + vobj vecobj; + merge1(vecobj, ptrs, 0); + out._odata[oidx] = vecobj; + } +} + //Convert a Lattice from one precision to another template void precisionChange(Lattice &out, const Lattice &in){ diff --git a/lib/serialisation/Hdf5IO.h b/lib/serialisation/Hdf5IO.h index 12625ab8..940bb11a 100644 --- a/lib/serialisation/Hdf5IO.h +++ b/lib/serialisation/Hdf5IO.h @@ -22,6 +22,8 @@ namespace Grid { + template class Lattice; + class Hdf5Writer: public Writer { public: @@ -33,6 +35,8 @@ namespace Grid template void writeDefault(const std::string &s, const U &x); template + void writeDefault(const std::string &s, const Lattice &field); + template typename std::enable_if>::is_number, void>::type writeDefault(const std::string &s, const std::vector &x); template @@ -60,6 +64,8 @@ namespace Grid template void readDefault(const std::string &s, U &output); template + void readDefault(const std::string &s, Lattice &field); + template typename std::enable_if>::is_number, void>::type readDefault(const std::string &s, std::vector &x); template @@ -98,7 +104,40 @@ namespace Grid template <> void Hdf5Writer::writeDefault(const std::string &s, const std::string &x); - + + + template + void Hdf5Writer::writeDefault(const std::string &s, const Lattice &field) + { + // alias scalar types + typedef std::vector ScalarLattice; + typedef typename U::scalar_type ScalarType; + + ScalarLattice scalField; + + unvectorizeToRevLexOrdArray(scalField, field); + + std::vector dim; + std::vector tDim; + + tensorDim(tDim, scalField[0]); + for (auto &d: field._grid->GlobalDimensions()) + { + dim.push_back(d); + } + for (auto &d: tDim) + { + dim.push_back(d); + } + + // write to file + H5NS::DataSpace dataSpace(dim.size(), dim.data()); + H5NS::DataSet dataSet; + + dataSet = group_.createDataSet(s, Hdf5Type::type(), dataSpace); + dataSet.write(scalField.data(), Hdf5Type::type()); + } + template typename std::enable_if>::is_number, void>::type Hdf5Writer::writeDefault(const std::string &s, const std::vector &x) @@ -169,6 +208,29 @@ namespace Grid template <> void Hdf5Reader::readDefault(const std::string &s, std::string &x); + template + void Hdf5Reader::readDefault(const std::string &s, Lattice &field) + { + // alias scalar types + typedef std::vector ScalarLattice; + typedef typename U::scalar_type ScalarType; + + ScalarLattice scalField; + H5NS::DataSet dataSet; + std::vector dim; + hsize_t size = 1; + + dataSet = group_.openDataSet(s); + for (auto &d: field._grid->GlobalDimensions()) + { + dim.push_back(d); + size *= d; + } + scalField.resize(size); + dataSet.read(scalField.data(), Hdf5Type::type()); + vectorizeFromRevLexOrdArray(scalField, field); + } + template typename std::enable_if>::is_number, void>::type Hdf5Reader::readDefault(const std::string &s, std::vector &x) diff --git a/lib/serialisation/VectorUtils.h b/lib/serialisation/VectorUtils.h index 6df9416d..e1095488 100644 --- a/lib/serialisation/VectorUtils.h +++ b/lib/serialisation/VectorUtils.h @@ -2,7 +2,7 @@ #define GRID_SERIALISATION_VECTORUTILS_H #include -#include +#include namespace Grid { // Pair IO utilities ///////////////////////////////////////////////////////// @@ -78,6 +78,48 @@ namespace Grid { typedef typename std::vector::type>> type; }; + template + void tensorDim(std::vector &dim, const T &t, const bool wipe = true) + { + if (wipe) + { + dim.clear(); + } + } + + template + void tensorDim(std::vector &dim, const iScalar &t, const bool wipe = true) + { + if (wipe) + { + dim.clear(); + } + tensorDim(dim, t._internal, false); + } + + template + void tensorDim(std::vector &dim, const iVector &t, const bool wipe = true) + { + if (wipe) + { + dim.clear(); + } + dim.push_back(N); + tensorDim(dim, t._internal[0], false); + } + + template + void tensorDim(std::vector &dim, const iMatrix &t, const bool wipe = true) + { + if (wipe) + { + dim.clear(); + } + dim.push_back(N); + dim.push_back(N); + tensorDim(dim, t._internal[0][0], false); + } + template typename TensorToVec::type tensorToVec(const T &t) { From 5ec903044da9fb5738e3be0c4aca41b6400dab31 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 27 Mar 2018 17:11:50 +0100 Subject: [PATCH 110/267] Serial IO code cleaning for std:: convention --- lib/serialisation/BinaryIO.cc | 17 ++++++++--------- lib/serialisation/JSON_IO.cc | 13 ++++++------- lib/serialisation/TextIO.cc | 15 +++++++-------- lib/serialisation/XmlIO.cc | 21 ++++++++++----------- 4 files changed, 31 insertions(+), 35 deletions(-) diff --git a/lib/serialisation/BinaryIO.cc b/lib/serialisation/BinaryIO.cc index 7133adc0..a4d26b69 100644 --- a/lib/serialisation/BinaryIO.cc +++ b/lib/serialisation/BinaryIO.cc @@ -29,15 +29,14 @@ Author: paboyle #include using namespace Grid; -using namespace std; // Writer implementation /////////////////////////////////////////////////////// -BinaryWriter::BinaryWriter(const string &fileName) -: file_(fileName, ios::binary|ios::out) +BinaryWriter::BinaryWriter(const std::string &fileName) +: file_(fileName, std::ios::binary|std::ios::out) {} template <> -void BinaryWriter::writeDefault(const string &s, const string &x) +void BinaryWriter::writeDefault(const std::string &s, const std::string &x) { uint64_t sz = x.size(); @@ -48,20 +47,20 @@ void BinaryWriter::writeDefault(const string &s, const string &x) } } -void BinaryWriter::writeDefault(const string &s, const char *x) +void BinaryWriter::writeDefault(const std::string &s, const char *x) { - string sx(x); + std::string sx(x); writeDefault(s, sx); } // Reader implementation /////////////////////////////////////////////////////// -BinaryReader::BinaryReader(const string &fileName) -: file_(fileName, ios::binary|ios::in) +BinaryReader::BinaryReader(const std::string &fileName) +: file_(fileName, std::ios::binary|std::ios::in) {} template <> -void BinaryReader::readDefault(const string &s, string &output) +void BinaryReader::readDefault(const std::string &s, std::string &output) { uint64_t sz; diff --git a/lib/serialisation/JSON_IO.cc b/lib/serialisation/JSON_IO.cc index 6a01aa84..98edc375 100644 --- a/lib/serialisation/JSON_IO.cc +++ b/lib/serialisation/JSON_IO.cc @@ -28,11 +28,10 @@ #include using namespace Grid; -using namespace std; // Writer implementation /////////////////////////////////////////////////////// -JSONWriter::JSONWriter(const string &fileName) -: fileName_(fileName), ss_("{ ", ostringstream::ate){} +JSONWriter::JSONWriter(const std::string &fileName) +: fileName_(fileName), ss_("{ ", std::ostringstream::ate){} JSONWriter::~JSONWriter(void) { @@ -46,7 +45,7 @@ JSONWriter::~JSONWriter(void) os << std::setw(2) << json::parse(ss_.str()) << std::endl; } -void JSONWriter::push(const string &s) +void JSONWriter::push(const std::string &s) { // adding a nested object if (s.size()) @@ -90,7 +89,7 @@ namespace Grid // Reader implementation /////////////////////////////////////////////////////// -JSONReader::JSONReader(const string &fileName) +JSONReader::JSONReader(const std::string &fileName) : fileName_(fileName) { std::ifstream file(fileName_); @@ -102,7 +101,7 @@ JSONReader::JSONReader(const string &fileName) jcur_ = jobject_; } -bool JSONReader::push(const string &s) +bool JSONReader::push(const std::string &s) { if (s.size()){ jold_.push_back(jcur_); @@ -159,7 +158,7 @@ bool JSONReader::nextElement(const std::string &s) } template <> -void JSONReader::readDefault(const string &s, string &output) +void JSONReader::readDefault(const std::string &s, std::string &output) { //cout << "JSONReader::readDefault(string) : " << s<< " " << jcur_ << endl; if (s.size()){ diff --git a/lib/serialisation/TextIO.cc b/lib/serialisation/TextIO.cc index 5e27dfbc..77c45fd9 100644 --- a/lib/serialisation/TextIO.cc +++ b/lib/serialisation/TextIO.cc @@ -30,17 +30,16 @@ #include using namespace Grid; -using namespace std; #define GRID_TEXT_INDENT 2 //number of spaces for indentation of levels // Writer implementation /////////////////////////////////////////////////////// -TextWriter::TextWriter(const string &fileName) -: file_(fileName, ios::out) +TextWriter::TextWriter(const std::string &fileName) +: file_(fileName, std::ios::out) {} -void TextWriter::push(const string &s) +void TextWriter::push(const std::string &s) { level_++; }; @@ -58,16 +57,16 @@ void TextWriter::indent(void) }; // Reader implementation /////////////////////////////////////////////////////// -TextReader::TextReader(const string &fileName) +TextReader::TextReader(const std::string &fileName) { - file_.open(fileName, ios::in); + file_.open(fileName, std::ios::in); if (!file_.is_open()) { std::cout << GridLogMessage << "TextReader: Error opening file " << fileName << std::endl; exit(1);// write better error handling } } -bool TextReader::push(const string &s) +bool TextReader::push(const std::string &s) { level_++; return true; @@ -91,7 +90,7 @@ void TextReader::checkIndent(void) } if (!check) { - cerr << "TextReader: mismatch on level " << level_ << std::endl; + std::cerr << "TextReader: mismatch on level " << level_ << std::endl; exit(1); } } diff --git a/lib/serialisation/XmlIO.cc b/lib/serialisation/XmlIO.cc index 8ac7422c..1828d7fc 100644 --- a/lib/serialisation/XmlIO.cc +++ b/lib/serialisation/XmlIO.cc @@ -29,10 +29,9 @@ Author: paboyle #include using namespace Grid; -using namespace std; // Writer implementation /////////////////////////////////////////////////////// -XmlWriter::XmlWriter(const string &fileName, string toplev) : fileName_(fileName) +XmlWriter::XmlWriter(const std::string &fileName, std::string toplev) : fileName_(fileName) { if ( toplev == std::string("") ) { node_=doc_; @@ -49,7 +48,7 @@ XmlWriter::~XmlWriter(void) } } -void XmlWriter::push(const string &s) +void XmlWriter::push(const std::string &s) { node_ = node_.append_child(s.c_str()); } @@ -65,13 +64,13 @@ std::string XmlWriter::XmlString(void) return oss.str(); } -XmlReader::XmlReader(const char *xmlstring,string toplev) : fileName_("") +XmlReader::XmlReader(const char *xmlstring,std::string toplev) : fileName_("") { pugi::xml_parse_result result; result = doc_.load_string(xmlstring); if ( !result ) { - cerr << "XML error description (from char *): " << result.description() << "\nXML\n"<< xmlstring << "\n"; - cerr << "XML error offset (from char *) " << result.offset << "\nXML\n"<< xmlstring <<"\n"; + std::cerr << "XML error description (from char *): " << result.description() << "\nXML\n"<< xmlstring << "\n"; + std::cerr << "XML error offset (from char *) " << result.offset << "\nXML\n"<< xmlstring <<"\n"; abort(); } if ( toplev == std::string("") ) { @@ -82,13 +81,13 @@ XmlReader::XmlReader(const char *xmlstring,string toplev) : fileName_("") } // Reader implementation /////////////////////////////////////////////////////// -XmlReader::XmlReader(const string &fileName,string toplev) : fileName_(fileName) +XmlReader::XmlReader(const std::string &fileName,std::string toplev) : fileName_(fileName) { pugi::xml_parse_result result; result = doc_.load_file(fileName_.c_str()); if ( !result ) { - cerr << "XML error description: " << result.description() <<" "<< fileName_ <<"\n"; - cerr << "XML error offset : " << result.offset <<" "<< fileName_ <<"\n"; + std::cerr << "XML error description: " << result.description() <<" "<< fileName_ <<"\n"; + std::cerr << "XML error offset : " << result.offset <<" "<< fileName_ <<"\n"; abort(); } if ( toplev == std::string("") ) { @@ -98,7 +97,7 @@ XmlReader::XmlReader(const string &fileName,string toplev) : fileName_(fileName) } } -bool XmlReader::push(const string &s) +bool XmlReader::push(const std::string &s) { if (node_.child(s.c_str())) { @@ -133,7 +132,7 @@ bool XmlReader::nextElement(const std::string &s) } template <> -void XmlReader::readDefault(const string &s, string &output) +void XmlReader::readDefault(const std::string &s, std::string &output) { if (node_.child(s.c_str())) { From a4d8512fb8088f005e5424a8917e12a66c321e19 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 27 Mar 2018 17:55:42 +0100 Subject: [PATCH 111/267] Revert "Lattice serialisation, just HDF5 for the moment" This reverts commit 8a0cf0194f4ea42d104690b69cc43a1982ebeae0. --- lib/lattice/Lattice_transfer.h | 93 --------------------------------- lib/serialisation/Hdf5IO.h | 64 +---------------------- lib/serialisation/VectorUtils.h | 44 +--------------- 3 files changed, 2 insertions(+), 199 deletions(-) diff --git a/lib/lattice/Lattice_transfer.h b/lib/lattice/Lattice_transfer.h index f988f310..44f0337d 100644 --- a/lib/lattice/Lattice_transfer.h +++ b/lib/lattice/Lattice_transfer.h @@ -599,51 +599,6 @@ unvectorizeToLexOrdArray(std::vector &out, const Lattice &in) extract1(in_vobj, out_ptrs, 0); } } - -template -typename std::enable_if::value && !isSIMDvectorized::value, void>::type -unvectorizeToRevLexOrdArray(std::vector &out, const Lattice &in) -{ - - typedef typename vobj::vector_type vtype; - - GridBase* in_grid = in._grid; - out.resize(in_grid->lSites()); - - int ndim = in_grid->Nd(); - int in_nsimd = vtype::Nsimd(); - - std::vector > in_icoor(in_nsimd); - - for(int lane=0; lane < in_nsimd; lane++){ - in_icoor[lane].resize(ndim); - in_grid->iCoorFromIindex(in_icoor[lane], lane); - } - - parallel_for(int in_oidx = 0; in_oidx < in_grid->oSites(); in_oidx++){ //loop over outer index - //Assemble vector of pointers to output elements - std::vector out_ptrs(in_nsimd); - - std::vector in_ocoor(ndim); - in_grid->oCoorFromOindex(in_ocoor, in_oidx); - - std::vector lcoor(in_grid->Nd()); - - for(int lane=0; lane < in_nsimd; lane++){ - for(int mu=0;mu_rdimensions[mu]*in_icoor[lane][mu]; - - int lex; - Lexicographic::IndexFromCoorReversed(lcoor, lex, in_grid->_ldimensions); - out_ptrs[lane] = &out[lex]; - } - - //Unpack into those ptrs - const vobj & in_vobj = in._odata[in_oidx]; - extract1(in_vobj, out_ptrs, 0); - } -} - //Copy SIMD-vectorized lattice to array of scalar objects in lexicographic order template typename std::enable_if::value @@ -693,54 +648,6 @@ vectorizeFromLexOrdArray( std::vector &in, Lattice &out) } } -template -typename std::enable_if::value - && !isSIMDvectorized::value, void>::type -vectorizeFromRevLexOrdArray( std::vector &in, Lattice &out) -{ - - typedef typename vobj::vector_type vtype; - - GridBase* grid = out._grid; - assert(in.size()==grid->lSites()); - - int ndim = grid->Nd(); - int nsimd = vtype::Nsimd(); - - std::vector > icoor(nsimd); - - for(int lane=0; lane < nsimd; lane++){ - icoor[lane].resize(ndim); - grid->iCoorFromIindex(icoor[lane],lane); - } - - parallel_for(uint64_t oidx = 0; oidx < grid->oSites(); oidx++){ //loop over outer index - //Assemble vector of pointers to output elements - std::vector ptrs(nsimd); - - std::vector ocoor(ndim); - grid->oCoorFromOindex(ocoor, oidx); - - std::vector lcoor(grid->Nd()); - - for(int lane=0; lane < nsimd; lane++){ - - for(int mu=0;mu_rdimensions[mu]*icoor[lane][mu]; - } - - int lex; - Lexicographic::IndexFromCoorReversed(lcoor, lex, grid->_ldimensions); - ptrs[lane] = &in[lex]; - } - - //pack from those ptrs - vobj vecobj; - merge1(vecobj, ptrs, 0); - out._odata[oidx] = vecobj; - } -} - //Convert a Lattice from one precision to another template void precisionChange(Lattice &out, const Lattice &in){ diff --git a/lib/serialisation/Hdf5IO.h b/lib/serialisation/Hdf5IO.h index 940bb11a..12625ab8 100644 --- a/lib/serialisation/Hdf5IO.h +++ b/lib/serialisation/Hdf5IO.h @@ -22,8 +22,6 @@ namespace Grid { - template class Lattice; - class Hdf5Writer: public Writer { public: @@ -35,8 +33,6 @@ namespace Grid template void writeDefault(const std::string &s, const U &x); template - void writeDefault(const std::string &s, const Lattice &field); - template typename std::enable_if>::is_number, void>::type writeDefault(const std::string &s, const std::vector &x); template @@ -64,8 +60,6 @@ namespace Grid template void readDefault(const std::string &s, U &output); template - void readDefault(const std::string &s, Lattice &field); - template typename std::enable_if>::is_number, void>::type readDefault(const std::string &s, std::vector &x); template @@ -104,40 +98,7 @@ namespace Grid template <> void Hdf5Writer::writeDefault(const std::string &s, const std::string &x); - - - template - void Hdf5Writer::writeDefault(const std::string &s, const Lattice &field) - { - // alias scalar types - typedef std::vector ScalarLattice; - typedef typename U::scalar_type ScalarType; - - ScalarLattice scalField; - - unvectorizeToRevLexOrdArray(scalField, field); - - std::vector dim; - std::vector tDim; - - tensorDim(tDim, scalField[0]); - for (auto &d: field._grid->GlobalDimensions()) - { - dim.push_back(d); - } - for (auto &d: tDim) - { - dim.push_back(d); - } - - // write to file - H5NS::DataSpace dataSpace(dim.size(), dim.data()); - H5NS::DataSet dataSet; - - dataSet = group_.createDataSet(s, Hdf5Type::type(), dataSpace); - dataSet.write(scalField.data(), Hdf5Type::type()); - } - + template typename std::enable_if>::is_number, void>::type Hdf5Writer::writeDefault(const std::string &s, const std::vector &x) @@ -208,29 +169,6 @@ namespace Grid template <> void Hdf5Reader::readDefault(const std::string &s, std::string &x); - template - void Hdf5Reader::readDefault(const std::string &s, Lattice &field) - { - // alias scalar types - typedef std::vector ScalarLattice; - typedef typename U::scalar_type ScalarType; - - ScalarLattice scalField; - H5NS::DataSet dataSet; - std::vector dim; - hsize_t size = 1; - - dataSet = group_.openDataSet(s); - for (auto &d: field._grid->GlobalDimensions()) - { - dim.push_back(d); - size *= d; - } - scalField.resize(size); - dataSet.read(scalField.data(), Hdf5Type::type()); - vectorizeFromRevLexOrdArray(scalField, field); - } - template typename std::enable_if>::is_number, void>::type Hdf5Reader::readDefault(const std::string &s, std::vector &x) diff --git a/lib/serialisation/VectorUtils.h b/lib/serialisation/VectorUtils.h index e1095488..6df9416d 100644 --- a/lib/serialisation/VectorUtils.h +++ b/lib/serialisation/VectorUtils.h @@ -2,7 +2,7 @@ #define GRID_SERIALISATION_VECTORUTILS_H #include -#include +#include namespace Grid { // Pair IO utilities ///////////////////////////////////////////////////////// @@ -78,48 +78,6 @@ namespace Grid { typedef typename std::vector::type>> type; }; - template - void tensorDim(std::vector &dim, const T &t, const bool wipe = true) - { - if (wipe) - { - dim.clear(); - } - } - - template - void tensorDim(std::vector &dim, const iScalar &t, const bool wipe = true) - { - if (wipe) - { - dim.clear(); - } - tensorDim(dim, t._internal, false); - } - - template - void tensorDim(std::vector &dim, const iVector &t, const bool wipe = true) - { - if (wipe) - { - dim.clear(); - } - dim.push_back(N); - tensorDim(dim, t._internal[0], false); - } - - template - void tensorDim(std::vector &dim, const iMatrix &t, const bool wipe = true) - { - if (wipe) - { - dim.clear(); - } - dim.push_back(N); - dim.push_back(N); - tensorDim(dim, t._internal[0][0], false); - } - template typename TensorToVec::type tensorToVec(const T &t) { From 68e6a58f123a6da1f540b156f61e8d5b2f8c61d7 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 3 Apr 2018 17:42:21 +0100 Subject: [PATCH 112/267] Hadrons: several Lanczos fixes and improvements --- extras/Hadrons/EigenPack.hpp | 53 +++++++++++++------ .../Modules/MIO/LoadCoarseEigenPack.hpp | 11 +++- .../Modules/MSolver/LocalCoherenceLanczos.hpp | 15 +++--- .../iterative/LocalCoherenceLanczos.h | 8 +-- 4 files changed, 62 insertions(+), 25 deletions(-) diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index d27e35b9..08811107 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -152,55 +152,78 @@ public: evecCoarse.resize(sizeCoarse, gridCoarse); } - virtual void read(const std::string fileStem, const int traj = -1) + void readFine(const std::string fileStem, const int traj = -1) { std::string evecFineFilename, evalFineFilename; std::string evecCoarseFilename, evalCoarseFilename; this->makeFilenames(evecFineFilename, evalFineFilename, fileStem + "_fine", traj); - this->makeFilenames(evecCoarseFilename, evalCoarseFilename, - fileStem + "_coarse", traj); XmlReader xmlFineReader(evalFineFilename); - XmlReader xmlCoarseReader(evalCoarseFilename); LOG(Message) << "Reading " << this->evec.size() << " fine eigenvectors from '" << evecFineFilename << "'" << std::endl; this->basicRead(this->evec, evecFineFilename, this->evec.size()); - LOG(Message) << "Reading " << evecCoarse.size() << " coarse eigenvectors from '" - << evecCoarseFilename << "'" << std::endl; - this->basicRead(evecCoarse, evecCoarseFilename, evecCoarse.size()); LOG(Message) << "Reading " << this->eval.size() << " fine eigenvalues from '" << evalFineFilename << "'" << std::endl; Grid::read(xmlFineReader, "evals", this->eval); + } + + void readCoarse(const std::string fileStem, const int traj = -1) + { + std::string evecCoarseFilename, evalCoarseFilename; + + this->makeFilenames(evecCoarseFilename, evalCoarseFilename, + fileStem + "_coarse", traj); + XmlReader xmlCoarseReader(evalCoarseFilename); + LOG(Message) << "Reading " << evecCoarse.size() << " coarse eigenvectors from '" + << evecCoarseFilename << "'" << std::endl; + this->basicRead(evecCoarse, evecCoarseFilename, evecCoarse.size()); LOG(Message) << "Reading " << evalCoarse.size() << " coarse eigenvalues from '" << evalCoarseFilename << "'" << std::endl; Grid::read(xmlCoarseReader, "evals", evalCoarse); } - virtual void write(const std::string fileStem, const int traj = -1) + virtual void read(const std::string fileStem, const int traj = -1) + { + readFine(fileStem, traj); + readCoarse(fileStem, traj); + } + + void writeFine(const std::string fileStem, const int traj = -1) { std::string evecFineFilename, evalFineFilename; - std::string evecCoarseFilename, evalCoarseFilename; this->makeFilenames(evecFineFilename, evalFineFilename, fileStem + "_fine", traj); - this->makeFilenames(evecCoarseFilename, evalCoarseFilename, - fileStem + "_coarse", traj); XmlWriter xmlFineWriter(evalFineFilename); - XmlWriter xmlCoarseWriter(evalCoarseFilename); LOG(Message) << "Writing " << this->evec.size() << " fine eigenvectors to '" << evecFineFilename << "'" << std::endl; this->basicWrite(evecFineFilename, this->evec, this->evec.size()); - LOG(Message) << "Writing " << evecCoarse.size() << " coarse eigenvectors to '" - << evecCoarseFilename << "'" << std::endl; - this->basicWrite(evecCoarseFilename, evecCoarse, evecCoarse.size()); LOG(Message) << "Writing " << this->eval.size() << " fine eigenvalues to '" << evalFineFilename << "'" << std::endl; Grid::write(xmlFineWriter, "evals", this->eval); + } + + void writeCoarse(const std::string fileStem, const int traj = -1) + { + std::string evecCoarseFilename, evalCoarseFilename; + + this->makeFilenames(evecCoarseFilename, evalCoarseFilename, + fileStem + "_coarse", traj); + XmlWriter xmlCoarseWriter(evalCoarseFilename); + LOG(Message) << "Writing " << evecCoarse.size() << " coarse eigenvectors to '" + << evecCoarseFilename << "'" << std::endl; + this->basicWrite(evecCoarseFilename, evecCoarse, evecCoarse.size()); LOG(Message) << "Writing " << evalCoarse.size() << " coarse eigenvalues to '" << evalCoarseFilename << "'" << std::endl; Grid::write(xmlCoarseWriter, "evals", evalCoarse); } + + virtual void write(const std::string fileStem, const int traj = -1) + { + writeFine(fileStem, traj); + writeCoarse(fileStem, traj); + } }; template diff --git a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp b/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp index 77c3a7ee..b88844f4 100644 --- a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp +++ b/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp @@ -56,6 +56,9 @@ class TLoadCoarseEigenPack: public Module { public: typedef CoarseEigenPack BasePack; + template + using iImplScalar = iScalar>>; + typedef iImplScalar SiteComplex; public: // constructor TLoadCoarseEigenPack(const std::string name); @@ -114,9 +117,15 @@ void TLoadCoarseEigenPack::setup(void) template void TLoadCoarseEigenPack::execute(void) { - auto &epack = envGetDerived(BasePack, Pack, getName()); + auto cg = env().getCoarseGrid(par().blockSize, par().Ls); + auto &epack = envGetDerived(BasePack, Pack, getName()); + Lattice dummy(cg); epack.read(par().filestem, vm().getTrajectory()); + LOG(Message) << "Block Gramm-Schmidt pass 1"<< std::endl; + blockOrthogonalise(dummy, epack.evec); + LOG(Message) << "Block Gramm-Schmidt pass 2"<< std::endl; + blockOrthogonalise(dummy, epack.evec); } END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index 80717f32..60b897c8 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -125,19 +125,18 @@ void TLocalCoherenceLanczos::setup(void) env().createCoarseGrid(blockSize, Ls); - auto cg = env().getCoarseGrid(blockSize, Ls); - auto cgrb = env().getRbCoarseGrid(blockSize, Ls); - int cNm = (par().doCoarse) ? par().coarseParams.Nm : 0; + auto cg = env().getCoarseGrid(blockSize, Ls); + int cNm = (par().doCoarse) ? par().coarseParams.Nm : 0; LOG(Message) << "Coarse grid: " << cg->GlobalDimensions() << std::endl; envCreateDerived(BasePack, CoarsePack, getName(), Ls, - par().fineParams.Nm, cNm, env().getRbGrid(Ls), cgrb); + par().fineParams.Nm, cNm, env().getRbGrid(Ls), cg); auto &epack = envGetDerived(BasePack, CoarsePack, getName()); envTmp(SchurFMat, "mat", Ls, envGet(FMat, par().action)); envGetTmp(SchurFMat, mat); - envTmp(LCL, "solver", Ls, env().getRbGrid(Ls), cgrb, mat, + envTmp(LCL, "solver", Ls, env().getRbGrid(Ls), cg, mat, Odd, epack.evec, epack.evecCoarse, epack.eval, epack.evalCoarse); } @@ -157,6 +156,10 @@ void TLocalCoherenceLanczos::execute(void) finePar.resid,finePar.MaxIt, finePar.betastp, finePar.MinRes); solver.testFine(finePar.resid*100.0); + if (!par().output.empty()) + { + epack.writeFine(par().output, vm().getTrajectory()); + } if (par().doCoarse) { LOG(Message) << "Orthogonalising" << std::endl; @@ -173,7 +176,7 @@ void TLocalCoherenceLanczos::execute(void) } if (!par().output.empty()) { - epack.write(par().output, vm().getTrajectory()); + epack.writeCoarse(par().output, vm().getTrajectory()); } } diff --git a/lib/algorithms/iterative/LocalCoherenceLanczos.h b/lib/algorithms/iterative/LocalCoherenceLanczos.h index 0c7f4f65..66ded6eb 100644 --- a/lib/algorithms/iterative/LocalCoherenceLanczos.h +++ b/lib/algorithms/iterative/LocalCoherenceLanczos.h @@ -284,9 +284,11 @@ public: }; void Orthogonalise(void ) { - CoarseScalar InnerProd(_CoarseGrid); - blockOrthogonalise(InnerProd,subspace);std::cout << GridLogMessage <<" Gramm-Schmidt pass 1"< static RealD normalise(T& v) From 0260bc77055bcb1531cd2de091f0e6ba9c8a18e2 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 3 Apr 2018 18:55:46 +0100 Subject: [PATCH 113/267] Hadrons: eigen pack writing only for boss node --- extras/Hadrons/EigenPack.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index 08811107..2bd3b622 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -115,7 +115,7 @@ protected: const unsigned int size) { emptyUserRecord record; - ScidacWriter binWriter; + ScidacWriter binWriter(evec[0]._grid->IsBoss()); binWriter.open(filename); for(int k = 0; k < size; ++k) From fb62035aa099e4b37fe388f437db099c92904f85 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 3 Apr 2018 19:49:11 +0100 Subject: [PATCH 114/267] Hadrons: do not create RB coarse grids --- extras/Hadrons/Environment.cc | 28 ---------------------------- extras/Hadrons/Environment.hpp | 4 ---- 2 files changed, 32 deletions(-) diff --git a/extras/Hadrons/Environment.cc b/extras/Hadrons/Environment.cc index 9c9618f7..35bb4648 100644 --- a/extras/Hadrons/Environment.cc +++ b/extras/Hadrons/Environment.cc @@ -106,14 +106,10 @@ void Environment::createCoarseGrid(const std::vector &blockSize, gridCoarse4d_[key4d].reset( SpaceTimeGrid::makeFourDimGrid(coarseDim, GridDefaultSimd(nd, vComplex::Nsimd()), GridDefaultMpi())); - gridCoarseRb4d_[key4d].reset( - SpaceTimeGrid::makeFourDimRedBlackGrid(gridCoarse4d_[key4d].get())); if (Ls > 1) { gridCoarse5d_[key5d].reset( SpaceTimeGrid::makeFiveDimGrid(cLs, gridCoarse4d_[key4d].get())); - gridCoarseRb5d_[key5d].reset( - SpaceTimeGrid::makeFiveDimRedBlackGrid(cLs, gridCoarse4d_[key4d].get())); } } @@ -179,30 +175,6 @@ GridCartesian * Environment::getCoarseGrid( } } -GridRedBlackCartesian * Environment::getRbCoarseGrid( - const std::vector &blockSize, const unsigned int Ls) const -{ - auto key = blockSize; - - try - { - if (Ls == 1) - { - key.resize(getNd()); - return gridCoarseRb4d_.at(key).get(); - } - else - { - key.push_back(Ls); - return gridCoarseRb5d_.at(key).get(); - } - } - catch(std::out_of_range &) - { - HADRON_ERROR(Definition, "no coarse red-black grid with Ls= " + std::to_string(Ls)); - } -} - unsigned int Environment::getNd(void) const { return nd_; diff --git a/extras/Hadrons/Environment.hpp b/extras/Hadrons/Environment.hpp index 0fb81250..f624f36e 100644 --- a/extras/Hadrons/Environment.hpp +++ b/extras/Hadrons/Environment.hpp @@ -92,8 +92,6 @@ public: GridRedBlackCartesian * getRbGrid(const unsigned int Ls = 1) const; GridCartesian * getCoarseGrid(const std::vector &blockSize, const unsigned int Ls = 1) const; - GridRedBlackCartesian * getRbCoarseGrid(const std::vector &blockSize, - const unsigned int Ls = 1) const; std::vector getDim(void) const; int getDim(const unsigned int mu) const; unsigned long int getLocalVolume(void) const; @@ -166,9 +164,7 @@ private: GridRbPt gridRb4d_; std::map gridRb5d_; std::map, GridPt> gridCoarse4d_; - std::map, GridRbPt> gridCoarseRb4d_; std::map, GridPt> gridCoarse5d_; - std::map, GridRbPt> gridCoarseRb5d_; unsigned int nd_; // random number generator RngPt rng4d_; From d3f857b1c9391fe2abc2b2153dc9e0ac7d1d3ff2 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Wed, 4 Apr 2018 16:36:37 +0100 Subject: [PATCH 115/267] Hadrons: proper metadata for eigenpacks --- extras/Hadrons/EigenPack.hpp | 70 +++++++++++++------ extras/Hadrons/Module.hpp | 21 +++++- .../Modules/MSolver/LocalCoherenceLanczos.hpp | 10 +-- lib/parallelIO/IldgIO.h | 2 +- lib/serialisation/MacroMagic.h | 2 +- lib/serialisation/XmlIO.cc | 14 +++- lib/serialisation/XmlIO.h | 4 +- 7 files changed, 89 insertions(+), 34 deletions(-) diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index 2bd3b622..df180e9b 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -44,9 +44,23 @@ class EigenPack { public: typedef F Field; + struct PackRecord: Serializable + { + GRID_SERIALIZABLE_CLASS_MEMBERS(PackRecord, + std::string, operatorPar, + std::string, solverPar); + }; + struct VecRecord: Serializable + { + GRID_SERIALIZABLE_CLASS_MEMBERS(VecRecord, + unsigned int, index, + double, eval); + VecRecord(void): index(0), eval(0.) {} + }; public: std::vector eval; std::vector evec; + PackRecord record; public: EigenPack(void) = default; virtual ~EigenPack(void) = default; @@ -68,10 +82,10 @@ public: makeFilenames(evecFilename, evalFilename, fileStem, traj); XmlReader xmlReader(evalFilename); - basicRead(evec, evecFilename, evec.size()); LOG(Message) << "Reading " << eval.size() << " eigenvalues from '" << evalFilename << "'" << std::endl; Grid::read(xmlReader, "evals", eval); + basicRead(evec, evecFilename, evec.size()); } virtual void write(const std::string fileStem, const int traj = -1) @@ -80,10 +94,10 @@ public: makeFilenames(evecFilename, evalFilename, fileStem, traj); XmlWriter xmlWriter(evalFilename); - basicWrite(evecFilename, evec, evec.size()); LOG(Message) << "Writing " << eval.size() << " eigenvalues to '" << evalFilename << "'" << std::endl; Grid::write(xmlWriter, "evals", eval); + basicWrite(evecFilename, evec, evec.size()); } protected: void makeFilenames(std::string &evecFilename, std::string &evalFilename, @@ -96,31 +110,43 @@ protected: } template - static void basicRead(std::vector &evec, const std::string filename, - const unsigned int size) + void basicRead(std::vector &evec, const std::string filename, + const unsigned int size) { - emptyUserRecord record; ScidacReader binReader; binReader.open(filename); + binReader.readScidacFileRecord(evec[0]._grid, record); for(int k = 0; k < size; ++k) { - binReader.readScidacFieldRecord(evec[k], record); + VecRecord vecRecord; + + binReader.readScidacFieldRecord(evec[k], vecRecord); + if (vecRecord.index != k) + { + HADRON_ERROR(Io, "Eigenvector " + std::to_string(k) + " has a" + + " wrong index (expected " + std::to_string(vecRecord.index) + + ") in file '" + filename + "'"); + } } binReader.close(); } template - static void basicWrite(const std::string filename, std::vector &evec, - const unsigned int size) + void basicWrite(const std::string filename, std::vector &evec, + const unsigned int size) { - emptyUserRecord record; ScidacWriter binWriter(evec[0]._grid->IsBoss()); binWriter.open(filename); + binWriter.writeScidacFileRecord(evec[0]._grid, record); for(int k = 0; k < size; ++k) { - binWriter.writeScidacFieldRecord(evec[k], record); + VecRecord vecRecord; + + vecRecord.index = k; + vecRecord.eval = eval[k]; + binWriter.writeScidacFieldRecord(evec[k], vecRecord); } binWriter.close(); } @@ -160,12 +186,12 @@ public: this->makeFilenames(evecFineFilename, evalFineFilename, fileStem + "_fine", traj); XmlReader xmlFineReader(evalFineFilename); - LOG(Message) << "Reading " << this->evec.size() << " fine eigenvectors from '" - << evecFineFilename << "'" << std::endl; - this->basicRead(this->evec, evecFineFilename, this->evec.size()); LOG(Message) << "Reading " << this->eval.size() << " fine eigenvalues from '" << evalFineFilename << "'" << std::endl; Grid::read(xmlFineReader, "evals", this->eval); + LOG(Message) << "Reading " << this->evec.size() << " fine eigenvectors from '" + << evecFineFilename << "'" << std::endl; + this->basicRead(this->evec, evecFineFilename, this->evec.size()); } void readCoarse(const std::string fileStem, const int traj = -1) @@ -175,12 +201,12 @@ public: this->makeFilenames(evecCoarseFilename, evalCoarseFilename, fileStem + "_coarse", traj); XmlReader xmlCoarseReader(evalCoarseFilename); - LOG(Message) << "Reading " << evecCoarse.size() << " coarse eigenvectors from '" - << evecCoarseFilename << "'" << std::endl; - this->basicRead(evecCoarse, evecCoarseFilename, evecCoarse.size()); LOG(Message) << "Reading " << evalCoarse.size() << " coarse eigenvalues from '" << evalCoarseFilename << "'" << std::endl; Grid::read(xmlCoarseReader, "evals", evalCoarse); + LOG(Message) << "Reading " << evecCoarse.size() << " coarse eigenvectors from '" + << evecCoarseFilename << "'" << std::endl; + this->basicRead(evecCoarse, evecCoarseFilename, evecCoarse.size()); } virtual void read(const std::string fileStem, const int traj = -1) @@ -196,12 +222,12 @@ public: this->makeFilenames(evecFineFilename, evalFineFilename, fileStem + "_fine", traj); XmlWriter xmlFineWriter(evalFineFilename); - LOG(Message) << "Writing " << this->evec.size() << " fine eigenvectors to '" - << evecFineFilename << "'" << std::endl; - this->basicWrite(evecFineFilename, this->evec, this->evec.size()); LOG(Message) << "Writing " << this->eval.size() << " fine eigenvalues to '" << evalFineFilename << "'" << std::endl; Grid::write(xmlFineWriter, "evals", this->eval); + LOG(Message) << "Writing " << this->evec.size() << " fine eigenvectors to '" + << evecFineFilename << "'" << std::endl; + this->basicWrite(evecFineFilename, this->evec, this->evec.size()); } void writeCoarse(const std::string fileStem, const int traj = -1) @@ -211,12 +237,12 @@ public: this->makeFilenames(evecCoarseFilename, evalCoarseFilename, fileStem + "_coarse", traj); XmlWriter xmlCoarseWriter(evalCoarseFilename); - LOG(Message) << "Writing " << evecCoarse.size() << " coarse eigenvectors to '" - << evecCoarseFilename << "'" << std::endl; - this->basicWrite(evecCoarseFilename, evecCoarse, evecCoarse.size()); LOG(Message) << "Writing " << evalCoarse.size() << " coarse eigenvalues to '" << evalCoarseFilename << "'" << std::endl; Grid::write(xmlCoarseWriter, "evals", evalCoarse); + LOG(Message) << "Writing " << evecCoarse.size() << " coarse eigenvectors to '" + << evecCoarseFilename << "'" << std::endl; + this->basicWrite(evecCoarseFilename, evecCoarse, evecCoarse.size()); } virtual void write(const std::string fileStem, const int traj = -1) diff --git a/extras/Hadrons/Module.hpp b/extras/Hadrons/Module.hpp index 85c27472..df13b8cb 100644 --- a/extras/Hadrons/Module.hpp +++ b/extras/Hadrons/Module.hpp @@ -172,6 +172,8 @@ public: // parse parameters virtual void parseParameters(XmlReader &reader, const std::string name) = 0; virtual void saveParameters(XmlWriter &writer, const std::string name) = 0; + // parameter string + virtual std::string parString(void) const = 0; // setup virtual void setup(void) {}; virtual void execute(void) = 0; @@ -200,9 +202,11 @@ public: // parse parameters virtual void parseParameters(XmlReader &reader, const std::string name); virtual void saveParameters(XmlWriter &writer, const std::string name); + // parameter string + virtual std::string parString(void) const; // parameter access - const P & par(void) const; - void setPar(const P &par); + const P & par(void) const; + void setPar(const P &par); private: P par_; }; @@ -225,6 +229,8 @@ public: push(writer, "options"); pop(writer); }; + // parameter string (empty) + virtual std::string parString(void) const {return "";}; }; /****************************************************************************** @@ -247,6 +253,17 @@ void Module

::saveParameters(XmlWriter &writer, const std::string name) write(writer, name, par_); } +template +std::string Module

::parString(void) const +{ + std::string xmlstring; + XmlWriter writer("",""); + + write(writer, par_.SerialisableClassName(), par_); + + return writer.string(); +} + template const P & Module

::par(void) const { diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index 60b897c8..f4333f80 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -148,6 +148,8 @@ void TLocalCoherenceLanczos::execute(void) auto &coarsePar = par().coarseParams; auto &epack = envGetDerived(BasePack, CoarsePack, getName()); + epack.record.operatorPar = vm().getModule(par().action)->parString(); + epack.record.solverPar = parString(); envGetTmp(LCL, solver); LOG(Message) << "Performing fine grid IRL -- Nstop= " << finePar.Nstop << ", Nk= " << finePar.Nk << ", Nm= " @@ -173,10 +175,10 @@ void TLocalCoherenceLanczos::execute(void) coarsePar.MinRes); solver.testCoarse(coarsePar.resid*100.0, par().smoother, par().coarseRelaxTol); - } - if (!par().output.empty()) - { - epack.writeCoarse(par().output, vm().getTrajectory()); + if (!par().output.empty()) + { + epack.writeCoarse(par().output, vm().getTrajectory()); + } } } diff --git a/lib/parallelIO/IldgIO.h b/lib/parallelIO/IldgIO.h index d1a684f3..9a5271d1 100644 --- a/lib/parallelIO/IldgIO.h +++ b/lib/parallelIO/IldgIO.h @@ -328,7 +328,7 @@ class GridLimeWriter : public BinaryIO { XmlWriter WR("",""); write(WR,object_name,object); - xmlstring = WR.XmlString(); + xmlstring = WR.docString(); } // std::cout << "WriteLimeObject" << record_name <\ static inline void write(Writer &WR,const std::string &s, const cname &obj){ \ diff --git a/lib/serialisation/XmlIO.cc b/lib/serialisation/XmlIO.cc index 1828d7fc..b0d463c5 100644 --- a/lib/serialisation/XmlIO.cc +++ b/lib/serialisation/XmlIO.cc @@ -44,7 +44,7 @@ XmlWriter::XmlWriter(const std::string &fileName, std::string toplev) : fileName XmlWriter::~XmlWriter(void) { if ( fileName_ != std::string("") ) { - doc_.save_file(fileName_.c_str(), " "); + doc_.save_file(fileName_.c_str(), indent_.c_str()); } } @@ -57,10 +57,18 @@ void XmlWriter::pop(void) { node_ = node_.parent(); } -std::string XmlWriter::XmlString(void) + +std::string XmlWriter::docString(void) { std::ostringstream oss; - doc_.save(oss); + doc_.save(oss, indent_.c_str()); + return oss.str(); +} + +std::string XmlWriter::string(void) +{ + std::ostringstream oss; + doc_.save(oss, indent_.c_str(), pugi::format_default | pugi::format_no_declaration); return oss.str(); } diff --git a/lib/serialisation/XmlIO.h b/lib/serialisation/XmlIO.h index e37eb8d9..c12ef6e5 100644 --- a/lib/serialisation/XmlIO.h +++ b/lib/serialisation/XmlIO.h @@ -55,8 +55,10 @@ namespace Grid void writeDefault(const std::string &s, const U &x); template void writeDefault(const std::string &s, const std::vector &x); - std::string XmlString(void); + std::string docString(void); + std::string string(void); private: + const std::string indent_{" "}; pugi::xml_document doc_; pugi::xml_node node_; std::string fileName_; From ccfc0a5a890119c9b8a7e6f772c530810e15eb88 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Wed, 4 Apr 2018 17:19:22 +0100 Subject: [PATCH 116/267] Hadrons: better string representation of module parameters --- extras/Hadrons/Module.hpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/extras/Hadrons/Module.hpp b/extras/Hadrons/Module.hpp index df13b8cb..08cf49a2 100644 --- a/extras/Hadrons/Module.hpp +++ b/extras/Hadrons/Module.hpp @@ -256,12 +256,11 @@ void Module

::saveParameters(XmlWriter &writer, const std::string name) template std::string Module

::parString(void) const { - std::string xmlstring; - XmlWriter writer("",""); + std::ostringstream s; - write(writer, par_.SerialisableClassName(), par_); + s << par(); - return writer.string(); + return s.str(); } template From 85c253ed4ac020ee38d3e103778ec114790138e4 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Wed, 4 Apr 2018 17:19:34 +0100 Subject: [PATCH 117/267] Test_serialisation MPI fix --- tests/IO/Test_serialisation.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/IO/Test_serialisation.cc b/tests/IO/Test_serialisation.cc index bca4d01c..15602e93 100644 --- a/tests/IO/Test_serialisation.cc +++ b/tests/IO/Test_serialisation.cc @@ -120,6 +120,8 @@ void tensorConvTestFn(GridSerialRNG &rng, const std::string label) int main(int argc,char **argv) { + Grid_init(&argc,&argv); + GridSerialRNG rng; rng.SeedFixedIntegers(std::vector({42,10,81,9})); From 9ce00f26f9c76d70b33d7f5090bd984270e15589 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Wed, 4 Apr 2018 17:44:56 +0100 Subject: [PATCH 118/267] not special characters in std::vector operator<< --- lib/serialisation/VectorUtils.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/serialisation/VectorUtils.h b/lib/serialisation/VectorUtils.h index 6df9416d..63aeeb2f 100644 --- a/lib/serialisation/VectorUtils.h +++ b/lib/serialisation/VectorUtils.h @@ -367,13 +367,13 @@ namespace Grid { inline std::ostream & operator<<(std::ostream &os, const std::vector &v) { os << "["; - for (auto &x: v) + for (unsigned int i = 0; i < v.size(); ++i) { - os << x << " "; - } - if (v.size() > 0) - { - os << "\b"; + os << v[i]; + if (i < v.size() - 1) + { + os << " "; + } } os << "]"; From 7dcf5c90e3358589c87f73206f989a3e6b287e34 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 6 Apr 2018 13:16:28 +0100 Subject: [PATCH 119/267] Hadrons: eigenpack must be referred by solver when used --- extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index 8d1b0fc6..a47bb67e 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -107,6 +107,11 @@ std::vector TRBPrecCG::getReference(void) { std::vector ref = {par().action}; + if (!par().eigenPack.empty()) + { + ref.push_back(par().eigenPack); + } + return ref; } From 81050535a567353aeada7fd2f9e683aee5d5248b Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 6 Apr 2018 13:48:58 +0100 Subject: [PATCH 120/267] Hadrons: truncate eigenvalues when loading partial eigenpack --- extras/Hadrons/Modules/MIO/LoadEigenPack.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp b/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp index bcc3f22b..5d62b53d 100644 --- a/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp +++ b/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp @@ -112,6 +112,7 @@ void TLoadEigenPack::execute(void) auto &epack = envGetDerived(BasePack, Pack, getName()); epack.read(par().filestem, vm().getTrajectory()); + epack.eval.resize(par().size); } END_MODULE_NAMESPACE From 6b8ffbe73518e4aca665d217bff2e151f50d8e19 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 6 Apr 2018 15:41:31 +0100 Subject: [PATCH 121/267] Hadrons: genetic minimum value type fix --- extras/Hadrons/GeneticScheduler.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extras/Hadrons/GeneticScheduler.hpp b/extras/Hadrons/GeneticScheduler.hpp index d6f9bdee..e8fcd2c2 100644 --- a/extras/Hadrons/GeneticScheduler.hpp +++ b/extras/Hadrons/GeneticScheduler.hpp @@ -57,7 +57,7 @@ public: virtual ~GeneticScheduler(void) = default; // access const Gene & getMinSchedule(void); - int getMinValue(void); + V getMinValue(void); // breed a new generation void nextGeneration(void); // heuristic benchmarks @@ -116,7 +116,7 @@ GeneticScheduler::getMinSchedule(void) } template -int GeneticScheduler::getMinValue(void) +V GeneticScheduler::getMinValue(void) { return population_.begin()->first; } From f117552334824b992a33c7559f9d8868ec3d7860 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 6 Apr 2018 18:38:46 +0100 Subject: [PATCH 122/267] post-merge fix --- lib/serialisation/XmlIO.cc | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/lib/serialisation/XmlIO.cc b/lib/serialisation/XmlIO.cc index f4a5dbdc..bb2b9007 100644 --- a/lib/serialisation/XmlIO.cc +++ b/lib/serialisation/XmlIO.cc @@ -95,22 +95,6 @@ std::string XmlWriter::string(void) return oss.str(); } -XmlReader::XmlReader(const char *xmlstring,std::string toplev) : fileName_("") -{ - pugi::xml_parse_result result; - result = doc_.load_string(xmlstring); - if ( !result ) { - std::cerr << "XML error description (from char *): " << result.description() << "\nXML\n"<< xmlstring << "\n"; - std::cerr << "XML error offset (from char *) " << result.offset << "\nXML\n"<< xmlstring <<"\n"; - abort(); - } - if ( toplev == std::string("") ) { - node_ = doc_; - } else { - node_ = doc_.child(toplev.c_str()); - } -} - // Reader implementation /////////////////////////////////////////////////////// XmlReader::XmlReader(const std::string &s, const bool isBuffer, std::string toplev) From 6b7228b3e649d26e63030fd9458f485804dede3c Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 6 Apr 2018 19:29:53 +0100 Subject: [PATCH 123/267] Hadrons: better metadata for eigenpack --- extras/Hadrons/EigenPack.hpp | 15 +++++++------- extras/Hadrons/Module.hpp | 6 +++--- .../Modules/MSolver/LocalCoherenceLanczos.hpp | 4 ++-- lib/parallelIO/IldgIO.h | 20 +++++++++++-------- 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index df180e9b..a0bdbf04 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -44,11 +44,9 @@ class EigenPack { public: typedef F Field; - struct PackRecord: Serializable + struct PackRecord { - GRID_SERIALIZABLE_CLASS_MEMBERS(PackRecord, - std::string, operatorPar, - std::string, solverPar); + std::string operatorXml, solverXml; }; struct VecRecord: Serializable { @@ -116,7 +114,7 @@ protected: ScidacReader binReader; binReader.open(filename); - binReader.readScidacFileRecord(evec[0]._grid, record); + binReader.skipPastObjectRecord(SCIDAC_FILE_XML); for(int k = 0; k < size; ++k) { VecRecord vecRecord; @@ -136,10 +134,13 @@ protected: void basicWrite(const std::string filename, std::vector &evec, const unsigned int size) { - ScidacWriter binWriter(evec[0]._grid->IsBoss()); + ScidacWriter binWriter(evec[0]._grid->IsBoss()); + XmlWriter xmlWriter("", ""); + xmlWriter.pushXmlString(record.operatorXml); + xmlWriter.pushXmlString(record.solverXml); + binWriter.writeLimeObject(1, 1, xmlWriter, "parameters", SCIDAC_FILE_XML); binWriter.open(filename); - binWriter.writeScidacFileRecord(evec[0]._grid, record); for(int k = 0; k < size; ++k) { VecRecord vecRecord; diff --git a/extras/Hadrons/Module.hpp b/extras/Hadrons/Module.hpp index 08cf49a2..583f1111 100644 --- a/extras/Hadrons/Module.hpp +++ b/extras/Hadrons/Module.hpp @@ -256,11 +256,11 @@ void Module

::saveParameters(XmlWriter &writer, const std::string name) template std::string Module

::parString(void) const { - std::ostringstream s; + XmlWriter writer("", ""); - s << par(); + write(writer, par_.SerialisableClassName(), par_); - return s.str(); + return writer.string(); } template diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index f4333f80..2b7c1049 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -148,8 +148,8 @@ void TLocalCoherenceLanczos::execute(void) auto &coarsePar = par().coarseParams; auto &epack = envGetDerived(BasePack, CoarsePack, getName()); - epack.record.operatorPar = vm().getModule(par().action)->parString(); - epack.record.solverPar = parString(); + epack.record.operatorXml = vm().getModule(par().action)->parString(); + epack.record.solverXml = parString(); envGetTmp(LCL, solver); LOG(Message) << "Performing fine grid IRL -- Nstop= " << finePar.Nstop << ", Nk= " << finePar.Nk << ", Nm= " diff --git a/lib/parallelIO/IldgIO.h b/lib/parallelIO/IldgIO.h index 314c5c33..3eb55d7d 100644 --- a/lib/parallelIO/IldgIO.h +++ b/lib/parallelIO/IldgIO.h @@ -320,16 +320,11 @@ class GridLimeWriter : public BinaryIO //////////////////////////////////////////// // Write a generic serialisable object //////////////////////////////////////////// - template - void writeLimeObject(int MB,int ME,serialisable_object &object,std::string object_name,std::string record_name) + void writeLimeObject(int MB,int ME,XmlWriter &writer,std::string object_name,std::string record_name) { if ( boss_node ) { - std::string xmlstring; - { - XmlWriter WR("",""); - write(WR,object_name,object); - xmlstring = WR.docString(); - } + std::string xmlstring = writer.docString(); + // std::cout << "WriteLimeObject" << record_name < + void writeLimeObject(int MB,int ME,serialisable_object &object,std::string object_name,std::string record_name) + { + XmlWriter WR("",""); + + write(WR,object_name,object); + writeLimeObject(MB, ME, WR, object_name, record_name); + } //////////////////////////////////////////////////// // Write a generic lattice field and csum // This routine is Collectively called by all nodes From 7c9b0dd84246de48ca5ab4e329d5e9ff516828b1 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 6 Apr 2018 19:32:22 +0100 Subject: [PATCH 124/267] Hadrons: top level name for eigenpack metadata --- extras/Hadrons/EigenPack.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index a0bdbf04..71e0c0f1 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -135,7 +135,7 @@ protected: const unsigned int size) { ScidacWriter binWriter(evec[0]._grid->IsBoss()); - XmlWriter xmlWriter("", ""); + XmlWriter xmlWriter("", "eigenPackPar"); xmlWriter.pushXmlString(record.operatorXml); xmlWriter.pushXmlString(record.solverXml); From a16bbecb8a9d53f6ccc55342e8b4db656ddd442b Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 6 Apr 2018 19:38:20 +0100 Subject: [PATCH 125/267] Hadrons: more feedback --- extras/Hadrons/EigenPack.hpp | 2 ++ extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index 71e0c0f1..a76d02f7 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -119,6 +119,7 @@ protected: { VecRecord vecRecord; + LOG(Message) << "Reading eigenvector " << k << std::endl; binReader.readScidacFieldRecord(evec[k], vecRecord); if (vecRecord.index != k) { @@ -147,6 +148,7 @@ protected: vecRecord.index = k; vecRecord.eval = eval[k]; + LOG(Message) << "Writing eigenvector " << k << std::endl; binWriter.writeScidacFieldRecord(evec[k], vecRecord); } binWriter.close(); diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index a47bb67e..6e4fbba6 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -152,6 +152,9 @@ void TRBPrecCG::setup(void) { auto &epack = envGetDerived(EPack, CoarseEPack, par().eigenPack); + LOG(Message) << "using low-mode deflation with coarse eigenpack '" + << par().eigenPack << "' (" + << epack.evecCoarse.size() << " modes)" << std::endl; guesser.reset(new CoarseGuesser(epack.evec, epack.evecCoarse, epack.evalCoarse)); } @@ -159,6 +162,9 @@ void TRBPrecCG::setup(void) { auto &epack = envGet(EPack, par().eigenPack); + LOG(Message) << "using low-mode deflation with eigenpack '" + << par().eigenPack << "' (" + << epack.evec.size() << " modes)" << std::endl; guesser.reset(new FineGuesser(epack.evec, epack.eval)); } } From 17f27b1ebd097159502af0684908e8cd656dd895 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 6 Apr 2018 22:52:11 +0100 Subject: [PATCH 126/267] Hadrons: eigenpack writer fix --- extras/Hadrons/EigenPack.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index a76d02f7..5f403595 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -140,8 +140,8 @@ protected: xmlWriter.pushXmlString(record.operatorXml); xmlWriter.pushXmlString(record.solverXml); - binWriter.writeLimeObject(1, 1, xmlWriter, "parameters", SCIDAC_FILE_XML); binWriter.open(filename); + binWriter.writeLimeObject(1, 1, xmlWriter, "parameters", SCIDAC_FILE_XML); for(int k = 0; k < size; ++k) { VecRecord vecRecord; From 4573b34cac473d0e1b2c72ad6b9145d525366a02 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 13 Apr 2018 18:21:00 +0200 Subject: [PATCH 127/267] Hadrons: scalar SU(N) 2-pt functions with momentum --- .../Hadrons/Modules/MScalarSUN/TwoPoint.hpp | 70 +++++++++++++++---- 1 file changed, 55 insertions(+), 15 deletions(-) diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp index 5227e95a..5ec56714 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp @@ -45,6 +45,7 @@ class TwoPointPar: Serializable public: GRID_SERIALIZABLE_CLASS_MEMBERS(TwoPointPar, std::vector, op, + std::vector, mom, std::string, output); }; @@ -52,14 +53,17 @@ template class TTwoPoint: public Module { public: - typedef typename SImpl::Field Field; - typedef typename SImpl::ComplexField ComplexField; + typedef typename SImpl::Field Field; + typedef typename SImpl::ComplexField ComplexField; + typedef std::vector SlicedOp; + class Result: Serializable { public: GRID_SERIALIZABLE_CLASS_MEMBERS(Result, std::string, sink, std::string, source, + std::vector, mom, std::vector, data); }; public: @@ -79,6 +83,8 @@ private: template std::vector makeTwoPoint(const std::vector &sink, const std::vector &source); +private: + std::vector> mom_; }; MODULE_REGISTER_NS(TwoPointSU2, TTwoPoint>, MScalarSUN); @@ -115,9 +121,19 @@ std::vector TTwoPoint::getOutput(void) template void TTwoPoint::setup(void) { - const unsigned int nt = env().getDim().back(); - envTmp(std::vector>, "slicedOp", 1, par().op.size(), - std::vector(nt)); + const unsigned int nd = env().getDim().size(); + + mom_.resize(par().mom.size()); + for (unsigned int i = 0; i < mom_.size(); ++i) + { + mom_[i] = strToVec(par().mom[i]); + if (mom_[i].size() != nd - 1) + { + HADRON_ERROR(Size, "momentum number of components different from " + + std::to_string(nd-1)); + } + } + envTmpLat(ComplexField, "ftBuf"); } // execution /////////////////////////////////////////////////////////////////// @@ -130,24 +146,48 @@ void TTwoPoint::execute(void) LOG(Message) << " '" << o << "'" << std::endl; } - const unsigned int nd = env().getDim().size(); - std::vector result; - - envGetTmp(std::vector>, slicedOp); - for (unsigned int i = 0; i < par().op.size(); ++i) + const unsigned int nd = env().getDim().size(); + const unsigned int nt = env().getDim().back(); + const unsigned int nop = par().op.size(); + const unsigned int nmom = mom_.size(); + std::vector dMask(nd, 1); + std::vector result; + std::vector> slicedOp(nop); + FFT fft(env().getGrid()); + + envGetTmp(ComplexField, ftBuf); + dMask[nd - 1] = 0; + for (unsigned int i = 0; i < nop; ++i) { auto &op = envGet(ComplexField, par().op[i]); - sliceSum(op, slicedOp[i], nd - 1); + slicedOp[i].resize(nmom); + LOG(Message) << "Operator '" << par().op[i] << "' FFT" << std::endl; + fft.FFT_dim_mask(ftBuf, op, dMask, FFT::forward); + for (unsigned int m = 0; m < nmom; ++m) + { + auto qt = mom_[m]; + + qt.resize(nd); + slicedOp[i][m].resize(nt); + for (unsigned int t = 0; t < nt; ++t) + { + qt[nd - 1] = t; + peekSite(slicedOp[i][m][t], ftBuf, qt); + } + } } - for (unsigned int i = 0; i < par().op.size(); ++i) - for (unsigned int j = 0; j < par().op.size(); ++j) + LOG(Message) << "Making contractions" << std::endl; + for (unsigned int m = 0; m < nmom; ++m) + for (unsigned int i = 0; i < nop; ++i) + for (unsigned int j = 0; j < nop; ++j) { Result r; r.sink = par().op[i]; r.source = par().op[j]; - r.data = makeTwoPoint(slicedOp[i], slicedOp[j]); + r.mom = mom_[m]; + r.data = makeTwoPoint(slicedOp[i][m], slicedOp[j][m]); result.push_back(r); } saveResult(par().output, "twopt", result); @@ -169,7 +209,7 @@ std::vector TTwoPoint::makeTwoPoint( { for (unsigned int t = 0; t < nt; ++t) { - res[dt] += TensorRemove(trace(sink[(t+dt)%nt]*source[t])); + res[dt] += TensorRemove(trace(sink[(t+dt)%nt]*adj(source[t]))); } res[dt] *= 1./static_cast(nt); } From 4669ecd4bab0ec393f745b7cb179ca850d355449 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 13 Apr 2018 18:21:18 +0200 Subject: [PATCH 128/267] Hadrons: build improvement --- extras/Hadrons/Application.cc | 1 + extras/Hadrons/Application.hpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/extras/Hadrons/Application.cc b/extras/Hadrons/Application.cc index 8b2aba4a..4c7e71f2 100644 --- a/extras/Hadrons/Application.cc +++ b/extras/Hadrons/Application.cc @@ -28,6 +28,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include +#include using namespace Grid; using namespace QCD; diff --git a/extras/Hadrons/Application.hpp b/extras/Hadrons/Application.hpp index 8cd15433..0254f2fc 100644 --- a/extras/Hadrons/Application.hpp +++ b/extras/Hadrons/Application.hpp @@ -31,7 +31,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include -#include +#include BEGIN_HADRONS_NAMESPACE From 334da7f45262cb119aa9464261d0ecb47a6c5f90 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 13 Apr 2018 18:45:31 +0200 Subject: [PATCH 129/267] Hadrons: can trace which module is throwing an error --- extras/Hadrons/HadronsXmlRun.cc | 12 +++++++++++- extras/Hadrons/VirtualMachine.cc | 13 +++++++++++-- extras/Hadrons/VirtualMachine.hpp | 9 +++++---- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/extras/Hadrons/HadronsXmlRun.cc b/extras/Hadrons/HadronsXmlRun.cc index 4fcfabf2..26e56f7d 100644 --- a/extras/Hadrons/HadronsXmlRun.cc +++ b/extras/Hadrons/HadronsXmlRun.cc @@ -69,7 +69,17 @@ int main(int argc, char *argv[]) } catch (const std::exception& e) { - LOG(Error) << "FATAL ERROR -- Exception " << typeName(&typeid(e)) << std::endl; + auto &vm = VirtualMachine::getInstance(); + int mod = vm.getCurrentModule(); + + LOG(Error) << "FATAL ERROR -- Exception " << typeName(&typeid(e)) + << std::endl; + if (mod >= 0) + { + LOG(Error) << "During execution of module '" + << vm.getModuleName(mod) << "' (address " << mod << ")" + << std::endl; + } LOG(Error) << e.what() << std::endl; LOG(Error) << "Aborting program" << std::endl; Grid_finalize(); diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index 2b7f9620..a96df622 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -250,6 +250,11 @@ std::string VirtualMachine::getModuleNamespace(const std::string name) const return getModuleNamespace(getModuleAddress(name)); } +int VirtualMachine::getCurrentModule(void) const +{ + return currentModule_; +} + bool VirtualMachine::hasModule(const unsigned int address) const { return (address < module_.size()); @@ -468,7 +473,9 @@ void VirtualMachine::memoryProfile(const unsigned int address) << "' (" << address << ")..." << std::endl; try { + currentModule_ = address; m->setup(); + currentModule_ = -1; updateProfile(address); } catch (Exceptions::Definition &) @@ -622,7 +629,7 @@ VirtualMachine::Program VirtualMachine::schedule(const GeneticPar &par) #define SEP "---------------" #define MEM_MSG(size) sizeString(size) -void VirtualMachine::executeProgram(const Program &p) const +void VirtualMachine::executeProgram(const Program &p) { Size memPeak = 0, sizeBefore, sizeAfter; GarbageSchedule freeProg; @@ -650,7 +657,9 @@ void VirtualMachine::executeProgram(const Program &p) const LOG(Message) << SEP << " Measurement step " << i + 1 << "/" << p.size() << " (module '" << module_[p[i]].name << "') " << SEP << std::endl; + currentModule_ = p[i]; (*module_[p[i]].data)(); + currentModule_ = -1; sizeBefore = env().getTotalSize(); // print used memory after execution LOG(Message) << "Allocated objects: " << MEM_MSG(sizeBefore) @@ -679,7 +688,7 @@ void VirtualMachine::executeProgram(const Program &p) const } } -void VirtualMachine::executeProgram(const std::vector &p) const +void VirtualMachine::executeProgram(const std::vector &p) { Program pAddress; diff --git a/extras/Hadrons/VirtualMachine.hpp b/extras/Hadrons/VirtualMachine.hpp index 68eeb0c0..153f8d70 100644 --- a/extras/Hadrons/VirtualMachine.hpp +++ b/extras/Hadrons/VirtualMachine.hpp @@ -114,6 +114,7 @@ public: std::string getModuleType(const std::string name) const; std::string getModuleNamespace(const unsigned int address) const; std::string getModuleNamespace(const std::string name) const; + int getCurrentModule(void) const; bool hasModule(const unsigned int address) const; bool hasModule(const std::string name) const; // print VM content @@ -133,8 +134,8 @@ public: // genetic scheduler Program schedule(const GeneticPar &par); // general execution - void executeProgram(const Program &p) const; - void executeProgram(const std::vector &p) const; + void executeProgram(const Program &p); + void executeProgram(const std::vector &p); private: // environment shortcut DEFINE_ENV_ALIAS; @@ -154,13 +155,13 @@ private: // module and related maps std::vector module_; std::map moduleAddress_; - std::string currentModule_{""}; + int currentModule_{-1}; // module graph bool graphOutdated_{true}; Graph graph_; // memory profile bool memoryProfileOutdated_{true}; - MemoryProfile profile_; + MemoryProfile profile_; }; /****************************************************************************** From b0b5b34bfff8d3ac85825e56b5af130420c28e6f Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 23 Apr 2018 12:48:00 +0100 Subject: [PATCH 130/267] Hadrons: custom abort with module trace --- extras/Hadrons/Exceptions.cc | 24 ++++++++++++++++++++++++ extras/Hadrons/Exceptions.hpp | 4 ++++ extras/Hadrons/HadronsXmlRun.cc | 17 +---------------- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/extras/Hadrons/Exceptions.cc b/extras/Hadrons/Exceptions.cc index eedc03b1..e87181b2 100644 --- a/extras/Hadrons/Exceptions.cc +++ b/extras/Hadrons/Exceptions.cc @@ -27,6 +27,8 @@ See the full license in the file "LICENSE" in the top level distribution directo /* END LEGAL */ #include +#include +#include #ifndef ERR_SUFF #define ERR_SUFF " (" + loc + ")" @@ -47,6 +49,7 @@ CONST_EXC(Definition, Logic("definition error: " + msg, loc)) CONST_EXC(Implementation, Logic("implementation error: " + msg, loc)) CONST_EXC(Range, Logic("range error: " + msg, loc)) CONST_EXC(Size, Logic("size error: " + msg, loc)) + // runtime errors CONST_EXC(Runtime, runtime_error(msg + ERR_SUFF)) CONST_EXC(Argument, Runtime("argument error: " + msg, loc)) @@ -55,3 +58,24 @@ CONST_EXC(Memory, Runtime("memory error: " + msg, loc)) CONST_EXC(Parsing, Runtime("parsing error: " + msg, loc)) CONST_EXC(Program, Runtime("program error: " + msg, loc)) CONST_EXC(System, Runtime("system error: " + msg, loc)) + +// abort functions +void Grid::Hadrons::Exceptions::abort(const std::exception& e) +{ + auto &vm = VirtualMachine::getInstance(); + int mod = vm.getCurrentModule(); + + LOG(Error) << "FATAL ERROR -- Exception " << typeName(&typeid(e)) + << std::endl; + if (mod >= 0) + { + LOG(Error) << "During execution of module '" + << vm.getModuleName(mod) << "' (address " << mod << ")" + << std::endl; + } + LOG(Error) << e.what() << std::endl; + LOG(Error) << "Aborting program" << std::endl; + Grid_finalize(); + + exit(EXIT_FAILURE); +} diff --git a/extras/Hadrons/Exceptions.hpp b/extras/Hadrons/Exceptions.hpp index ce11618a..adf2340f 100644 --- a/extras/Hadrons/Exceptions.hpp +++ b/extras/Hadrons/Exceptions.hpp @@ -56,6 +56,7 @@ namespace Exceptions DECL_EXC(Implementation, Logic); DECL_EXC(Range, Logic); DECL_EXC(Size, Logic); + // runtime errors DECL_EXC(Runtime, std::runtime_error); DECL_EXC(Argument, Runtime); @@ -64,6 +65,9 @@ namespace Exceptions DECL_EXC(Parsing, Runtime); DECL_EXC(Program, Runtime); DECL_EXC(System, Runtime); + + // abort functions + void abort(const std::exception& e); } END_HADRONS_NAMESPACE diff --git a/extras/Hadrons/HadronsXmlRun.cc b/extras/Hadrons/HadronsXmlRun.cc index 26e56f7d..6b613bb4 100644 --- a/extras/Hadrons/HadronsXmlRun.cc +++ b/extras/Hadrons/HadronsXmlRun.cc @@ -69,22 +69,7 @@ int main(int argc, char *argv[]) } catch (const std::exception& e) { - auto &vm = VirtualMachine::getInstance(); - int mod = vm.getCurrentModule(); - - LOG(Error) << "FATAL ERROR -- Exception " << typeName(&typeid(e)) - << std::endl; - if (mod >= 0) - { - LOG(Error) << "During execution of module '" - << vm.getModuleName(mod) << "' (address " << mod << ")" - << std::endl; - } - LOG(Error) << e.what() << std::endl; - LOG(Error) << "Aborting program" << std::endl; - Grid_finalize(); - - return EXIT_FAILURE; + Exceptions::abort(e); } // epilogue From c6125b01ceb6957d751fa01abc67ba6a4a1e6651 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 23 Apr 2018 12:48:17 +0100 Subject: [PATCH 131/267] Hadrons: Error and Warning channels always on --- extras/Hadrons/Global.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extras/Hadrons/Global.cc b/extras/Hadrons/Global.cc index 0164a1ab..32060460 100644 --- a/extras/Hadrons/Global.cc +++ b/extras/Hadrons/Global.cc @@ -57,8 +57,8 @@ void Hadrons::initLogger(void) GridLogIterative.setChanWidth(cw); GridLogDebug.setChanWidth(cw); GridLogIRL.setChanWidth(cw); - HadronsLogError.Active(GridLogError.isActive()); - HadronsLogWarning.Active(GridLogWarning.isActive()); + HadronsLogError.Active(true); + HadronsLogWarning.Active(true); HadronsLogMessage.Active(GridLogMessage.isActive()); HadronsLogIterative.Active(GridLogIterative.isActive()); HadronsLogDebug.Active(GridLogDebug.isActive()); From 169f405c9cf562de935245e8fc9a5e9a161aba6d Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 23 Apr 2018 12:48:34 +0100 Subject: [PATCH 132/267] Hadrons: tests repaired --- tests/hadrons/Test_QED.cc | 1 + tests/hadrons/Test_hadrons.hpp | 1 + tests/hadrons/Test_hadrons_2AS_spectrum.cc | 169 --------------------- tests/hadrons/Test_hadrons_meson_3pt.cc | 1 + tests/hadrons/Test_hadrons_quark.cc | 1 - tests/hadrons/Test_hadrons_spectrum.cc | 1 + tests/hadrons/Test_hadrons_wilsonFund.cc | 1 + 7 files changed, 5 insertions(+), 170 deletions(-) delete mode 100644 tests/hadrons/Test_hadrons_2AS_spectrum.cc diff --git a/tests/hadrons/Test_QED.cc b/tests/hadrons/Test_QED.cc index 3377bf3c..922d67c3 100644 --- a/tests/hadrons/Test_QED.cc +++ b/tests/hadrons/Test_QED.cc @@ -27,6 +27,7 @@ *******************************************************************************/ #include +#include using namespace Grid; using namespace Hadrons; diff --git a/tests/hadrons/Test_hadrons.hpp b/tests/hadrons/Test_hadrons.hpp index 67124d6c..fc061459 100644 --- a/tests/hadrons/Test_hadrons.hpp +++ b/tests/hadrons/Test_hadrons.hpp @@ -26,6 +26,7 @@ *******************************************************************************/ #include +#include using namespace Grid; using namespace Hadrons; diff --git a/tests/hadrons/Test_hadrons_2AS_spectrum.cc b/tests/hadrons/Test_hadrons_2AS_spectrum.cc deleted file mode 100644 index b3906730..00000000 --- a/tests/hadrons/Test_hadrons_2AS_spectrum.cc +++ /dev/null @@ -1,169 +0,0 @@ -/******************************************************************************* - Grid physics library, www.github.com/paboyle/Grid - - Source file: tests/hadrons/Test_hadrons_spectrum.cc - - Copyright (C) 2015 - - Author: Antonin Portelli - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - See the full license in the file "LICENSE" in the top level distribution - directory. - *******************************************************************************/ - -#include - -using namespace Grid; -using namespace Hadrons; - - - BEGIN_HADRONS_NAMESPACE - BEGIN_MODULE_NAMESPACE(MFermion) - MODULE_REGISTER_NS(GaugeProp2AS, TGaugeProp, MFermion); - END_MODULE_NAMESPACE - BEGIN_MODULE_NAMESPACE(MSource) - MODULE_REGISTER_NS(Point2AS, TPoint, MSource); - END_MODULE_NAMESPACE - BEGIN_MODULE_NAMESPACE(MContraction) - MODULE_REGISTER_NS(Meson2AS, ARG(TMeson), MContraction); -// MODULE_REGISTER_NS(BaryonMultirep, ARG(TBaryon), MContraction); - END_MODULE_NAMESPACE - BEGIN_MODULE_NAMESPACE(MSink) - MODULE_REGISTER_NS(ScalarPoint2AS, TPoint, MSink); - END_MODULE_NAMESPACE - BEGIN_MODULE_NAMESPACE(MSolver) - MODULE_REGISTER_NS(RBPrecCG2AS, TRBPrecCG, MSolver); - END_MODULE_NAMESPACE - BEGIN_MODULE_NAMESPACE(MAction) - MODULE_REGISTER_NS(WilsonClover2AS, TWilsonClover, MAction); - END_MODULE_NAMESPACE - END_HADRONS_NAMESPACE - - -int main(int argc, char *argv[]) -{ - // initialization ////////////////////////////////////////////////////////// - Grid_init(&argc, &argv); - HadronsLogError.Active(GridLogError.isActive()); - HadronsLogWarning.Active(GridLogWarning.isActive()); - HadronsLogMessage.Active(GridLogMessage.isActive()); - HadronsLogIterative.Active(GridLogIterative.isActive()); - HadronsLogDebug.Active(GridLogDebug.isActive()); - LOG(Message) << "Grid initialized" << std::endl; - // run setup /////////////////////////////////////////////////////////////// - Application application; - std::vector flavour = {"l", "s"}; - std::vector mass = {-0.01, -0.04}; - double csw = 1.0; - // global parameters - Application::GlobalPar globalPar; - globalPar.trajCounter.start = 1500; - globalPar.trajCounter.end = 1520; - globalPar.trajCounter.step = 20; - globalPar.seed = "1 2 3 4"; - application.setPar(globalPar); - // gauge field - application.createModule("gauge"); - MSource::Point2AS::Par ptPar; - ptPar.position = "0 0 0 0"; - application.createModule("pt", ptPar); - // sink - MSink::ScalarPoint2AS::Par sinkPar; - sinkPar.mom = "0 0 0"; - application.createModule("sink", sinkPar); - - // set fermion boundary conditions to be periodic space, antiperiodic time. - std::string boundary = "1 1 1 -1"; - - for (unsigned int i = 0; i < flavour.size(); ++i) - { - // actions - MAction::WilsonClover2AS::Par actionPar; - actionPar.gauge = "gauge"; - actionPar.mass = mass[i]; - actionPar.csw_r = csw; - actionPar.csw_t = csw; - actionPar.clover_anisotropy.isAnisotropic= false; - actionPar.clover_anisotropy.t_direction = Nd-1 ; - actionPar.clover_anisotropy.xi_0 = 1.0 ; - actionPar.clover_anisotropy.nu = 1.0 ; - actionPar.boundary = boundary; - application.createModule("WilsonClover2AS_" + flavour[i], actionPar); - - // solvers - MSolver::RBPrecCG2AS::Par solverPar; - solverPar.action = "WilsonClover2AS_" + flavour[i]; - solverPar.residual = 1.0e-8; - solverPar.maxIteration = 10000; - application.createModule("CG_" + flavour[i], - solverPar); - - // propagators - MFermion::GaugeProp2AS::Par quarkPar; - quarkPar.solver = "CG_" + flavour[i]; - quarkPar.source = "pt"; - application.createModule("Qpt_" + flavour[i], quarkPar); - quarkPar.source = "z2"; - application.createModule("QZ2_" + flavour[i], quarkPar); - } - for (unsigned int i = 0; i < flavour.size(); ++i) - for (unsigned int j = i; j < flavour.size(); ++j) - { - MContraction::Meson2AS::Par mesPar; - - mesPar.output = "mesons2AS/pt_" + flavour[i] + flavour[j]; - mesPar.q1 = "Qpt_" + flavour[i]; - mesPar.q2 = "Qpt_" + flavour[j]; - mesPar.gammas = "all"; - mesPar.sink = "sink"; - application.createModule("meson_pt_" - + flavour[i] + flavour[j], - mesPar); - - // mesPar.output = "mesons2AS/Z2_" + flavour[i] + flavour[j]; - // mesPar.q1 = "QZ2_" + flavour[i]; - // mesPar.q2 = "QZ2_" + flavour[j]; - // mesPar.gammas = "all"; - // mesPar.sink = "sink"; - // application.createModule("meson_Z2_" - // + flavour[i] + flavour[j], - // mesPar); - } - for (unsigned int i = 0; i < flavour.size(); ++i) - for (unsigned int j = i; j < flavour.size(); ++j) - for (unsigned int k = j; k < flavour.size(); ++k) - { - MContraction::Baryon::Par barPar; - - barPar.output = "baryons/pt_" + flavour[i] + flavour[j] + flavour[k]; - barPar.q1 = "Qpt_" + flavour[i]; - barPar.q2 = "Qpt_" + flavour[j]; - barPar.q3 = "Qpt_" + flavour[k]; - application.createModule( - "baryon_pt_" + flavour[i] + flavour[j] + flavour[k], barPar); - } - - // execution - application.saveParameterFile("spectrum.xml"); - application.run(); - - // epilogue - LOG(Message) << "Grid is finalizing now" << std::endl; - Grid_finalize(); - - return EXIT_SUCCESS; -} diff --git a/tests/hadrons/Test_hadrons_meson_3pt.cc b/tests/hadrons/Test_hadrons_meson_3pt.cc index b12ef472..243ffebb 100644 --- a/tests/hadrons/Test_hadrons_meson_3pt.cc +++ b/tests/hadrons/Test_hadrons_meson_3pt.cc @@ -26,6 +26,7 @@ *******************************************************************************/ #include +#include using namespace Grid; using namespace Hadrons; diff --git a/tests/hadrons/Test_hadrons_quark.cc b/tests/hadrons/Test_hadrons_quark.cc index cf3d2590..64cbfd30 100644 --- a/tests/hadrons/Test_hadrons_quark.cc +++ b/tests/hadrons/Test_hadrons_quark.cc @@ -26,7 +26,6 @@ *******************************************************************************/ #include "Test_hadrons.hpp" -#include using namespace Grid; using namespace QCD; diff --git a/tests/hadrons/Test_hadrons_spectrum.cc b/tests/hadrons/Test_hadrons_spectrum.cc index 682dcc9b..f41bd5b4 100644 --- a/tests/hadrons/Test_hadrons_spectrum.cc +++ b/tests/hadrons/Test_hadrons_spectrum.cc @@ -26,6 +26,7 @@ *******************************************************************************/ #include +#include using namespace Grid; using namespace Hadrons; diff --git a/tests/hadrons/Test_hadrons_wilsonFund.cc b/tests/hadrons/Test_hadrons_wilsonFund.cc index 36e751b6..bad0f2d3 100644 --- a/tests/hadrons/Test_hadrons_wilsonFund.cc +++ b/tests/hadrons/Test_hadrons_wilsonFund.cc @@ -26,6 +26,7 @@ *******************************************************************************/ #include +#include using namespace Grid; using namespace Hadrons; From 853a5528dc36a1c4d4050a817810c74ce4391d63 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 23 Apr 2018 17:35:01 +0100 Subject: [PATCH 133/267] Hadrons: template modules compilation optimisation --- extras/Hadrons/Application.hpp | 2 +- extras/Hadrons/Module.hpp | 37 ++++++------------- extras/Hadrons/Modules.hpp | 30 --------------- extras/Hadrons/Modules/MAction/DWF.cc | 8 ++++ extras/Hadrons/Modules/MAction/DWF.hpp | 3 +- extras/Hadrons/Modules/MAction/Wilson.cc | 8 ++++ extras/Hadrons/Modules/MAction/Wilson.hpp | 2 +- .../Hadrons/Modules/MAction/WilsonClover.cc | 8 ++++ .../Hadrons/Modules/MAction/WilsonClover.hpp | 2 +- extras/Hadrons/Modules/MAction/ZMobiusDWF.cc | 8 ++++ extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp | 2 +- extras/Hadrons/Modules/MContraction/Baryon.cc | 8 ++++ .../Hadrons/Modules/MContraction/Baryon.hpp | 2 +- .../Hadrons/Modules/MContraction/DiscLoop.cc | 8 ++++ .../Hadrons/Modules/MContraction/DiscLoop.hpp | 2 +- .../Hadrons/Modules/MContraction/Gamma3pt.cc | 8 ++++ .../Hadrons/Modules/MContraction/Gamma3pt.hpp | 2 +- extras/Hadrons/Modules/MContraction/Meson.cc | 8 ++++ extras/Hadrons/Modules/MContraction/Meson.hpp | 2 +- .../Modules/MContraction/WardIdentity.cc | 8 ++++ .../Modules/MContraction/WardIdentity.hpp | 2 +- .../Modules/MContraction/WeakHamiltonian.hpp | 2 +- extras/Hadrons/Modules/MFermion/GaugeProp.cc | 8 ++++ extras/Hadrons/Modules/MFermion/GaugeProp.hpp | 2 +- extras/Hadrons/Modules/MGauge/FundtoHirep.hpp | 6 +-- extras/Hadrons/Modules/MGauge/Random.hpp | 2 +- extras/Hadrons/Modules/MGauge/StochEm.hpp | 2 +- extras/Hadrons/Modules/MGauge/Unit.hpp | 2 +- extras/Hadrons/Modules/MIO/LoadBinary.cc | 13 +++++++ extras/Hadrons/Modules/MIO/LoadBinary.hpp | 12 +++--- .../Modules/MIO/LoadCoarseEigenPack.cc | 8 ++++ .../Modules/MIO/LoadCoarseEigenPack.hpp | 3 +- extras/Hadrons/Modules/MIO/LoadEigenPack.cc | 8 ++++ extras/Hadrons/Modules/MIO/LoadEigenPack.hpp | 2 +- extras/Hadrons/Modules/MIO/LoadNersc.hpp | 2 +- extras/Hadrons/Modules/MLoop/NoiseLoop.cc | 8 ++++ extras/Hadrons/Modules/MLoop/NoiseLoop.hpp | 2 +- .../Hadrons/Modules/MScalar/ChargedProp.hpp | 2 +- extras/Hadrons/Modules/MScalar/FreeProp.hpp | 2 +- extras/Hadrons/Modules/MScalarSUN/Div.cc | 12 ++++++ extras/Hadrons/Modules/MScalarSUN/Div.hpp | 10 ++--- extras/Hadrons/Modules/MScalarSUN/EMT.cc | 12 ++++++ extras/Hadrons/Modules/MScalarSUN/EMT.hpp | 10 ++--- .../Hadrons/Modules/MScalarSUN/ShiftProbe.cc | 12 ++++++ .../Hadrons/Modules/MScalarSUN/ShiftProbe.hpp | 10 ++--- .../Hadrons/Modules/MScalarSUN/TrKinetic.cc | 12 ++++++ .../Hadrons/Modules/MScalarSUN/TrKinetic.hpp | 10 ++--- extras/Hadrons/Modules/MScalarSUN/TrMag.cc | 12 ++++++ extras/Hadrons/Modules/MScalarSUN/TrMag.hpp | 10 ++--- extras/Hadrons/Modules/MScalarSUN/TrPhi.cc | 12 ++++++ extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp | 10 ++--- .../Hadrons/Modules/MScalarSUN/TransProj.cc | 12 ++++++ .../Hadrons/Modules/MScalarSUN/TransProj.hpp | 10 ++--- extras/Hadrons/Modules/MScalarSUN/TwoPoint.cc | 12 ++++++ .../Hadrons/Modules/MScalarSUN/TwoPoint.hpp | 10 ++--- extras/Hadrons/Modules/MSink/Point.cc | 9 +++++ extras/Hadrons/Modules/MSink/Point.hpp | 4 +- extras/Hadrons/Modules/MSink/Smear.cc | 8 ++++ extras/Hadrons/Modules/MSink/Smear.hpp | 2 +- .../Modules/MSolver/LocalCoherenceLanczos.cc | 9 +++++ .../Modules/MSolver/LocalCoherenceLanczos.hpp | 8 +--- extras/Hadrons/Modules/MSolver/RBPrecCG.cc | 9 +++++ extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 6 +-- extras/Hadrons/Modules/MSource/Point.cc | 9 +++++ extras/Hadrons/Modules/MSource/Point.hpp | 4 +- .../Hadrons/Modules/MSource/SeqConserved.cc | 8 ++++ .../Hadrons/Modules/MSource/SeqConserved.hpp | 2 +- extras/Hadrons/Modules/MSource/SeqGamma.cc | 8 ++++ extras/Hadrons/Modules/MSource/SeqGamma.hpp | 2 +- extras/Hadrons/Modules/MSource/Wall.cc | 8 ++++ extras/Hadrons/Modules/MSource/Wall.hpp | 2 +- extras/Hadrons/Modules/MSource/Z2.cc | 9 +++++ extras/Hadrons/Modules/MSource/Z2.hpp | 4 +- .../Modules/MUtilities/TestSeqConserved.cc | 8 ++++ .../Modules/MUtilities/TestSeqConserved.hpp | 2 +- .../Modules/MUtilities/TestSeqGamma.cc | 8 ++++ .../Modules/MUtilities/TestSeqGamma.hpp | 2 +- .../templates/Module_in_NS.hpp.template | 2 +- .../templates/Module_tmp_in_NS.hpp.template | 2 +- extras/Hadrons/make_module_inst.sh | 27 ++++++++++++++ extras/Hadrons/modules.inc | 35 +++++++++++++++++- 81 files changed, 467 insertions(+), 152 deletions(-) create mode 100644 extras/Hadrons/Modules/MAction/DWF.cc create mode 100644 extras/Hadrons/Modules/MAction/Wilson.cc create mode 100644 extras/Hadrons/Modules/MAction/WilsonClover.cc create mode 100644 extras/Hadrons/Modules/MAction/ZMobiusDWF.cc create mode 100644 extras/Hadrons/Modules/MContraction/Baryon.cc create mode 100644 extras/Hadrons/Modules/MContraction/DiscLoop.cc create mode 100644 extras/Hadrons/Modules/MContraction/Gamma3pt.cc create mode 100644 extras/Hadrons/Modules/MContraction/Meson.cc create mode 100644 extras/Hadrons/Modules/MContraction/WardIdentity.cc create mode 100644 extras/Hadrons/Modules/MFermion/GaugeProp.cc create mode 100644 extras/Hadrons/Modules/MIO/LoadBinary.cc create mode 100644 extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.cc create mode 100644 extras/Hadrons/Modules/MIO/LoadEigenPack.cc create mode 100644 extras/Hadrons/Modules/MLoop/NoiseLoop.cc create mode 100644 extras/Hadrons/Modules/MScalarSUN/Div.cc create mode 100644 extras/Hadrons/Modules/MScalarSUN/EMT.cc create mode 100644 extras/Hadrons/Modules/MScalarSUN/ShiftProbe.cc create mode 100644 extras/Hadrons/Modules/MScalarSUN/TrKinetic.cc create mode 100644 extras/Hadrons/Modules/MScalarSUN/TrMag.cc create mode 100644 extras/Hadrons/Modules/MScalarSUN/TrPhi.cc create mode 100644 extras/Hadrons/Modules/MScalarSUN/TransProj.cc create mode 100644 extras/Hadrons/Modules/MScalarSUN/TwoPoint.cc create mode 100644 extras/Hadrons/Modules/MSink/Point.cc create mode 100644 extras/Hadrons/Modules/MSink/Smear.cc create mode 100644 extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.cc create mode 100644 extras/Hadrons/Modules/MSolver/RBPrecCG.cc create mode 100644 extras/Hadrons/Modules/MSource/Point.cc create mode 100644 extras/Hadrons/Modules/MSource/SeqConserved.cc create mode 100644 extras/Hadrons/Modules/MSource/SeqGamma.cc create mode 100644 extras/Hadrons/Modules/MSource/Wall.cc create mode 100644 extras/Hadrons/Modules/MSource/Z2.cc create mode 100644 extras/Hadrons/Modules/MUtilities/TestSeqConserved.cc create mode 100644 extras/Hadrons/Modules/MUtilities/TestSeqGamma.cc create mode 100755 extras/Hadrons/make_module_inst.sh diff --git a/extras/Hadrons/Application.hpp b/extras/Hadrons/Application.hpp index 0254f2fc..8cd15433 100644 --- a/extras/Hadrons/Application.hpp +++ b/extras/Hadrons/Application.hpp @@ -31,7 +31,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include -#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Module.hpp b/extras/Hadrons/Module.hpp index 583f1111..9229a01c 100644 --- a/extras/Hadrons/Module.hpp +++ b/extras/Hadrons/Module.hpp @@ -35,32 +35,7 @@ See the full license in the file "LICENSE" in the top level distribution directo BEGIN_HADRONS_NAMESPACE // module registration macros -#define MODULE_REGISTER(mod, base)\ -class mod: public base\ -{\ -public:\ - typedef base Base;\ - using Base::Base;\ - virtual std::string getRegisteredName(void)\ - {\ - return std::string(#mod);\ - }\ -};\ -class mod##ModuleRegistrar\ -{\ -public:\ - mod##ModuleRegistrar(void)\ - {\ - ModuleFactory &modFac = ModuleFactory::getInstance();\ - modFac.registerBuilder(#mod, [&](const std::string name)\ - {\ - return std::unique_ptr(new mod(name));\ - });\ - }\ -};\ -static mod##ModuleRegistrar mod##ModuleRegistrarInstance; - -#define MODULE_REGISTER_NS(mod, base, ns)\ +#define MODULE_REGISTER(mod, base, ns)\ class mod: public base\ {\ public:\ @@ -85,6 +60,10 @@ public:\ };\ static ns##mod##ModuleRegistrar ns##mod##ModuleRegistrarInstance; +#define MODULE_REGISTER_TMP(mod, base, ns)\ +extern template class base;\ +MODULE_REGISTER(mod, ARG(base), ns); + #define ARG(...) __VA_ARGS__ #define MACRO_REDIRECT(arg1, arg2, arg3, macro, ...) macro @@ -144,6 +123,12 @@ MACRO_REDIRECT(__VA_ARGS__, envTmpLat5, envTmpLat4)(__VA_ARGS__) if (env().getGrid()->IsBoss())\ {\ ResultWriter _writer(RESULT_FILE_NAME(ioStem));\ + std::string _basename = basename(ioStem);\ + \ + if (!mkdir(_basename))\ + {\ + HADRON_ERROR(Io, "cannot create directory '" + _basename + "'");\ + }\ write(_writer, name, result);\ } diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 528faecd..cdd94c35 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,33 +1,3 @@ -/************************************************************************************* - -Grid physics library, www.github.com/paboyle/Grid - -Source file: extras/Hadrons/Modules.hpp - -Copyright (C) 2015-2018 - -Author: Antonin Portelli -Author: Guido Cossu -Author: Lanny91 -Author: pretidav - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -See the full license in the file "LICENSE" in the top level distribution directory -*************************************************************************************/ -/* END LEGAL */ #include #include #include diff --git a/extras/Hadrons/Modules/MAction/DWF.cc b/extras/Hadrons/Modules/MAction/DWF.cc new file mode 100644 index 00000000..2037238a --- /dev/null +++ b/extras/Hadrons/Modules/MAction/DWF.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MAction; + +template class Grid::Hadrons::MAction::TDWF; + diff --git a/extras/Hadrons/Modules/MAction/DWF.hpp b/extras/Hadrons/Modules/MAction/DWF.hpp index 4dfd06cf..6be35a8a 100644 --- a/extras/Hadrons/Modules/MAction/DWF.hpp +++ b/extras/Hadrons/Modules/MAction/DWF.hpp @@ -72,7 +72,8 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(DWF, TDWF, MAction); +extern template class TDWF; +MODULE_REGISTER_TMP(DWF, TDWF, MAction); /****************************************************************************** * DWF template implementation * diff --git a/extras/Hadrons/Modules/MAction/Wilson.cc b/extras/Hadrons/Modules/MAction/Wilson.cc new file mode 100644 index 00000000..10526241 --- /dev/null +++ b/extras/Hadrons/Modules/MAction/Wilson.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MAction; + +template class Grid::Hadrons::MAction::TWilson; + diff --git a/extras/Hadrons/Modules/MAction/Wilson.hpp b/extras/Hadrons/Modules/MAction/Wilson.hpp index 6467b3ee..5508b6b8 100644 --- a/extras/Hadrons/Modules/MAction/Wilson.hpp +++ b/extras/Hadrons/Modules/MAction/Wilson.hpp @@ -70,7 +70,7 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(Wilson, TWilson, MAction); +MODULE_REGISTER_TMP(Wilson, TWilson, MAction); /****************************************************************************** * TWilson template implementation * diff --git a/extras/Hadrons/Modules/MAction/WilsonClover.cc b/extras/Hadrons/Modules/MAction/WilsonClover.cc new file mode 100644 index 00000000..d0f90f26 --- /dev/null +++ b/extras/Hadrons/Modules/MAction/WilsonClover.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MAction; + +template class Grid::Hadrons::MAction::TWilsonClover; + diff --git a/extras/Hadrons/Modules/MAction/WilsonClover.hpp b/extras/Hadrons/Modules/MAction/WilsonClover.hpp index 2967931c..a93a0136 100644 --- a/extras/Hadrons/Modules/MAction/WilsonClover.hpp +++ b/extras/Hadrons/Modules/MAction/WilsonClover.hpp @@ -74,7 +74,7 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(WilsonClover, TWilsonClover, MAction); +MODULE_REGISTER_TMP(WilsonClover, TWilsonClover, MAction); /****************************************************************************** * TWilsonClover template implementation * diff --git a/extras/Hadrons/Modules/MAction/ZMobiusDWF.cc b/extras/Hadrons/Modules/MAction/ZMobiusDWF.cc new file mode 100644 index 00000000..b5be7d9b --- /dev/null +++ b/extras/Hadrons/Modules/MAction/ZMobiusDWF.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MAction; + +template class Grid::Hadrons::MAction::TZMobiusDWF; + diff --git a/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp b/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp index 518b88f2..58a6bb1a 100644 --- a/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp +++ b/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp @@ -72,7 +72,7 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(ZMobiusDWF, TZMobiusDWF, MAction); +MODULE_REGISTER_TMP(ZMobiusDWF, TZMobiusDWF, MAction); /****************************************************************************** * TZMobiusDWF implementation * diff --git a/extras/Hadrons/Modules/MContraction/Baryon.cc b/extras/Hadrons/Modules/MContraction/Baryon.cc new file mode 100644 index 00000000..7015e899 --- /dev/null +++ b/extras/Hadrons/Modules/MContraction/Baryon.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MContraction; + +template class Grid::Hadrons::MContraction::TBaryon; + diff --git a/extras/Hadrons/Modules/MContraction/Baryon.hpp b/extras/Hadrons/Modules/MContraction/Baryon.hpp index f3bf360d..87691e7b 100644 --- a/extras/Hadrons/Modules/MContraction/Baryon.hpp +++ b/extras/Hadrons/Modules/MContraction/Baryon.hpp @@ -79,7 +79,7 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(Baryon, ARG(TBaryon), MContraction); +MODULE_REGISTER_TMP(Baryon, ARG(TBaryon), MContraction); /****************************************************************************** * TBaryon implementation * diff --git a/extras/Hadrons/Modules/MContraction/DiscLoop.cc b/extras/Hadrons/Modules/MContraction/DiscLoop.cc new file mode 100644 index 00000000..257d7765 --- /dev/null +++ b/extras/Hadrons/Modules/MContraction/DiscLoop.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MContraction; + +template class Grid::Hadrons::MContraction::TDiscLoop; + diff --git a/extras/Hadrons/Modules/MContraction/DiscLoop.hpp b/extras/Hadrons/Modules/MContraction/DiscLoop.hpp index 4a30963f..1c872f0a 100644 --- a/extras/Hadrons/Modules/MContraction/DiscLoop.hpp +++ b/extras/Hadrons/Modules/MContraction/DiscLoop.hpp @@ -76,7 +76,7 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(DiscLoop, TDiscLoop, MContraction); +MODULE_REGISTER_TMP(DiscLoop, TDiscLoop, MContraction); /****************************************************************************** * TDiscLoop implementation * diff --git a/extras/Hadrons/Modules/MContraction/Gamma3pt.cc b/extras/Hadrons/Modules/MContraction/Gamma3pt.cc new file mode 100644 index 00000000..c4886223 --- /dev/null +++ b/extras/Hadrons/Modules/MContraction/Gamma3pt.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MContraction; + +template class Grid::Hadrons::MContraction::TGamma3pt; + diff --git a/extras/Hadrons/Modules/MContraction/Gamma3pt.hpp b/extras/Hadrons/Modules/MContraction/Gamma3pt.hpp index b615cd7b..2b4b88a7 100644 --- a/extras/Hadrons/Modules/MContraction/Gamma3pt.hpp +++ b/extras/Hadrons/Modules/MContraction/Gamma3pt.hpp @@ -107,7 +107,7 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(Gamma3pt, ARG(TGamma3pt), MContraction); +MODULE_REGISTER_TMP(Gamma3pt, ARG(TGamma3pt), MContraction); /****************************************************************************** * TGamma3pt implementation * diff --git a/extras/Hadrons/Modules/MContraction/Meson.cc b/extras/Hadrons/Modules/MContraction/Meson.cc new file mode 100644 index 00000000..a1c6a742 --- /dev/null +++ b/extras/Hadrons/Modules/MContraction/Meson.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MContraction; + +template class Grid::Hadrons::MContraction::TMeson; + diff --git a/extras/Hadrons/Modules/MContraction/Meson.hpp b/extras/Hadrons/Modules/MContraction/Meson.hpp index 5d27c526..f75e55dc 100644 --- a/extras/Hadrons/Modules/MContraction/Meson.hpp +++ b/extras/Hadrons/Modules/MContraction/Meson.hpp @@ -102,7 +102,7 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(Meson, ARG(TMeson), MContraction); +MODULE_REGISTER_TMP(Meson, ARG(TMeson), MContraction); /****************************************************************************** * TMeson implementation * diff --git a/extras/Hadrons/Modules/MContraction/WardIdentity.cc b/extras/Hadrons/Modules/MContraction/WardIdentity.cc new file mode 100644 index 00000000..cd188e46 --- /dev/null +++ b/extras/Hadrons/Modules/MContraction/WardIdentity.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MContraction; + +template class Grid::Hadrons::MContraction::TWardIdentity; + diff --git a/extras/Hadrons/Modules/MContraction/WardIdentity.hpp b/extras/Hadrons/Modules/MContraction/WardIdentity.hpp index 2801d88c..3b9a1449 100644 --- a/extras/Hadrons/Modules/MContraction/WardIdentity.hpp +++ b/extras/Hadrons/Modules/MContraction/WardIdentity.hpp @@ -84,7 +84,7 @@ private: unsigned int Ls_; }; -MODULE_REGISTER_NS(WardIdentity, TWardIdentity, MContraction); +MODULE_REGISTER_TMP(WardIdentity, TWardIdentity, MContraction); /****************************************************************************** * TWardIdentity implementation * diff --git a/extras/Hadrons/Modules/MContraction/WeakHamiltonian.hpp b/extras/Hadrons/Modules/MContraction/WeakHamiltonian.hpp index 9d8ada98..84edc366 100644 --- a/extras/Hadrons/Modules/MContraction/WeakHamiltonian.hpp +++ b/extras/Hadrons/Modules/MContraction/WeakHamiltonian.hpp @@ -109,7 +109,7 @@ protected:\ /* execution */ \ virtual void execute(void);\ };\ -MODULE_REGISTER_NS(modname, T##modname, MContraction); +MODULE_REGISTER(modname, T##modname, MContraction); END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MFermion/GaugeProp.cc b/extras/Hadrons/Modules/MFermion/GaugeProp.cc new file mode 100644 index 00000000..888b86f1 --- /dev/null +++ b/extras/Hadrons/Modules/MFermion/GaugeProp.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MFermion; + +template class Grid::Hadrons::MFermion::TGaugeProp; + diff --git a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp index 45b9de6c..e85acecb 100644 --- a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp +++ b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp @@ -95,7 +95,7 @@ private: SolverFn *solver_{nullptr}; }; -MODULE_REGISTER_NS(GaugeProp, TGaugeProp, MFermion); +MODULE_REGISTER_TMP(GaugeProp, TGaugeProp, MFermion); /****************************************************************************** * TGaugeProp implementation * ******************************************************************************/ diff --git a/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp b/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp index 508145bc..07274544 100644 --- a/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp +++ b/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp @@ -65,9 +65,9 @@ public: void execute(void); }; -//MODULE_REGISTER_NS(FundtoAdjoint, TFundtoHirep, MGauge); -//MODULE_REGISTER_NS(FundtoTwoIndexSym, TFundtoHirep, MGauge); -//MODULE_REGISTER_NS(FundtoTwoIndexAsym, TFundtoHirep, MGauge); +//MODULE_REGISTER_TMP(FundtoAdjoint, TFundtoHirep, MGauge); +//MODULE_REGISTER_TMP(FundtoTwoIndexSym, TFundtoHirep, MGauge); +//MODULE_REGISTER_TMP(FundtoTwoIndexAsym, TFundtoHirep, MGauge); END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MGauge/Random.hpp b/extras/Hadrons/Modules/MGauge/Random.hpp index 51a08dbb..ddc81fc1 100644 --- a/extras/Hadrons/Modules/MGauge/Random.hpp +++ b/extras/Hadrons/Modules/MGauge/Random.hpp @@ -57,7 +57,7 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(Random, TRandom, MGauge); +MODULE_REGISTER(Random, TRandom, MGauge); END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MGauge/StochEm.hpp b/extras/Hadrons/Modules/MGauge/StochEm.hpp index 9e2ba1fb..aa7fa51f 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.hpp +++ b/extras/Hadrons/Modules/MGauge/StochEm.hpp @@ -70,7 +70,7 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(StochEm, TStochEm, MGauge); +MODULE_REGISTER(StochEm, TStochEm, MGauge); END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MGauge/Unit.hpp b/extras/Hadrons/Modules/MGauge/Unit.hpp index d6ce5a6b..bd0faa25 100644 --- a/extras/Hadrons/Modules/MGauge/Unit.hpp +++ b/extras/Hadrons/Modules/MGauge/Unit.hpp @@ -57,7 +57,7 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(Unit, TUnit, MGauge); +MODULE_REGISTER(Unit, TUnit, MGauge); END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MIO/LoadBinary.cc b/extras/Hadrons/Modules/MIO/LoadBinary.cc new file mode 100644 index 00000000..4eb76ee1 --- /dev/null +++ b/extras/Hadrons/Modules/MIO/LoadBinary.cc @@ -0,0 +1,13 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MIO; + +template class Grid::Hadrons::MIO::TLoadBinary; +template class Grid::Hadrons::MIO::TLoadBinary>; +template class Grid::Hadrons::MIO::TLoadBinary>; +template class Grid::Hadrons::MIO::TLoadBinary>; +template class Grid::Hadrons::MIO::TLoadBinary>; +template class Grid::Hadrons::MIO::TLoadBinary>; + diff --git a/extras/Hadrons/Modules/MIO/LoadBinary.hpp b/extras/Hadrons/Modules/MIO/LoadBinary.hpp index d9a8b5f8..f14be5fb 100644 --- a/extras/Hadrons/Modules/MIO/LoadBinary.hpp +++ b/extras/Hadrons/Modules/MIO/LoadBinary.hpp @@ -71,12 +71,12 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(LoadBinary, TLoadBinary, MIO); -MODULE_REGISTER_NS(LoadBinaryScalarSU2, TLoadBinary>, MIO); -MODULE_REGISTER_NS(LoadBinaryScalarSU3, TLoadBinary>, MIO); -MODULE_REGISTER_NS(LoadBinaryScalarSU4, TLoadBinary>, MIO); -MODULE_REGISTER_NS(LoadBinaryScalarSU5, TLoadBinary>, MIO); -MODULE_REGISTER_NS(LoadBinaryScalarSU6, TLoadBinary>, MIO); +MODULE_REGISTER_TMP(LoadBinary, TLoadBinary, MIO); +MODULE_REGISTER_TMP(LoadBinaryScalarSU2, TLoadBinary>, MIO); +MODULE_REGISTER_TMP(LoadBinaryScalarSU3, TLoadBinary>, MIO); +MODULE_REGISTER_TMP(LoadBinaryScalarSU4, TLoadBinary>, MIO); +MODULE_REGISTER_TMP(LoadBinaryScalarSU5, TLoadBinary>, MIO); +MODULE_REGISTER_TMP(LoadBinaryScalarSU6, TLoadBinary>, MIO); /****************************************************************************** * TLoadBinary implementation * diff --git a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.cc b/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.cc new file mode 100644 index 00000000..60637566 --- /dev/null +++ b/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MIO; + +template class Grid::Hadrons::MIO::TLoadCoarseEigenPack>; + diff --git a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp b/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp index b88844f4..609e5ed4 100644 --- a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp +++ b/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp @@ -73,8 +73,7 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(LoadCoarseFermionEigenPack, - ARG(TLoadCoarseEigenPack>), MIO); +MODULE_REGISTER_TMP(LoadCoarseFermionEigenPack, ARG(TLoadCoarseEigenPack>), MIO); /****************************************************************************** * TLoadCoarseEigenPack implementation * diff --git a/extras/Hadrons/Modules/MIO/LoadEigenPack.cc b/extras/Hadrons/Modules/MIO/LoadEigenPack.cc new file mode 100644 index 00000000..1ed0254d --- /dev/null +++ b/extras/Hadrons/Modules/MIO/LoadEigenPack.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MIO; + +template class Grid::Hadrons::MIO::TLoadEigenPack>; + diff --git a/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp b/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp index 5d62b53d..8a3b40e7 100644 --- a/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp +++ b/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp @@ -68,7 +68,7 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(LoadFermionEigenPack, TLoadEigenPack>, MIO); +MODULE_REGISTER_TMP(LoadFermionEigenPack, TLoadEigenPack>, MIO); /****************************************************************************** * TLoadEigenPack implementation * diff --git a/extras/Hadrons/Modules/MIO/LoadNersc.hpp b/extras/Hadrons/Modules/MIO/LoadNersc.hpp index d6742e1e..309edad2 100644 --- a/extras/Hadrons/Modules/MIO/LoadNersc.hpp +++ b/extras/Hadrons/Modules/MIO/LoadNersc.hpp @@ -62,7 +62,7 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(LoadNersc, TLoadNersc, MIO); +MODULE_REGISTER(LoadNersc, TLoadNersc, MIO); END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MLoop/NoiseLoop.cc b/extras/Hadrons/Modules/MLoop/NoiseLoop.cc new file mode 100644 index 00000000..96707f19 --- /dev/null +++ b/extras/Hadrons/Modules/MLoop/NoiseLoop.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MLoop; + +template class Grid::Hadrons::MLoop::TNoiseLoop; + diff --git a/extras/Hadrons/Modules/MLoop/NoiseLoop.hpp b/extras/Hadrons/Modules/MLoop/NoiseLoop.hpp index e61bf163..588c63da 100644 --- a/extras/Hadrons/Modules/MLoop/NoiseLoop.hpp +++ b/extras/Hadrons/Modules/MLoop/NoiseLoop.hpp @@ -82,7 +82,7 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(NoiseLoop, TNoiseLoop, MLoop); +MODULE_REGISTER_TMP(NoiseLoop, TNoiseLoop, MLoop); /****************************************************************************** * TNoiseLoop implementation * diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp index 4d43aec2..72a40cad 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp @@ -80,7 +80,7 @@ private: std::vector phase_; }; -MODULE_REGISTER_NS(ChargedProp, TChargedProp, MScalar); +MODULE_REGISTER(ChargedProp, TChargedProp, MScalar); END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalar/FreeProp.hpp b/extras/Hadrons/Modules/MScalar/FreeProp.hpp index df17f44e..bf7823e6 100644 --- a/extras/Hadrons/Modules/MScalar/FreeProp.hpp +++ b/extras/Hadrons/Modules/MScalar/FreeProp.hpp @@ -70,7 +70,7 @@ private: bool freePropDone_; }; -MODULE_REGISTER_NS(FreeProp, TFreeProp, MScalar); +MODULE_REGISTER(FreeProp, TFreeProp, MScalar); END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/Div.cc b/extras/Hadrons/Modules/MScalarSUN/Div.cc new file mode 100644 index 00000000..1045b04a --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/Div.cc @@ -0,0 +1,12 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MScalarSUN; + +template class Grid::Hadrons::MScalarSUN::TDiv>; +template class Grid::Hadrons::MScalarSUN::TDiv>; +template class Grid::Hadrons::MScalarSUN::TDiv>; +template class Grid::Hadrons::MScalarSUN::TDiv>; +template class Grid::Hadrons::MScalarSUN::TDiv>; + diff --git a/extras/Hadrons/Modules/MScalarSUN/Div.hpp b/extras/Hadrons/Modules/MScalarSUN/Div.hpp index 0ecb1dbe..9b30866c 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Div.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/Div.hpp @@ -76,11 +76,11 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(DivSU2, TDiv>, MScalarSUN); -MODULE_REGISTER_NS(DivSU3, TDiv>, MScalarSUN); -MODULE_REGISTER_NS(DivSU4, TDiv>, MScalarSUN); -MODULE_REGISTER_NS(DivSU5, TDiv>, MScalarSUN); -MODULE_REGISTER_NS(DivSU6, TDiv>, MScalarSUN); +MODULE_REGISTER_TMP(DivSU2, TDiv>, MScalarSUN); +MODULE_REGISTER_TMP(DivSU3, TDiv>, MScalarSUN); +MODULE_REGISTER_TMP(DivSU4, TDiv>, MScalarSUN); +MODULE_REGISTER_TMP(DivSU5, TDiv>, MScalarSUN); +MODULE_REGISTER_TMP(DivSU6, TDiv>, MScalarSUN); /****************************************************************************** * TDiv implementation * diff --git a/extras/Hadrons/Modules/MScalarSUN/EMT.cc b/extras/Hadrons/Modules/MScalarSUN/EMT.cc new file mode 100644 index 00000000..0d5d652f --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/EMT.cc @@ -0,0 +1,12 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MScalarSUN; + +template class Grid::Hadrons::MScalarSUN::TEMT>; +template class Grid::Hadrons::MScalarSUN::TEMT>; +template class Grid::Hadrons::MScalarSUN::TEMT>; +template class Grid::Hadrons::MScalarSUN::TEMT>; +template class Grid::Hadrons::MScalarSUN::TEMT>; + diff --git a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp index 8c1239df..445f3445 100644 --- a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp @@ -74,11 +74,11 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(EMTSU2, TEMT>, MScalarSUN); -MODULE_REGISTER_NS(EMTSU3, TEMT>, MScalarSUN); -MODULE_REGISTER_NS(EMTSU4, TEMT>, MScalarSUN); -MODULE_REGISTER_NS(EMTSU5, TEMT>, MScalarSUN); -MODULE_REGISTER_NS(EMTSU6, TEMT>, MScalarSUN); +MODULE_REGISTER_TMP(EMTSU2, TEMT>, MScalarSUN); +MODULE_REGISTER_TMP(EMTSU3, TEMT>, MScalarSUN); +MODULE_REGISTER_TMP(EMTSU4, TEMT>, MScalarSUN); +MODULE_REGISTER_TMP(EMTSU5, TEMT>, MScalarSUN); +MODULE_REGISTER_TMP(EMTSU6, TEMT>, MScalarSUN); /****************************************************************************** * TEMT implementation * diff --git a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.cc b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.cc new file mode 100644 index 00000000..339bd9a8 --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.cc @@ -0,0 +1,12 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MScalarSUN; + +template class Grid::Hadrons::MScalarSUN::TShiftProbe>; +template class Grid::Hadrons::MScalarSUN::TShiftProbe>; +template class Grid::Hadrons::MScalarSUN::TShiftProbe>; +template class Grid::Hadrons::MScalarSUN::TShiftProbe>; +template class Grid::Hadrons::MScalarSUN::TShiftProbe>; + diff --git a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp index 8d52327e..41b8c553 100644 --- a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp @@ -79,11 +79,11 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(ShiftProbeSU2, TShiftProbe>, MScalarSUN); -MODULE_REGISTER_NS(ShiftProbeSU3, TShiftProbe>, MScalarSUN); -MODULE_REGISTER_NS(ShiftProbeSU4, TShiftProbe>, MScalarSUN); -MODULE_REGISTER_NS(ShiftProbeSU5, TShiftProbe>, MScalarSUN); -MODULE_REGISTER_NS(ShiftProbeSU6, TShiftProbe>, MScalarSUN); +MODULE_REGISTER_TMP(ShiftProbeSU2, TShiftProbe>, MScalarSUN); +MODULE_REGISTER_TMP(ShiftProbeSU3, TShiftProbe>, MScalarSUN); +MODULE_REGISTER_TMP(ShiftProbeSU4, TShiftProbe>, MScalarSUN); +MODULE_REGISTER_TMP(ShiftProbeSU5, TShiftProbe>, MScalarSUN); +MODULE_REGISTER_TMP(ShiftProbeSU6, TShiftProbe>, MScalarSUN); /****************************************************************************** * TShiftProbe implementation * diff --git a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.cc b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.cc new file mode 100644 index 00000000..8c959dca --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.cc @@ -0,0 +1,12 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MScalarSUN; + +template class Grid::Hadrons::MScalarSUN::TTrKinetic>; +template class Grid::Hadrons::MScalarSUN::TTrKinetic>; +template class Grid::Hadrons::MScalarSUN::TTrKinetic>; +template class Grid::Hadrons::MScalarSUN::TTrKinetic>; +template class Grid::Hadrons::MScalarSUN::TTrKinetic>; + diff --git a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp index f1b520de..e448b61e 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp @@ -76,11 +76,11 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(TrKineticSU2, TTrKinetic>, MScalarSUN); -MODULE_REGISTER_NS(TrKineticSU3, TTrKinetic>, MScalarSUN); -MODULE_REGISTER_NS(TrKineticSU4, TTrKinetic>, MScalarSUN); -MODULE_REGISTER_NS(TrKineticSU5, TTrKinetic>, MScalarSUN); -MODULE_REGISTER_NS(TrKineticSU6, TTrKinetic>, MScalarSUN); +MODULE_REGISTER_TMP(TrKineticSU2, TTrKinetic>, MScalarSUN); +MODULE_REGISTER_TMP(TrKineticSU3, TTrKinetic>, MScalarSUN); +MODULE_REGISTER_TMP(TrKineticSU4, TTrKinetic>, MScalarSUN); +MODULE_REGISTER_TMP(TrKineticSU5, TTrKinetic>, MScalarSUN); +MODULE_REGISTER_TMP(TrKineticSU6, TTrKinetic>, MScalarSUN); /****************************************************************************** * TTrKinetic implementation * diff --git a/extras/Hadrons/Modules/MScalarSUN/TrMag.cc b/extras/Hadrons/Modules/MScalarSUN/TrMag.cc new file mode 100644 index 00000000..3be84f92 --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/TrMag.cc @@ -0,0 +1,12 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MScalarSUN; + +template class Grid::Hadrons::MScalarSUN::TTrMag>; +template class Grid::Hadrons::MScalarSUN::TTrMag>; +template class Grid::Hadrons::MScalarSUN::TTrMag>; +template class Grid::Hadrons::MScalarSUN::TTrMag>; +template class Grid::Hadrons::MScalarSUN::TTrMag>; + diff --git a/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp b/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp index 879951d5..efadc16f 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp @@ -76,11 +76,11 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(TrMagSU2, TTrMag>, MScalarSUN); -MODULE_REGISTER_NS(TrMagSU3, TTrMag>, MScalarSUN); -MODULE_REGISTER_NS(TrMagSU4, TTrMag>, MScalarSUN); -MODULE_REGISTER_NS(TrMagSU5, TTrMag>, MScalarSUN); -MODULE_REGISTER_NS(TrMagSU6, TTrMag>, MScalarSUN); +MODULE_REGISTER_TMP(TrMagSU2, TTrMag>, MScalarSUN); +MODULE_REGISTER_TMP(TrMagSU3, TTrMag>, MScalarSUN); +MODULE_REGISTER_TMP(TrMagSU4, TTrMag>, MScalarSUN); +MODULE_REGISTER_TMP(TrMagSU5, TTrMag>, MScalarSUN); +MODULE_REGISTER_TMP(TrMagSU6, TTrMag>, MScalarSUN); /****************************************************************************** * TTrMag implementation * diff --git a/extras/Hadrons/Modules/MScalarSUN/TrPhi.cc b/extras/Hadrons/Modules/MScalarSUN/TrPhi.cc new file mode 100644 index 00000000..58c6df75 --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/TrPhi.cc @@ -0,0 +1,12 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MScalarSUN; + +template class Grid::Hadrons::MScalarSUN::TTrPhi>; +template class Grid::Hadrons::MScalarSUN::TTrPhi>; +template class Grid::Hadrons::MScalarSUN::TTrPhi>; +template class Grid::Hadrons::MScalarSUN::TTrPhi>; +template class Grid::Hadrons::MScalarSUN::TTrPhi>; + diff --git a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp b/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp index aa98bfb3..3f43a7b1 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp @@ -76,11 +76,11 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(TrPhiSU2, TTrPhi>, MScalarSUN); -MODULE_REGISTER_NS(TrPhiSU3, TTrPhi>, MScalarSUN); -MODULE_REGISTER_NS(TrPhiSU4, TTrPhi>, MScalarSUN); -MODULE_REGISTER_NS(TrPhiSU5, TTrPhi>, MScalarSUN); -MODULE_REGISTER_NS(TrPhiSU6, TTrPhi>, MScalarSUN); +MODULE_REGISTER_TMP(TrPhiSU2, TTrPhi>, MScalarSUN); +MODULE_REGISTER_TMP(TrPhiSU3, TTrPhi>, MScalarSUN); +MODULE_REGISTER_TMP(TrPhiSU4, TTrPhi>, MScalarSUN); +MODULE_REGISTER_TMP(TrPhiSU5, TTrPhi>, MScalarSUN); +MODULE_REGISTER_TMP(TrPhiSU6, TTrPhi>, MScalarSUN); /****************************************************************************** * TTrPhi implementation * diff --git a/extras/Hadrons/Modules/MScalarSUN/TransProj.cc b/extras/Hadrons/Modules/MScalarSUN/TransProj.cc new file mode 100644 index 00000000..09a469ea --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/TransProj.cc @@ -0,0 +1,12 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MScalarSUN; + +template class Grid::Hadrons::MScalarSUN::TTransProj>; +template class Grid::Hadrons::MScalarSUN::TTransProj>; +template class Grid::Hadrons::MScalarSUN::TTransProj>; +template class Grid::Hadrons::MScalarSUN::TTransProj>; +template class Grid::Hadrons::MScalarSUN::TTransProj>; + diff --git a/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp b/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp index 4532b4ab..b525b053 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp @@ -77,11 +77,11 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(TransProjSU2, TTransProj>, MScalarSUN); -MODULE_REGISTER_NS(TransProjSU3, TTransProj>, MScalarSUN); -MODULE_REGISTER_NS(TransProjSU4, TTransProj>, MScalarSUN); -MODULE_REGISTER_NS(TransProjSU5, TTransProj>, MScalarSUN); -MODULE_REGISTER_NS(TransProjSU6, TTransProj>, MScalarSUN); +MODULE_REGISTER_TMP(TransProjSU2, TTransProj>, MScalarSUN); +MODULE_REGISTER_TMP(TransProjSU3, TTransProj>, MScalarSUN); +MODULE_REGISTER_TMP(TransProjSU4, TTransProj>, MScalarSUN); +MODULE_REGISTER_TMP(TransProjSU5, TTransProj>, MScalarSUN); +MODULE_REGISTER_TMP(TransProjSU6, TTransProj>, MScalarSUN); /****************************************************************************** * TTransProj implementation * diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.cc b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.cc new file mode 100644 index 00000000..6e009bb6 --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.cc @@ -0,0 +1,12 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MScalarSUN; + +template class Grid::Hadrons::MScalarSUN::TTwoPoint>; +template class Grid::Hadrons::MScalarSUN::TTwoPoint>; +template class Grid::Hadrons::MScalarSUN::TTwoPoint>; +template class Grid::Hadrons::MScalarSUN::TTwoPoint>; +template class Grid::Hadrons::MScalarSUN::TTwoPoint>; + diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp index 5ec56714..e50e23d7 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp @@ -87,11 +87,11 @@ private: std::vector> mom_; }; -MODULE_REGISTER_NS(TwoPointSU2, TTwoPoint>, MScalarSUN); -MODULE_REGISTER_NS(TwoPointSU3, TTwoPoint>, MScalarSUN); -MODULE_REGISTER_NS(TwoPointSU4, TTwoPoint>, MScalarSUN); -MODULE_REGISTER_NS(TwoPointSU5, TTwoPoint>, MScalarSUN); -MODULE_REGISTER_NS(TwoPointSU6, TTwoPoint>, MScalarSUN); +MODULE_REGISTER_TMP(TwoPointSU2, TTwoPoint>, MScalarSUN); +MODULE_REGISTER_TMP(TwoPointSU3, TTwoPoint>, MScalarSUN); +MODULE_REGISTER_TMP(TwoPointSU4, TTwoPoint>, MScalarSUN); +MODULE_REGISTER_TMP(TwoPointSU5, TTwoPoint>, MScalarSUN); +MODULE_REGISTER_TMP(TwoPointSU6, TTwoPoint>, MScalarSUN); /****************************************************************************** * TTwoPoint implementation * diff --git a/extras/Hadrons/Modules/MSink/Point.cc b/extras/Hadrons/Modules/MSink/Point.cc new file mode 100644 index 00000000..fbb3b2f2 --- /dev/null +++ b/extras/Hadrons/Modules/MSink/Point.cc @@ -0,0 +1,9 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MSink; + +template class Grid::Hadrons::MSink::TPoint; +template class Grid::Hadrons::MSink::TPoint; + diff --git a/extras/Hadrons/Modules/MSink/Point.hpp b/extras/Hadrons/Modules/MSink/Point.hpp index ee824c03..1c14915a 100644 --- a/extras/Hadrons/Modules/MSink/Point.hpp +++ b/extras/Hadrons/Modules/MSink/Point.hpp @@ -72,8 +72,8 @@ private: std::string momphName_; }; -MODULE_REGISTER_NS(Point, TPoint, MSink); -MODULE_REGISTER_NS(ScalarPoint, TPoint, MSink); +MODULE_REGISTER_TMP(Point, TPoint, MSink); +MODULE_REGISTER_TMP(ScalarPoint, TPoint, MSink); /****************************************************************************** * TPoint implementation * diff --git a/extras/Hadrons/Modules/MSink/Smear.cc b/extras/Hadrons/Modules/MSink/Smear.cc new file mode 100644 index 00000000..8ce5f354 --- /dev/null +++ b/extras/Hadrons/Modules/MSink/Smear.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MSink; + +template class Grid::Hadrons::MSink::TSmear; + diff --git a/extras/Hadrons/Modules/MSink/Smear.hpp b/extras/Hadrons/Modules/MSink/Smear.hpp index e72dece0..82a21a80 100644 --- a/extras/Hadrons/Modules/MSink/Smear.hpp +++ b/extras/Hadrons/Modules/MSink/Smear.hpp @@ -70,7 +70,7 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(Smear, TSmear, MSink); +MODULE_REGISTER_TMP(Smear, TSmear, MSink); /****************************************************************************** * TSmear implementation * diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.cc b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.cc new file mode 100644 index 00000000..64588a5b --- /dev/null +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.cc @@ -0,0 +1,9 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MSolver; + +template class Grid::Hadrons::MSolver::TLocalCoherenceLanczos; +template class Grid::Hadrons::MSolver::TLocalCoherenceLanczos; + diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index 2b7c1049..4695d8e2 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -79,12 +79,8 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(LocalCoherenceLanczos, - ARG(TLocalCoherenceLanczos), - MSolver); -MODULE_REGISTER_NS(ZLocalCoherenceLanczos, - ARG(TLocalCoherenceLanczos), - MSolver); +MODULE_REGISTER_TMP(LocalCoherenceLanczos, ARG(TLocalCoherenceLanczos), MSolver); +MODULE_REGISTER_TMP(ZLocalCoherenceLanczos, ARG(TLocalCoherenceLanczos), MSolver); /****************************************************************************** * TLocalCoherenceLanczos implementation * diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.cc b/extras/Hadrons/Modules/MSolver/RBPrecCG.cc new file mode 100644 index 00000000..4c0aa48e --- /dev/null +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.cc @@ -0,0 +1,9 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MSolver; + +template class Grid::Hadrons::MSolver::TRBPrecCG; +template class Grid::Hadrons::MSolver::TRBPrecCG; + diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index 6e4fbba6..e241161f 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -79,10 +79,8 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(RBPrecCG, - ARG(TRBPrecCG), MSolver); -MODULE_REGISTER_NS(ZRBPrecCG, - ARG(TRBPrecCG), MSolver); +MODULE_REGISTER_TMP(RBPrecCG, ARG(TRBPrecCG), MSolver); +MODULE_REGISTER_TMP(ZRBPrecCG, ARG(TRBPrecCG), MSolver); /****************************************************************************** * TRBPrecCG template implementation * diff --git a/extras/Hadrons/Modules/MSource/Point.cc b/extras/Hadrons/Modules/MSource/Point.cc new file mode 100644 index 00000000..f16c43d2 --- /dev/null +++ b/extras/Hadrons/Modules/MSource/Point.cc @@ -0,0 +1,9 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MSource; + +template class Grid::Hadrons::MSource::TPoint; +template class Grid::Hadrons::MSource::TPoint; + diff --git a/extras/Hadrons/Modules/MSource/Point.hpp b/extras/Hadrons/Modules/MSource/Point.hpp index ac6df252..50297a8b 100644 --- a/extras/Hadrons/Modules/MSource/Point.hpp +++ b/extras/Hadrons/Modules/MSource/Point.hpp @@ -79,8 +79,8 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(Point, TPoint, MSource); -MODULE_REGISTER_NS(ScalarPoint, TPoint, MSource); +MODULE_REGISTER_TMP(Point, TPoint, MSource); +MODULE_REGISTER_TMP(ScalarPoint, TPoint, MSource); /****************************************************************************** * TPoint template implementation * diff --git a/extras/Hadrons/Modules/MSource/SeqConserved.cc b/extras/Hadrons/Modules/MSource/SeqConserved.cc new file mode 100644 index 00000000..9db92c98 --- /dev/null +++ b/extras/Hadrons/Modules/MSource/SeqConserved.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MSource; + +template class Grid::Hadrons::MSource::TSeqConserved; + diff --git a/extras/Hadrons/Modules/MSource/SeqConserved.hpp b/extras/Hadrons/Modules/MSource/SeqConserved.hpp index d7780528..a5d21995 100644 --- a/extras/Hadrons/Modules/MSource/SeqConserved.hpp +++ b/extras/Hadrons/Modules/MSource/SeqConserved.hpp @@ -103,7 +103,7 @@ private: std::string SeqmomphName_; }; -MODULE_REGISTER_NS(SeqConserved, TSeqConserved, MSource); +MODULE_REGISTER_TMP(SeqConserved, TSeqConserved, MSource); /****************************************************************************** diff --git a/extras/Hadrons/Modules/MSource/SeqGamma.cc b/extras/Hadrons/Modules/MSource/SeqGamma.cc new file mode 100644 index 00000000..744ad837 --- /dev/null +++ b/extras/Hadrons/Modules/MSource/SeqGamma.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MSource; + +template class Grid::Hadrons::MSource::TSeqGamma; + diff --git a/extras/Hadrons/Modules/MSource/SeqGamma.hpp b/extras/Hadrons/Modules/MSource/SeqGamma.hpp index 40eda29f..9d99b5b3 100644 --- a/extras/Hadrons/Modules/MSource/SeqGamma.hpp +++ b/extras/Hadrons/Modules/MSource/SeqGamma.hpp @@ -90,7 +90,7 @@ private: std::string momphName_, tName_; }; -MODULE_REGISTER_NS(SeqGamma, TSeqGamma, MSource); +MODULE_REGISTER_TMP(SeqGamma, TSeqGamma, MSource); /****************************************************************************** * TSeqGamma implementation * diff --git a/extras/Hadrons/Modules/MSource/Wall.cc b/extras/Hadrons/Modules/MSource/Wall.cc new file mode 100644 index 00000000..42e19a8f --- /dev/null +++ b/extras/Hadrons/Modules/MSource/Wall.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MSource; + +template class Grid::Hadrons::MSource::TWall; + diff --git a/extras/Hadrons/Modules/MSource/Wall.hpp b/extras/Hadrons/Modules/MSource/Wall.hpp index 5853b11a..9494e739 100644 --- a/extras/Hadrons/Modules/MSource/Wall.hpp +++ b/extras/Hadrons/Modules/MSource/Wall.hpp @@ -84,7 +84,7 @@ private: std::string momphName_, tName_; }; -MODULE_REGISTER_NS(Wall, TWall, MSource); +MODULE_REGISTER_TMP(Wall, TWall, MSource); /****************************************************************************** * TWall implementation * diff --git a/extras/Hadrons/Modules/MSource/Z2.cc b/extras/Hadrons/Modules/MSource/Z2.cc new file mode 100644 index 00000000..e655e253 --- /dev/null +++ b/extras/Hadrons/Modules/MSource/Z2.cc @@ -0,0 +1,9 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MSource; + +template class Grid::Hadrons::MSource::TZ2; +template class Grid::Hadrons::MSource::TZ2; + diff --git a/extras/Hadrons/Modules/MSource/Z2.hpp b/extras/Hadrons/Modules/MSource/Z2.hpp index 4414e37f..065d5fdf 100644 --- a/extras/Hadrons/Modules/MSource/Z2.hpp +++ b/extras/Hadrons/Modules/MSource/Z2.hpp @@ -85,8 +85,8 @@ private: std::string tName_; }; -MODULE_REGISTER_NS(Z2, TZ2, MSource); -MODULE_REGISTER_NS(ScalarZ2, TZ2, MSource); +MODULE_REGISTER_TMP(Z2, TZ2, MSource); +MODULE_REGISTER_TMP(ScalarZ2, TZ2, MSource); /****************************************************************************** * TZ2 template implementation * diff --git a/extras/Hadrons/Modules/MUtilities/TestSeqConserved.cc b/extras/Hadrons/Modules/MUtilities/TestSeqConserved.cc new file mode 100644 index 00000000..94d2c946 --- /dev/null +++ b/extras/Hadrons/Modules/MUtilities/TestSeqConserved.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MUtilities; + +template class Grid::Hadrons::MUtilities::TTestSeqConserved; + diff --git a/extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp b/extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp index 6ee1e3c2..bf2370eb 100644 --- a/extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp +++ b/extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp @@ -88,7 +88,7 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(TestSeqConserved, TTestSeqConserved, MUtilities); +MODULE_REGISTER_TMP(TestSeqConserved, TTestSeqConserved, MUtilities); /****************************************************************************** * TTestSeqConserved implementation * diff --git a/extras/Hadrons/Modules/MUtilities/TestSeqGamma.cc b/extras/Hadrons/Modules/MUtilities/TestSeqGamma.cc new file mode 100644 index 00000000..59635c5d --- /dev/null +++ b/extras/Hadrons/Modules/MUtilities/TestSeqGamma.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MUtilities; + +template class Grid::Hadrons::MUtilities::TTestSeqGamma; + diff --git a/extras/Hadrons/Modules/MUtilities/TestSeqGamma.hpp b/extras/Hadrons/Modules/MUtilities/TestSeqGamma.hpp index df35d887..9284a638 100644 --- a/extras/Hadrons/Modules/MUtilities/TestSeqGamma.hpp +++ b/extras/Hadrons/Modules/MUtilities/TestSeqGamma.hpp @@ -72,7 +72,7 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(TestSeqGamma, TTestSeqGamma, MUtilities); +MODULE_REGISTER_TMP(TestSeqGamma, TTestSeqGamma, MUtilities); /****************************************************************************** * TTestSeqGamma implementation * diff --git a/extras/Hadrons/Modules/templates/Module_in_NS.hpp.template b/extras/Hadrons/Modules/templates/Module_in_NS.hpp.template index ea77b12a..f645d046 100644 --- a/extras/Hadrons/Modules/templates/Module_in_NS.hpp.template +++ b/extras/Hadrons/Modules/templates/Module_in_NS.hpp.template @@ -35,7 +35,7 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(___FILEBASENAME___, T___FILEBASENAME___, ___NAMESPACE___); +MODULE_REGISTER(___FILEBASENAME___, T___FILEBASENAME___, ___NAMESPACE___); END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/templates/Module_tmp_in_NS.hpp.template b/extras/Hadrons/Modules/templates/Module_tmp_in_NS.hpp.template index b79c0ad3..48df254b 100644 --- a/extras/Hadrons/Modules/templates/Module_tmp_in_NS.hpp.template +++ b/extras/Hadrons/Modules/templates/Module_tmp_in_NS.hpp.template @@ -36,7 +36,7 @@ public: virtual void execute(void); }; -MODULE_REGISTER_NS(___FILEBASENAME___, T___FILEBASENAME___, ___NAMESPACE___); +MODULE_REGISTER_TMP(___FILEBASENAME___, T___FILEBASENAME___, ___NAMESPACE___); /****************************************************************************** * T___FILEBASENAME___ implementation * diff --git a/extras/Hadrons/make_module_inst.sh b/extras/Hadrons/make_module_inst.sh new file mode 100755 index 00000000..32ead3f0 --- /dev/null +++ b/extras/Hadrons/make_module_inst.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +for m in `find Modules -name '*.hpp' -type f -print`; do + echo "====== ${m}" + CCFILE=`echo $m | sed -E s/\.hpp/.cc/g` + NS=`echo $m | awk -F '/' '{print $2}'` + NMOD=`grep -E 'MODULE_REGISTER_TMP.+<.+>.?' $m | wc -l` + if [ ! -e ${CCFILE} ] && (( NMOD != 0 )); then + echo "#include " >> ${CCFILE} + echo "" >> ${CCFILE} + echo "using namespace Grid;" >> ${CCFILE} + echo "using namespace Hadrons;" >> ${CCFILE} + echo "using namespace ${NS};" >> ${CCFILE} + echo "" >> ${CCFILE} + for i in `grep -E 'MODULE_REGISTER_TMP.+<.+>.?' $m | sed -E 's/ +//g'` + do + TMPARG=`echo ${i} | grep -oE 'ARG\(.+>\)' | sed -E 's/^ARG\(//g' | sed -E 's/\)$//g'` + SUB=`echo ${i} | sed -E 's/ARG\(.+>\)/@arg@/g' | sed -E 's/,/|/g'` + SUB=`echo ${SUB} | sed -E 's/.+\(//g' | sed -E 's/\);//g'` + SUB=`echo ${SUB} | sed -E "s/@arg@/${TMPARG}/g"` + NAME=`echo ${SUB} | awk -F '|' '{print $1}'` + TYPE=`echo ${SUB} | awk -F '|' '{print $2}'` + echo "template class Grid::Hadrons::${NS}::${TYPE};" >> ${CCFILE} + done + echo "" >> ${CCFILE} + fi +done \ No newline at end of file diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 5932cc89..ec954bbe 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -1,14 +1,47 @@ modules_cc =\ Modules/MContraction/WeakHamiltonianEye.cc \ + Modules/MContraction/Baryon.cc \ + Modules/MContraction/Meson.cc \ Modules/MContraction/WeakNeutral4ptDisc.cc \ Modules/MContraction/WeakHamiltonianNonEye.cc \ + Modules/MContraction/WardIdentity.cc \ + Modules/MContraction/DiscLoop.cc \ + Modules/MContraction/Gamma3pt.cc \ + Modules/MFermion/GaugeProp.cc \ + Modules/MSource/Point.cc \ + Modules/MSource/Wall.cc \ + Modules/MSource/SeqConserved.cc \ + Modules/MSource/SeqGamma.cc \ + Modules/MSource/Z2.cc \ + Modules/MSink/Point.cc \ + Modules/MSink/Smear.cc \ + Modules/MSolver/RBPrecCG.cc \ + Modules/MSolver/LocalCoherenceLanczos.cc \ Modules/MGauge/Unit.cc \ Modules/MGauge/StochEm.cc \ Modules/MGauge/Random.cc \ Modules/MGauge/FundtoHirep.cc \ + Modules/MUtilities/TestSeqGamma.cc \ + Modules/MUtilities/TestSeqConserved.cc \ + Modules/MLoop/NoiseLoop.cc \ Modules/MScalar/FreeProp.cc \ Modules/MScalar/ChargedProp.cc \ - Modules/MIO/LoadNersc.cc + Modules/MAction/Wilson.cc \ + Modules/MAction/ZMobiusDWF.cc \ + Modules/MAction/WilsonClover.cc \ + Modules/MAction/DWF.cc \ + Modules/MScalarSUN/TrPhi.cc \ + Modules/MScalarSUN/TrMag.cc \ + Modules/MScalarSUN/TrKinetic.cc \ + Modules/MScalarSUN/EMT.cc \ + Modules/MScalarSUN/ShiftProbe.cc \ + Modules/MScalarSUN/TransProj.cc \ + Modules/MScalarSUN/TwoPoint.cc \ + Modules/MScalarSUN/Div.cc \ + Modules/MIO/LoadEigenPack.cc \ + Modules/MIO/LoadBinary.cc \ + Modules/MIO/LoadNersc.cc \ + Modules/MIO/LoadCoarseEigenPack.cc modules_hpp =\ Modules/MContraction/Baryon.hpp \ From ce7720e221fcdff4ba5a8f6824fcd1b129a7b623 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 23 Apr 2018 17:36:20 +0100 Subject: [PATCH 134/267] Hadrons: copyright update --- extras/Hadrons/Modules.hpp | 30 +++++++++++++++++++ extras/Hadrons/Modules/MAction/DWF.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MAction/Wilson.cc | 27 +++++++++++++++++ .../Hadrons/Modules/MAction/WilsonClover.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MAction/ZMobiusDWF.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MContraction/Baryon.cc | 27 +++++++++++++++++ .../Hadrons/Modules/MContraction/DiscLoop.cc | 27 +++++++++++++++++ .../Hadrons/Modules/MContraction/Gamma3pt.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MContraction/Meson.cc | 27 +++++++++++++++++ .../Modules/MContraction/WardIdentity.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MFermion/GaugeProp.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MGauge/FundtoHirep.cc | 6 ++-- extras/Hadrons/Modules/MGauge/StochEm.cc | 1 + extras/Hadrons/Modules/MIO/LoadBinary.cc | 27 +++++++++++++++++ .../Modules/MIO/LoadCoarseEigenPack.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MIO/LoadEigenPack.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MLoop/NoiseLoop.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MScalarSUN/Div.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MScalarSUN/EMT.cc | 27 +++++++++++++++++ .../Hadrons/Modules/MScalarSUN/ShiftProbe.cc | 27 +++++++++++++++++ .../Hadrons/Modules/MScalarSUN/TrKinetic.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MScalarSUN/TrMag.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MScalarSUN/TrPhi.cc | 27 +++++++++++++++++ .../Hadrons/Modules/MScalarSUN/TransProj.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MScalarSUN/TwoPoint.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MSink/Point.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MSink/Point.hpp | 1 + extras/Hadrons/Modules/MSink/Smear.cc | 27 +++++++++++++++++ .../Modules/MSolver/LocalCoherenceLanczos.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MSolver/RBPrecCG.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MSource/Point.cc | 27 +++++++++++++++++ .../Hadrons/Modules/MSource/SeqConserved.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MSource/SeqGamma.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MSource/Wall.cc | 27 +++++++++++++++++ extras/Hadrons/Modules/MSource/Z2.cc | 27 +++++++++++++++++ .../Modules/MUtilities/TestSeqConserved.cc | 27 +++++++++++++++++ .../Modules/MUtilities/TestSeqGamma.cc | 27 +++++++++++++++++ 37 files changed, 927 insertions(+), 2 deletions(-) diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index cdd94c35..528faecd 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,3 +1,33 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli +Author: Guido Cossu +Author: Lanny91 +Author: pretidav + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include #include #include diff --git a/extras/Hadrons/Modules/MAction/DWF.cc b/extras/Hadrons/Modules/MAction/DWF.cc index 2037238a..ae518018 100644 --- a/extras/Hadrons/Modules/MAction/DWF.cc +++ b/extras/Hadrons/Modules/MAction/DWF.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MAction/DWF.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MAction/Wilson.cc b/extras/Hadrons/Modules/MAction/Wilson.cc index 10526241..11924d5a 100644 --- a/extras/Hadrons/Modules/MAction/Wilson.cc +++ b/extras/Hadrons/Modules/MAction/Wilson.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MAction/Wilson.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MAction/WilsonClover.cc b/extras/Hadrons/Modules/MAction/WilsonClover.cc index d0f90f26..77099044 100644 --- a/extras/Hadrons/Modules/MAction/WilsonClover.cc +++ b/extras/Hadrons/Modules/MAction/WilsonClover.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MAction/WilsonClover.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MAction/ZMobiusDWF.cc b/extras/Hadrons/Modules/MAction/ZMobiusDWF.cc index b5be7d9b..7a49c120 100644 --- a/extras/Hadrons/Modules/MAction/ZMobiusDWF.cc +++ b/extras/Hadrons/Modules/MAction/ZMobiusDWF.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MAction/ZMobiusDWF.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MContraction/Baryon.cc b/extras/Hadrons/Modules/MContraction/Baryon.cc index 7015e899..7daf5008 100644 --- a/extras/Hadrons/Modules/MContraction/Baryon.cc +++ b/extras/Hadrons/Modules/MContraction/Baryon.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MContraction/Baryon.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MContraction/DiscLoop.cc b/extras/Hadrons/Modules/MContraction/DiscLoop.cc index 257d7765..8c7a72ee 100644 --- a/extras/Hadrons/Modules/MContraction/DiscLoop.cc +++ b/extras/Hadrons/Modules/MContraction/DiscLoop.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MContraction/DiscLoop.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MContraction/Gamma3pt.cc b/extras/Hadrons/Modules/MContraction/Gamma3pt.cc index c4886223..13e911bb 100644 --- a/extras/Hadrons/Modules/MContraction/Gamma3pt.cc +++ b/extras/Hadrons/Modules/MContraction/Gamma3pt.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MContraction/Gamma3pt.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MContraction/Meson.cc b/extras/Hadrons/Modules/MContraction/Meson.cc index a1c6a742..3b880705 100644 --- a/extras/Hadrons/Modules/MContraction/Meson.cc +++ b/extras/Hadrons/Modules/MContraction/Meson.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MContraction/Meson.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MContraction/WardIdentity.cc b/extras/Hadrons/Modules/MContraction/WardIdentity.cc index cd188e46..8b5cc2e3 100644 --- a/extras/Hadrons/Modules/MContraction/WardIdentity.cc +++ b/extras/Hadrons/Modules/MContraction/WardIdentity.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MContraction/WardIdentity.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MFermion/GaugeProp.cc b/extras/Hadrons/Modules/MFermion/GaugeProp.cc index 888b86f1..8db69495 100644 --- a/extras/Hadrons/Modules/MFermion/GaugeProp.cc +++ b/extras/Hadrons/Modules/MFermion/GaugeProp.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MFermion/GaugeProp.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MGauge/FundtoHirep.cc b/extras/Hadrons/Modules/MGauge/FundtoHirep.cc index ba8e9330..824ee8c8 100644 --- a/extras/Hadrons/Modules/MGauge/FundtoHirep.cc +++ b/extras/Hadrons/Modules/MGauge/FundtoHirep.cc @@ -4,9 +4,11 @@ Grid physics library, www.github.com/paboyle/Grid Source file: extras/Hadrons/Modules/MGauge/FundtoHirep.cc -Copyright (C) 2015 -Copyright (C) 2016 +Copyright (C) 2015-2018 +Author: Antonin Portelli +Author: Guido Cossu +Author: pretidav This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/extras/Hadrons/Modules/MGauge/StochEm.cc b/extras/Hadrons/Modules/MGauge/StochEm.cc index cfbd28ef..7b07557e 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.cc +++ b/extras/Hadrons/Modules/MGauge/StochEm.cc @@ -7,6 +7,7 @@ Source file: extras/Hadrons/Modules/MGauge/StochEm.cc Copyright (C) 2015-2018 Author: Antonin Portelli +Author: Vera Guelpers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/extras/Hadrons/Modules/MIO/LoadBinary.cc b/extras/Hadrons/Modules/MIO/LoadBinary.cc index 4eb76ee1..f04df9df 100644 --- a/extras/Hadrons/Modules/MIO/LoadBinary.cc +++ b/extras/Hadrons/Modules/MIO/LoadBinary.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MIO/LoadBinary.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.cc b/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.cc index 60637566..0ed7643c 100644 --- a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.cc +++ b/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MIO/LoadEigenPack.cc b/extras/Hadrons/Modules/MIO/LoadEigenPack.cc index 1ed0254d..5b7aebc3 100644 --- a/extras/Hadrons/Modules/MIO/LoadEigenPack.cc +++ b/extras/Hadrons/Modules/MIO/LoadEigenPack.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MIO/LoadEigenPack.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MLoop/NoiseLoop.cc b/extras/Hadrons/Modules/MLoop/NoiseLoop.cc index 96707f19..5c510afd 100644 --- a/extras/Hadrons/Modules/MLoop/NoiseLoop.cc +++ b/extras/Hadrons/Modules/MLoop/NoiseLoop.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MLoop/NoiseLoop.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MScalarSUN/Div.cc b/extras/Hadrons/Modules/MScalarSUN/Div.cc index 1045b04a..6a2e366d 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Div.cc +++ b/extras/Hadrons/Modules/MScalarSUN/Div.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/Div.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MScalarSUN/EMT.cc b/extras/Hadrons/Modules/MScalarSUN/EMT.cc index 0d5d652f..7f8ca16d 100644 --- a/extras/Hadrons/Modules/MScalarSUN/EMT.cc +++ b/extras/Hadrons/Modules/MScalarSUN/EMT.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/EMT.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.cc b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.cc index 339bd9a8..30320667 100644 --- a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.cc +++ b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/ShiftProbe.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.cc b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.cc index 8c959dca..8d377f21 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.cc +++ b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/TrKinetic.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MScalarSUN/TrMag.cc b/extras/Hadrons/Modules/MScalarSUN/TrMag.cc index 3be84f92..29897abc 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrMag.cc +++ b/extras/Hadrons/Modules/MScalarSUN/TrMag.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/TrMag.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MScalarSUN/TrPhi.cc b/extras/Hadrons/Modules/MScalarSUN/TrPhi.cc index 58c6df75..e1fcb8e5 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrPhi.cc +++ b/extras/Hadrons/Modules/MScalarSUN/TrPhi.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/TrPhi.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MScalarSUN/TransProj.cc b/extras/Hadrons/Modules/MScalarSUN/TransProj.cc index 09a469ea..0fb230bb 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TransProj.cc +++ b/extras/Hadrons/Modules/MScalarSUN/TransProj.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/TransProj.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.cc b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.cc index 6e009bb6..840cc02a 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.cc +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/TwoPoint.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MSink/Point.cc b/extras/Hadrons/Modules/MSink/Point.cc index fbb3b2f2..127c4c74 100644 --- a/extras/Hadrons/Modules/MSink/Point.cc +++ b/extras/Hadrons/Modules/MSink/Point.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MSink/Point.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MSink/Point.hpp b/extras/Hadrons/Modules/MSink/Point.hpp index 1c14915a..a4a28b97 100644 --- a/extras/Hadrons/Modules/MSink/Point.hpp +++ b/extras/Hadrons/Modules/MSink/Point.hpp @@ -7,6 +7,7 @@ Source file: extras/Hadrons/Modules/MSink/Point.hpp Copyright (C) 2015-2018 Author: Antonin Portelli +Author: Guido Cossu Author: Lanny91 This program is free software; you can redistribute it and/or modify diff --git a/extras/Hadrons/Modules/MSink/Smear.cc b/extras/Hadrons/Modules/MSink/Smear.cc index 8ce5f354..ff250140 100644 --- a/extras/Hadrons/Modules/MSink/Smear.cc +++ b/extras/Hadrons/Modules/MSink/Smear.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MSink/Smear.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.cc b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.cc index 64588a5b..5bddce95 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.cc +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.cc b/extras/Hadrons/Modules/MSolver/RBPrecCG.cc index 4c0aa48e..867c6c5d 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.cc +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MSolver/RBPrecCG.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MSource/Point.cc b/extras/Hadrons/Modules/MSource/Point.cc index f16c43d2..5e49af2a 100644 --- a/extras/Hadrons/Modules/MSource/Point.cc +++ b/extras/Hadrons/Modules/MSource/Point.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MSource/Point.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MSource/SeqConserved.cc b/extras/Hadrons/Modules/MSource/SeqConserved.cc index 9db92c98..35b6ef37 100644 --- a/extras/Hadrons/Modules/MSource/SeqConserved.cc +++ b/extras/Hadrons/Modules/MSource/SeqConserved.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MSource/SeqConserved.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MSource/SeqGamma.cc b/extras/Hadrons/Modules/MSource/SeqGamma.cc index 744ad837..ce4f3dd0 100644 --- a/extras/Hadrons/Modules/MSource/SeqGamma.cc +++ b/extras/Hadrons/Modules/MSource/SeqGamma.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MSource/SeqGamma.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MSource/Wall.cc b/extras/Hadrons/Modules/MSource/Wall.cc index 42e19a8f..9b293232 100644 --- a/extras/Hadrons/Modules/MSource/Wall.cc +++ b/extras/Hadrons/Modules/MSource/Wall.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MSource/Wall.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MSource/Z2.cc b/extras/Hadrons/Modules/MSource/Z2.cc index e655e253..9644c6fd 100644 --- a/extras/Hadrons/Modules/MSource/Z2.cc +++ b/extras/Hadrons/Modules/MSource/Z2.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MSource/Z2.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MUtilities/TestSeqConserved.cc b/extras/Hadrons/Modules/MUtilities/TestSeqConserved.cc index 94d2c946..99beac71 100644 --- a/extras/Hadrons/Modules/MUtilities/TestSeqConserved.cc +++ b/extras/Hadrons/Modules/MUtilities/TestSeqConserved.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MUtilities/TestSeqConserved.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MUtilities/TestSeqGamma.cc b/extras/Hadrons/Modules/MUtilities/TestSeqGamma.cc index 59635c5d..f53d9f85 100644 --- a/extras/Hadrons/Modules/MUtilities/TestSeqGamma.cc +++ b/extras/Hadrons/Modules/MUtilities/TestSeqGamma.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MUtilities/TestSeqGamma.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; From b61292f73570fc66df39b3122e4f201e315e9267 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 23 Apr 2018 17:36:43 +0100 Subject: [PATCH 135/267] Hadrons: recursive mkdir function --- extras/Hadrons/Global.cc | 51 +++++++++++++++++++++++++++++++++++++++ extras/Hadrons/Global.hpp | 6 ++++- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/extras/Hadrons/Global.cc b/extras/Hadrons/Global.cc index 32060460..22193770 100644 --- a/extras/Hadrons/Global.cc +++ b/extras/Hadrons/Global.cc @@ -92,3 +92,54 @@ const std::string Hadrons::resultFileExt = "h5"; #else const std::string Hadrons::resultFileExt = "xml"; #endif + +// recursive mkdir ///////////////////////////////////////////////////////////// +int Hadrons::mkdir(const std::string dirName) +{ + if (access(dirName.c_str(), R_OK|W_OK|X_OK)) + { + mode_t mode755; + char tmp[MAX_PATH_LENGTH]; + char *p = NULL; + size_t len; + + mode755 = S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH; + + snprintf(tmp, sizeof(tmp), "%s", dirName.c_str()); + len = strlen(tmp); + if(tmp[len - 1] == '/') + { + tmp[len - 1] = 0; + } + for(p = tmp + 1; *p; p++) + { + if(*p == '/') + { + *p = 0; + ::mkdir(tmp, mode755); + *p = '/'; + } + } + + return ::mkdir(tmp, mode755); + } + else + { + return 0; + } +} + +std::string Hadrons::basename(const std::string &s) +{ + constexpr char sep = '/'; + size_t i = s.rfind(sep, s.length()); + + if (i != std::string::npos) + { + return s.substr(i+1, s.length() - i); + } + else + { + return s; + } +} diff --git a/extras/Hadrons/Global.hpp b/extras/Hadrons/Global.hpp index 12b9a029..cf3a4409 100644 --- a/extras/Hadrons/Global.hpp +++ b/extras/Hadrons/Global.hpp @@ -187,8 +187,12 @@ typedef XmlWriter ResultWriter; #define RESULT_FILE_NAME(name) \ name + "." + std::to_string(vm().getTrajectory()) + "." + resultFileExt -// default Schur convention +// recursive mkdir +#define MAX_PATH_LENGTH 512u +int mkdir(const std::string dirName); +std::string basename(const std::string &s); +// default Schur convention #ifndef HADRONS_DEFAULT_SCHUR #define HADRONS_DEFAULT_SCHUR DiagTwo #endif From 2fa2b0e0b12450212f1d4aa2eb94207c4d76a40c Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 23 Apr 2018 17:57:17 +0100 Subject: [PATCH 136/267] Hadrons: Application header does not include all the modules --- extras/Hadrons/Application.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/Hadrons/Application.hpp b/extras/Hadrons/Application.hpp index 8cd15433..0254f2fc 100644 --- a/extras/Hadrons/Application.hpp +++ b/extras/Hadrons/Application.hpp @@ -31,7 +31,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include -#include +#include BEGIN_HADRONS_NAMESPACE From 6764362237233ce83ea571f35dbeca6834fc8c9b Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 23 Apr 2018 18:45:39 +0100 Subject: [PATCH 137/267] Hadrons: automatic directory creation fix --- extras/Hadrons/Global.cc | 17 ++++++++++++++++- extras/Hadrons/Global.hpp | 1 + extras/Hadrons/Module.hpp | 12 +++++++----- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/extras/Hadrons/Global.cc b/extras/Hadrons/Global.cc index 22193770..82bd8eba 100644 --- a/extras/Hadrons/Global.cc +++ b/extras/Hadrons/Global.cc @@ -96,7 +96,7 @@ const std::string Hadrons::resultFileExt = "xml"; // recursive mkdir ///////////////////////////////////////////////////////////// int Hadrons::mkdir(const std::string dirName) { - if (access(dirName.c_str(), R_OK|W_OK|X_OK)) + if (!dirName.empty() and access(dirName.c_str(), R_OK|W_OK|X_OK)) { mode_t mode755; char tmp[MAX_PATH_LENGTH]; @@ -143,3 +143,18 @@ std::string Hadrons::basename(const std::string &s) return s; } } + +std::string Hadrons::dirname(const std::string &s) +{ + constexpr char sep = '/'; + size_t i = s.rfind(sep, s.length()); + + if (i != std::string::npos) + { + return s.substr(0, i); + } + else + { + return ""; + } +} diff --git a/extras/Hadrons/Global.hpp b/extras/Hadrons/Global.hpp index cf3a4409..5e729579 100644 --- a/extras/Hadrons/Global.hpp +++ b/extras/Hadrons/Global.hpp @@ -191,6 +191,7 @@ name + "." + std::to_string(vm().getTrajectory()) + "." + resultFileExt #define MAX_PATH_LENGTH 512u int mkdir(const std::string dirName); std::string basename(const std::string &s); +std::string dirname(const std::string &s); // default Schur convention #ifndef HADRONS_DEFAULT_SCHUR diff --git a/extras/Hadrons/Module.hpp b/extras/Hadrons/Module.hpp index 9229a01c..656aacef 100644 --- a/extras/Hadrons/Module.hpp +++ b/extras/Hadrons/Module.hpp @@ -122,14 +122,16 @@ MACRO_REDIRECT(__VA_ARGS__, envTmpLat5, envTmpLat4)(__VA_ARGS__) #define saveResult(ioStem, name, result)\ if (env().getGrid()->IsBoss())\ {\ - ResultWriter _writer(RESULT_FILE_NAME(ioStem));\ - std::string _basename = basename(ioStem);\ + std::string _dirname = dirname(ioStem);\ \ - if (!mkdir(_basename))\ + if (mkdir(_dirname))\ {\ - HADRON_ERROR(Io, "cannot create directory '" + _basename + "'");\ + HADRON_ERROR(Io, "cannot create directory '" + _dirname + "'");\ + }\ + {\ + ResultWriter _writer(RESULT_FILE_NAME(ioStem));\ + write(_writer, name, result);\ }\ - write(_writer, name, result);\ } /****************************************************************************** From af84fd65bb953c553ab69771a804e54227600799 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 23 Apr 2018 22:46:17 +0100 Subject: [PATCH 138/267] Hadrons: missing dependency message improvement --- extras/Hadrons/VirtualMachine.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index a96df622..49096d92 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -306,9 +306,10 @@ void VirtualMachine::makeModuleGraph(void) if (min < 0) { - HADRON_ERROR(Definition, "object with address " - + std::to_string(in) - + " is not produced by any module"); + HADRON_ERROR(Definition, "dependency '" + + env().getObjectName(in) + "' (address " + + std::to_string(in) + + ") is not produced by any module"); } else { From 7c4533797f20c5ba1a5b3700d0c8adf5253d27a0 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 23 Apr 2018 22:46:39 +0100 Subject: [PATCH 139/267] Hadrons: scalar SU(N) EMT improvement term optional --- extras/Hadrons/Modules/MScalarSUN/EMT.hpp | 24 ++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp index 445f3445..1059c934 100644 --- a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp @@ -99,7 +99,10 @@ std::vector TEMT::getInput(void) for (unsigned int nu = mu; nu < env().getNd(); ++nu) { in.push_back(varName(par().kinetic, mu, nu)); - in.push_back(varName(par().improvement, mu, nu)); + if (!par().improvement.empty()) + { + in.push_back(varName(par().improvement, mu, nu)); + } } in.push_back(varName(par().phiPow, 2)); in.push_back(varName(par().phiPow, 4)); @@ -140,11 +143,17 @@ void TEMT::execute(void) LOG(Message) << "Computing energy-momentum tensor" << std::endl; LOG(Message) << " kinetic terms: '" << par().kinetic << "'" << std::endl; LOG(Message) << " tr(phi^n): '" << par().phiPow << "'" << std::endl; - LOG(Message) << " improvement: '" << par().improvement << "'" << std::endl; + if (!par().improvement.empty()) + { + LOG(Message) << " improvement: '" << par().improvement << "'" << std::endl; + } LOG(Message) << " m^2= " << par().m2 << std::endl; LOG(Message) << " lambda= " << par().lambda << std::endl; LOG(Message) << " g= " << par().g << std::endl; - LOG(Message) << " xi= " << par().xi << std::endl; + if (!par().improvement.empty()) + { + LOG(Message) << " xi= " << par().xi << std::endl; + } const unsigned int N = SImpl::Group::Dimension; auto &trphi2 = envGet(ComplexField, varName(par().phiPow, 2)); @@ -163,9 +172,14 @@ void TEMT::execute(void) { auto &out = envGet(ComplexField, varName(getName(), mu, nu)); auto &trkin = envGet(ComplexField, varName(par().kinetic, mu, nu)); - auto &imp = envGet(ComplexField, varName(par().improvement, mu, nu)); + + out = 2.*trkin; + if (!par().improvement.empty()) + { + auto &imp = envGet(ComplexField, varName(par().improvement, mu, nu)); - out = 2.*trkin + par().xi*imp; + out += par().xi*imp; + } if (mu == nu) { out -= sumkin + par().m2*trphi2 + par().lambda*trphi4; From b25a59e95e19e419ce487ac901c0bf1ae7717e84 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 24 Apr 2018 17:20:25 +0100 Subject: [PATCH 140/267] Hadrons: mitigation of GCC/Intel compiler bug not generating defaulted destructors --- extras/Hadrons/Modules/MAction/DWF.hpp | 2 +- extras/Hadrons/Modules/MAction/Wilson.hpp | 2 +- extras/Hadrons/Modules/MAction/WilsonClover.hpp | 2 +- extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp | 2 +- extras/Hadrons/Modules/MContraction/Baryon.hpp | 2 +- extras/Hadrons/Modules/MContraction/DiscLoop.hpp | 2 +- extras/Hadrons/Modules/MContraction/Gamma3pt.hpp | 2 +- extras/Hadrons/Modules/MContraction/Meson.hpp | 2 +- extras/Hadrons/Modules/MContraction/WardIdentity.hpp | 2 +- extras/Hadrons/Modules/MContraction/WeakHamiltonian.hpp | 2 +- extras/Hadrons/Modules/MFermion/GaugeProp.hpp | 2 +- extras/Hadrons/Modules/MGauge/FundtoHirep.hpp | 2 +- extras/Hadrons/Modules/MGauge/Random.hpp | 2 +- extras/Hadrons/Modules/MGauge/StochEm.hpp | 2 +- extras/Hadrons/Modules/MGauge/Unit.hpp | 2 +- extras/Hadrons/Modules/MIO/LoadBinary.hpp | 2 +- extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp | 2 +- extras/Hadrons/Modules/MIO/LoadEigenPack.hpp | 2 +- extras/Hadrons/Modules/MIO/LoadNersc.hpp | 2 +- extras/Hadrons/Modules/MLoop/NoiseLoop.hpp | 2 +- extras/Hadrons/Modules/MScalar/ChargedProp.hpp | 2 +- extras/Hadrons/Modules/MScalar/FreeProp.hpp | 2 +- extras/Hadrons/Modules/MScalarSUN/Div.hpp | 2 +- extras/Hadrons/Modules/MScalarSUN/EMT.hpp | 2 +- extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp | 4 ++-- extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp | 2 +- extras/Hadrons/Modules/MScalarSUN/TrMag.hpp | 2 +- extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp | 2 +- extras/Hadrons/Modules/MScalarSUN/TransProj.hpp | 2 +- extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp | 2 +- extras/Hadrons/Modules/MSink/Point.hpp | 2 +- extras/Hadrons/Modules/MSink/Smear.hpp | 2 +- extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp | 2 +- extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 2 +- extras/Hadrons/Modules/MSource/Point.hpp | 2 +- extras/Hadrons/Modules/MSource/SeqConserved.hpp | 2 +- extras/Hadrons/Modules/MSource/SeqGamma.hpp | 2 +- extras/Hadrons/Modules/MSource/Wall.hpp | 2 +- extras/Hadrons/Modules/MSource/Z2.hpp | 2 +- extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp | 2 +- extras/Hadrons/Modules/MUtilities/TestSeqGamma.hpp | 2 +- 41 files changed, 42 insertions(+), 42 deletions(-) diff --git a/extras/Hadrons/Modules/MAction/DWF.hpp b/extras/Hadrons/Modules/MAction/DWF.hpp index 6be35a8a..f0dda4b0 100644 --- a/extras/Hadrons/Modules/MAction/DWF.hpp +++ b/extras/Hadrons/Modules/MAction/DWF.hpp @@ -61,7 +61,7 @@ public: // constructor TDWF(const std::string name); // destructor - virtual ~TDWF(void) = default; + virtual ~TDWF(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MAction/Wilson.hpp b/extras/Hadrons/Modules/MAction/Wilson.hpp index 5508b6b8..1a119571 100644 --- a/extras/Hadrons/Modules/MAction/Wilson.hpp +++ b/extras/Hadrons/Modules/MAction/Wilson.hpp @@ -59,7 +59,7 @@ public: // constructor TWilson(const std::string name); // destructor - virtual ~TWilson(void) = default; + virtual ~TWilson(void) {}; // dependencies/products virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MAction/WilsonClover.hpp b/extras/Hadrons/Modules/MAction/WilsonClover.hpp index a93a0136..ead3accc 100644 --- a/extras/Hadrons/Modules/MAction/WilsonClover.hpp +++ b/extras/Hadrons/Modules/MAction/WilsonClover.hpp @@ -64,7 +64,7 @@ public: // constructor TWilsonClover(const std::string name); // destructor - virtual ~TWilsonClover(void) = default; + virtual ~TWilsonClover(void) {}; // dependencies/products virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp b/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp index 58a6bb1a..52e65322 100644 --- a/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp +++ b/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp @@ -62,7 +62,7 @@ public: // constructor TZMobiusDWF(const std::string name); // destructor - virtual ~TZMobiusDWF(void) = default; + virtual ~TZMobiusDWF(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MContraction/Baryon.hpp b/extras/Hadrons/Modules/MContraction/Baryon.hpp index 87691e7b..654706c6 100644 --- a/extras/Hadrons/Modules/MContraction/Baryon.hpp +++ b/extras/Hadrons/Modules/MContraction/Baryon.hpp @@ -68,7 +68,7 @@ public: // constructor TBaryon(const std::string name); // destructor - virtual ~TBaryon(void) = default; + virtual ~TBaryon(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MContraction/DiscLoop.hpp b/extras/Hadrons/Modules/MContraction/DiscLoop.hpp index 1c872f0a..ea3d3d2f 100644 --- a/extras/Hadrons/Modules/MContraction/DiscLoop.hpp +++ b/extras/Hadrons/Modules/MContraction/DiscLoop.hpp @@ -65,7 +65,7 @@ public: // constructor TDiscLoop(const std::string name); // destructor - virtual ~TDiscLoop(void) = default; + virtual ~TDiscLoop(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MContraction/Gamma3pt.hpp b/extras/Hadrons/Modules/MContraction/Gamma3pt.hpp index 2b4b88a7..e30845bc 100644 --- a/extras/Hadrons/Modules/MContraction/Gamma3pt.hpp +++ b/extras/Hadrons/Modules/MContraction/Gamma3pt.hpp @@ -96,7 +96,7 @@ public: // constructor TGamma3pt(const std::string name); // destructor - virtual ~TGamma3pt(void) = default; + virtual ~TGamma3pt(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MContraction/Meson.hpp b/extras/Hadrons/Modules/MContraction/Meson.hpp index f75e55dc..036247e2 100644 --- a/extras/Hadrons/Modules/MContraction/Meson.hpp +++ b/extras/Hadrons/Modules/MContraction/Meson.hpp @@ -90,7 +90,7 @@ public: // constructor TMeson(const std::string name); // destructor - virtual ~TMeson(void) = default; + virtual ~TMeson(void) {}; // dependencies/products virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MContraction/WardIdentity.hpp b/extras/Hadrons/Modules/MContraction/WardIdentity.hpp index 3b9a1449..f1ca6c2b 100644 --- a/extras/Hadrons/Modules/MContraction/WardIdentity.hpp +++ b/extras/Hadrons/Modules/MContraction/WardIdentity.hpp @@ -71,7 +71,7 @@ public: // constructor TWardIdentity(const std::string name); // destructor - virtual ~TWardIdentity(void) = default; + virtual ~TWardIdentity(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MContraction/WeakHamiltonian.hpp b/extras/Hadrons/Modules/MContraction/WeakHamiltonian.hpp index 84edc366..507e8cdb 100644 --- a/extras/Hadrons/Modules/MContraction/WeakHamiltonian.hpp +++ b/extras/Hadrons/Modules/MContraction/WeakHamiltonian.hpp @@ -97,7 +97,7 @@ public:\ /* constructor */ \ T##modname(const std::string name);\ /* destructor */ \ - virtual ~T##modname(void) = default;\ + virtual ~T##modname(void) {};\ /* dependency relation */ \ virtual std::vector getInput(void);\ virtual std::vector getOutput(void);\ diff --git a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp index e85acecb..9a359427 100644 --- a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp +++ b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp @@ -81,7 +81,7 @@ public: // constructor TGaugeProp(const std::string name); // destructor - virtual ~TGaugeProp(void) = default; + virtual ~TGaugeProp(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp b/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp index 07274544..3a3a83e5 100644 --- a/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp +++ b/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp @@ -55,7 +55,7 @@ public: // constructor TFundtoHirep(const std::string name); // destructor - virtual ~TFundtoHirep(void) = default; + virtual ~TFundtoHirep(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MGauge/Random.hpp b/extras/Hadrons/Modules/MGauge/Random.hpp index ddc81fc1..13d0e478 100644 --- a/extras/Hadrons/Modules/MGauge/Random.hpp +++ b/extras/Hadrons/Modules/MGauge/Random.hpp @@ -46,7 +46,7 @@ public: // constructor TRandom(const std::string name); // destructor - virtual ~TRandom(void) = default; + virtual ~TRandom(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MGauge/StochEm.hpp b/extras/Hadrons/Modules/MGauge/StochEm.hpp index aa7fa51f..a933afab 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.hpp +++ b/extras/Hadrons/Modules/MGauge/StochEm.hpp @@ -57,7 +57,7 @@ public: // constructor TStochEm(const std::string name); // destructor - virtual ~TStochEm(void) = default; + virtual ~TStochEm(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MGauge/Unit.hpp b/extras/Hadrons/Modules/MGauge/Unit.hpp index bd0faa25..8bdb7ef3 100644 --- a/extras/Hadrons/Modules/MGauge/Unit.hpp +++ b/extras/Hadrons/Modules/MGauge/Unit.hpp @@ -46,7 +46,7 @@ public: // constructor TUnit(const std::string name); // destructor - virtual ~TUnit(void) = default; + virtual ~TUnit(void) {}; // dependencies/products virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MIO/LoadBinary.hpp b/extras/Hadrons/Modules/MIO/LoadBinary.hpp index f14be5fb..b2070bef 100644 --- a/extras/Hadrons/Modules/MIO/LoadBinary.hpp +++ b/extras/Hadrons/Modules/MIO/LoadBinary.hpp @@ -61,7 +61,7 @@ public: // constructor TLoadBinary(const std::string name); // destructor - virtual ~TLoadBinary(void) = default; + virtual ~TLoadBinary(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp b/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp index 609e5ed4..6661f3cc 100644 --- a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp +++ b/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp @@ -63,7 +63,7 @@ public: // constructor TLoadCoarseEigenPack(const std::string name); // destructor - virtual ~TLoadCoarseEigenPack(void) = default; + virtual ~TLoadCoarseEigenPack(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp b/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp index 8a3b40e7..a95bc51e 100644 --- a/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp +++ b/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp @@ -58,7 +58,7 @@ public: // constructor TLoadEigenPack(const std::string name); // destructor - virtual ~TLoadEigenPack(void) = default; + virtual ~TLoadEigenPack(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MIO/LoadNersc.hpp b/extras/Hadrons/Modules/MIO/LoadNersc.hpp index 309edad2..11b86eec 100644 --- a/extras/Hadrons/Modules/MIO/LoadNersc.hpp +++ b/extras/Hadrons/Modules/MIO/LoadNersc.hpp @@ -52,7 +52,7 @@ public: // constructor TLoadNersc(const std::string name); // destructor - virtual ~TLoadNersc(void) = default; + virtual ~TLoadNersc(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MLoop/NoiseLoop.hpp b/extras/Hadrons/Modules/MLoop/NoiseLoop.hpp index 588c63da..3ce9353d 100644 --- a/extras/Hadrons/Modules/MLoop/NoiseLoop.hpp +++ b/extras/Hadrons/Modules/MLoop/NoiseLoop.hpp @@ -71,7 +71,7 @@ public: // constructor TNoiseLoop(const std::string name); // destructor - virtual ~TNoiseLoop(void) = default; + virtual ~TNoiseLoop(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp index 72a40cad..549d6154 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp @@ -60,7 +60,7 @@ public: // constructor TChargedProp(const std::string name); // destructor - virtual ~TChargedProp(void) = default; + virtual ~TChargedProp(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MScalar/FreeProp.hpp b/extras/Hadrons/Modules/MScalar/FreeProp.hpp index bf7823e6..50f4ba52 100644 --- a/extras/Hadrons/Modules/MScalar/FreeProp.hpp +++ b/extras/Hadrons/Modules/MScalar/FreeProp.hpp @@ -56,7 +56,7 @@ public: // constructor TFreeProp(const std::string name); // destructor - virtual ~TFreeProp(void) = default; + virtual ~TFreeProp(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MScalarSUN/Div.hpp b/extras/Hadrons/Modules/MScalarSUN/Div.hpp index 9b30866c..4382eb9f 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Div.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/Div.hpp @@ -66,7 +66,7 @@ public: // constructor TDiv(const std::string name); // destructor - virtual ~TDiv(void) = default; + virtual ~TDiv(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp index 1059c934..fbc9c62a 100644 --- a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp @@ -64,7 +64,7 @@ public: // constructor TEMT(const std::string name); // destructor - virtual ~TEMT(void) = default; + virtual ~TEMT(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp index 41b8c553..979a340e 100644 --- a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp @@ -69,7 +69,7 @@ public: // constructor TShiftProbe(const std::string name); // destructor - virtual ~TShiftProbe(void) = default; + virtual ~TShiftProbe(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); @@ -159,7 +159,7 @@ void TShiftProbe::execute(void) acc *= Cshift(phi, shift[i].first, shift[i].second); } } - probe = sign*trace(acc); + probe = real(sign*trace(acc)); } END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp index e448b61e..a8c7f521 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp @@ -66,7 +66,7 @@ public: // constructor TTrKinetic(const std::string name); // destructor - virtual ~TTrKinetic(void) = default; + virtual ~TTrKinetic(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp b/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp index efadc16f..ed1a629a 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp @@ -66,7 +66,7 @@ public: // constructor TTrMag(const std::string name); // destructor - virtual ~TTrMag(void) = default; + virtual ~TTrMag(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp b/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp index 3f43a7b1..a61c00bc 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp @@ -66,7 +66,7 @@ public: // constructor TTrPhi(const std::string name); // destructor - virtual ~TTrPhi(void) = default; + virtual ~TTrPhi(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp b/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp index b525b053..6c6502fc 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp @@ -66,7 +66,7 @@ public: // constructor TTransProj(const std::string name); // destructor - virtual ~TTransProj(void) = default; + virtual ~TTransProj(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp index e50e23d7..27edf370 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp @@ -70,7 +70,7 @@ public: // constructor TTwoPoint(const std::string name); // destructor - virtual ~TTwoPoint(void) = default; + virtual ~TTwoPoint(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MSink/Point.hpp b/extras/Hadrons/Modules/MSink/Point.hpp index a4a28b97..7617ee78 100644 --- a/extras/Hadrons/Modules/MSink/Point.hpp +++ b/extras/Hadrons/Modules/MSink/Point.hpp @@ -59,7 +59,7 @@ public: // constructor TPoint(const std::string name); // destructor - virtual ~TPoint(void) = default; + virtual ~TPoint(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MSink/Smear.hpp b/extras/Hadrons/Modules/MSink/Smear.hpp index 82a21a80..1a46c693 100644 --- a/extras/Hadrons/Modules/MSink/Smear.hpp +++ b/extras/Hadrons/Modules/MSink/Smear.hpp @@ -59,7 +59,7 @@ public: // constructor TSmear(const std::string name); // destructor - virtual ~TSmear(void) = default; + virtual ~TSmear(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index 4695d8e2..b4bad7b5 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -69,7 +69,7 @@ public: // constructor TLocalCoherenceLanczos(const std::string name); // destructor - virtual ~TLocalCoherenceLanczos(void) = default; + virtual ~TLocalCoherenceLanczos(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index e241161f..f559c4eb 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -67,7 +67,7 @@ public: // constructor TRBPrecCG(const std::string name); // destructor - virtual ~TRBPrecCG(void) = default; + virtual ~TRBPrecCG(void) {}; // dependencies/products virtual std::vector getInput(void); virtual std::vector getReference(void); diff --git a/extras/Hadrons/Modules/MSource/Point.hpp b/extras/Hadrons/Modules/MSource/Point.hpp index 50297a8b..0898a1a8 100644 --- a/extras/Hadrons/Modules/MSource/Point.hpp +++ b/extras/Hadrons/Modules/MSource/Point.hpp @@ -68,7 +68,7 @@ public: // constructor TPoint(const std::string name); // destructor - virtual ~TPoint(void) = default; + virtual ~TPoint(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MSource/SeqConserved.hpp b/extras/Hadrons/Modules/MSource/SeqConserved.hpp index a5d21995..ce9cd4e6 100644 --- a/extras/Hadrons/Modules/MSource/SeqConserved.hpp +++ b/extras/Hadrons/Modules/MSource/SeqConserved.hpp @@ -89,7 +89,7 @@ public: // constructor TSeqConserved(const std::string name); // destructor - virtual ~TSeqConserved(void) = default; + virtual ~TSeqConserved(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MSource/SeqGamma.hpp b/extras/Hadrons/Modules/MSource/SeqGamma.hpp index 9d99b5b3..4fe4dd76 100644 --- a/extras/Hadrons/Modules/MSource/SeqGamma.hpp +++ b/extras/Hadrons/Modules/MSource/SeqGamma.hpp @@ -76,7 +76,7 @@ public: // constructor TSeqGamma(const std::string name); // destructor - virtual ~TSeqGamma(void) = default; + virtual ~TSeqGamma(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MSource/Wall.hpp b/extras/Hadrons/Modules/MSource/Wall.hpp index 9494e739..f8bec19e 100644 --- a/extras/Hadrons/Modules/MSource/Wall.hpp +++ b/extras/Hadrons/Modules/MSource/Wall.hpp @@ -70,7 +70,7 @@ public: // constructor TWall(const std::string name); // destructor - virtual ~TWall(void) = default; + virtual ~TWall(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MSource/Z2.hpp b/extras/Hadrons/Modules/MSource/Z2.hpp index 065d5fdf..cecff8b0 100644 --- a/extras/Hadrons/Modules/MSource/Z2.hpp +++ b/extras/Hadrons/Modules/MSource/Z2.hpp @@ -71,7 +71,7 @@ public: // constructor TZ2(const std::string name); // destructor - virtual ~TZ2(void) = default; + virtual ~TZ2(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp b/extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp index bf2370eb..dcd1ba9a 100644 --- a/extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp +++ b/extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp @@ -77,7 +77,7 @@ public: // constructor TTestSeqConserved(const std::string name); // destructor - virtual ~TTestSeqConserved(void) = default; + virtual ~TTestSeqConserved(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/MUtilities/TestSeqGamma.hpp b/extras/Hadrons/Modules/MUtilities/TestSeqGamma.hpp index 9284a638..6f2665e4 100644 --- a/extras/Hadrons/Modules/MUtilities/TestSeqGamma.hpp +++ b/extras/Hadrons/Modules/MUtilities/TestSeqGamma.hpp @@ -61,7 +61,7 @@ public: // constructor TTestSeqGamma(const std::string name); // destructor - virtual ~TTestSeqGamma(void) = default; + virtual ~TTestSeqGamma(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); From 325c73d0513968b00fdc28c67f1e5e572c50d847 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 24 Apr 2018 17:55:08 +0100 Subject: [PATCH 141/267] Hadrons: module template update --- .../Modules/templates/Module.cc.template | 39 --------- .../Modules/templates/Module.hpp.template | 40 --------- .../templates/Module_in_NS.hpp.template | 2 +- .../Modules/templates/Module_tmp.hpp.template | 81 ------------------- .../templates/Module_tmp_in_NS.cc.template | 7 ++ .../templates/Module_tmp_in_NS.hpp.template | 2 +- extras/Hadrons/add_module.sh | 35 +++----- extras/Hadrons/add_module_template.sh | 32 +++----- 8 files changed, 35 insertions(+), 203 deletions(-) delete mode 100644 extras/Hadrons/Modules/templates/Module.cc.template delete mode 100644 extras/Hadrons/Modules/templates/Module.hpp.template delete mode 100644 extras/Hadrons/Modules/templates/Module_tmp.hpp.template create mode 100644 extras/Hadrons/Modules/templates/Module_tmp_in_NS.cc.template diff --git a/extras/Hadrons/Modules/templates/Module.cc.template b/extras/Hadrons/Modules/templates/Module.cc.template deleted file mode 100644 index 0c509d6d..00000000 --- a/extras/Hadrons/Modules/templates/Module.cc.template +++ /dev/null @@ -1,39 +0,0 @@ -#include - -using namespace Grid; -using namespace Hadrons; - -/****************************************************************************** -* T___FILEBASENAME___ implementation * -******************************************************************************/ -// constructor ///////////////////////////////////////////////////////////////// -T___FILEBASENAME___::T___FILEBASENAME___(const std::string name) -: Module<___FILEBASENAME___Par>(name) -{} - -// dependencies/products /////////////////////////////////////////////////////// -std::vector T___FILEBASENAME___::getInput(void) -{ - std::vector in; - - return in; -} - -std::vector T___FILEBASENAME___::getOutput(void) -{ - std::vector out = {getName()}; - - return out; -} - -// setup /////////////////////////////////////////////////////////////////////// -void T___FILEBASENAME___::setup(void) -{ - -} - -// execution /////////////////////////////////////////////////////////////////// -void T___FILEBASENAME___::execute(void) -{ - -} diff --git a/extras/Hadrons/Modules/templates/Module.hpp.template b/extras/Hadrons/Modules/templates/Module.hpp.template deleted file mode 100644 index fb43260f..00000000 --- a/extras/Hadrons/Modules/templates/Module.hpp.template +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef Hadrons____FILEBASENAME____hpp_ -#define Hadrons____FILEBASENAME____hpp_ - -#include -#include -#include - -BEGIN_HADRONS_NAMESPACE - -/****************************************************************************** - * ___FILEBASENAME___ * - ******************************************************************************/ -class ___FILEBASENAME___Par: Serializable -{ -public: - GRID_SERIALIZABLE_CLASS_MEMBERS(___FILEBASENAME___Par, - unsigned int, i); -}; - -class T___FILEBASENAME___: public Module<___FILEBASENAME___Par> -{ -public: - // constructor - T___FILEBASENAME___(const std::string name); - // destructor - virtual ~T___FILEBASENAME___(void) = default; - // dependency relation - virtual std::vector getInput(void); - virtual std::vector getOutput(void); - // setup - virtual void setup(void); - // execution - virtual void execute(void); -}; - -MODULE_REGISTER(___FILEBASENAME___, T___FILEBASENAME___); - -END_HADRONS_NAMESPACE - -#endif // Hadrons____FILEBASENAME____hpp_ diff --git a/extras/Hadrons/Modules/templates/Module_in_NS.hpp.template b/extras/Hadrons/Modules/templates/Module_in_NS.hpp.template index f645d046..b34568c2 100644 --- a/extras/Hadrons/Modules/templates/Module_in_NS.hpp.template +++ b/extras/Hadrons/Modules/templates/Module_in_NS.hpp.template @@ -25,7 +25,7 @@ public: // constructor T___FILEBASENAME___(const std::string name); // destructor - virtual ~T___FILEBASENAME___(void) = default; + virtual ~T___FILEBASENAME___(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/Modules/templates/Module_tmp.hpp.template b/extras/Hadrons/Modules/templates/Module_tmp.hpp.template deleted file mode 100644 index 2ee053a9..00000000 --- a/extras/Hadrons/Modules/templates/Module_tmp.hpp.template +++ /dev/null @@ -1,81 +0,0 @@ -#ifndef Hadrons____FILEBASENAME____hpp_ -#define Hadrons____FILEBASENAME____hpp_ - -#include -#include -#include - -BEGIN_HADRONS_NAMESPACE - -/****************************************************************************** - * ___FILEBASENAME___ * - ******************************************************************************/ -class ___FILEBASENAME___Par: Serializable -{ -public: - GRID_SERIALIZABLE_CLASS_MEMBERS(___FILEBASENAME___Par, - unsigned int, i); -}; - -template -class T___FILEBASENAME___: public Module<___FILEBASENAME___Par> -{ -public: - // constructor - T___FILEBASENAME___(const std::string name); - // destructor - virtual ~T___FILEBASENAME___(void) = default; - // dependency relation - virtual std::vector getInput(void); - virtual std::vector getOutput(void); - // setup - virtual void setup(void); - // execution - virtual void execute(void); -}; - -MODULE_REGISTER(___FILEBASENAME___, T___FILEBASENAME___); - -/****************************************************************************** - * T___FILEBASENAME___ implementation * - ******************************************************************************/ -// constructor ///////////////////////////////////////////////////////////////// -template -T___FILEBASENAME___::T___FILEBASENAME___(const std::string name) -: Module<___FILEBASENAME___Par>(name) -{} - -// dependencies/products /////////////////////////////////////////////////////// -template -std::vector T___FILEBASENAME___::getInput(void) -{ - std::vector in; - - return in; -} - -template -std::vector T___FILEBASENAME___::getOutput(void) -{ - std::vector out = {getName()}; - - return out; -} - -// setup /////////////////////////////////////////////////////////////////////// -template -void T___FILEBASENAME___::setup(void) -{ - -} - -// execution /////////////////////////////////////////////////////////////////// -template -void T___FILEBASENAME___::execute(void) -{ - -} - -END_HADRONS_NAMESPACE - -#endif // Hadrons____FILEBASENAME____hpp_ diff --git a/extras/Hadrons/Modules/templates/Module_tmp_in_NS.cc.template b/extras/Hadrons/Modules/templates/Module_tmp_in_NS.cc.template new file mode 100644 index 00000000..8dfafcf8 --- /dev/null +++ b/extras/Hadrons/Modules/templates/Module_tmp_in_NS.cc.template @@ -0,0 +1,7 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace ___NAMESPACE___; + +template class Grid::Hadrons::___NAMESPACE___::T___FILEBASENAME___; diff --git a/extras/Hadrons/Modules/templates/Module_tmp_in_NS.hpp.template b/extras/Hadrons/Modules/templates/Module_tmp_in_NS.hpp.template index 48df254b..5a05a498 100644 --- a/extras/Hadrons/Modules/templates/Module_tmp_in_NS.hpp.template +++ b/extras/Hadrons/Modules/templates/Module_tmp_in_NS.hpp.template @@ -26,7 +26,7 @@ public: // constructor T___FILEBASENAME___(const std::string name); // destructor - virtual ~T___FILEBASENAME___(void) = default; + virtual ~T___FILEBASENAME___(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); diff --git a/extras/Hadrons/add_module.sh b/extras/Hadrons/add_module.sh index d5d23ea4..e37d19b1 100755 --- a/extras/Hadrons/add_module.sh +++ b/extras/Hadrons/add_module.sh @@ -1,31 +1,22 @@ #!/usr/bin/env bash -if (( $# != 1 && $# != 2)); then - echo "usage: `basename $0` []" 1>&2 +if (( $# != 2 )); then + echo "usage: `basename $0` " 1>&2 exit 1 fi NAME=$1 NS=$2 -if (( $# == 1 )); then - if [ -e "Modules/${NAME}.cc" ] || [ -e "Modules/${NAME}.hpp" ]; then - echo "error: files Modules/${NAME}.* already exists" 1>&2 - exit 1 - fi - sed "s/___FILEBASENAME___/${NAME}/g" Modules/templates/Module.cc.template > Modules/${NAME}.cc - sed "s/___FILEBASENAME___/${NAME}/g" Modules/templates/Module.hpp.template > Modules/${NAME}.hpp -elif (( $# == 2 )); then - mkdir -p Modules/${NS} - if [ -e "Modules/${NS}/${NAME}.cc" ] || [ -e "Modules/${NS}/${NAME}.hpp" ]; then - echo "error: files Modules/${NS}/${NAME}.* already exists" 1>&2 - exit 1 - fi - TMPCC=".${NS}.${NAME}.tmp.cc" - TMPHPP=".${NS}.${NAME}.tmp.hpp" - sed "s/___FILEBASENAME___/${NAME}/g" Modules/templates/Module_in_NS.cc.template > ${TMPCC} - sed "s/___FILEBASENAME___/${NAME}/g" Modules/templates/Module_in_NS.hpp.template > ${TMPHPP} - sed "s/___NAMESPACE___/${NS}/g" ${TMPCC} > Modules/${NS}/${NAME}.cc - sed "s/___NAMESPACE___/${NS}/g" ${TMPHPP} > Modules/${NS}/${NAME}.hpp - rm -f ${TMPCC} ${TMPHPP} +mkdir -p Modules/${NS} +if [ -e "Modules/${NS}/${NAME}.cc" ] || [ -e "Modules/${NS}/${NAME}.hpp" ]; then + echo "error: files Modules/${NS}/${NAME}.* already exists" 1>&2 + exit 1 fi +TMPCC=".${NS}.${NAME}.tmp.cc" +TMPHPP=".${NS}.${NAME}.tmp.hpp" +sed "s/___FILEBASENAME___/${NAME}/g" Modules/templates/Module_in_NS.cc.template > ${TMPCC} +sed "s/___FILEBASENAME___/${NAME}/g" Modules/templates/Module_in_NS.hpp.template > ${TMPHPP} +sed "s/___NAMESPACE___/${NS}/g" ${TMPCC} > Modules/${NS}/${NAME}.cc +sed "s/___NAMESPACE___/${NS}/g" ${TMPHPP} > Modules/${NS}/${NAME}.hpp +rm -f ${TMPCC} ${TMPHPP} ./make_module_list.sh diff --git a/extras/Hadrons/add_module_template.sh b/extras/Hadrons/add_module_template.sh index 0069fcea..8ba112dd 100755 --- a/extras/Hadrons/add_module_template.sh +++ b/extras/Hadrons/add_module_template.sh @@ -1,28 +1,22 @@ #!/usr/bin/env bash -if (( $# != 1 && $# != 2)); then - echo "usage: `basename $0` []" 1>&2 +if (( $# != 2)); then + echo "usage: `basename $0` " 1>&2 exit 1 fi NAME=$1 NS=$2 -if (( $# == 1 )); then - if [ -e "Modules/${NAME}.cc" ] || [ -e "Modules/${NAME}.hpp" ]; then - echo "error: files Modules/${NAME}.* already exists" 1>&2 - exit 1 - fi - sed "s/___FILEBASENAME___/${NAME}/g" Modules/templates/Module_tmp.hpp.template > Modules/${NAME}.hpp -elif (( $# == 2 )); then - mkdir -p Modules/${NS} - if [ -e "Modules/${NS}/${NAME}.cc" ] || [ -e "Modules/${NS}/${NAME}.hpp" ]; then - echo "error: files Modules/${NS}/${NAME}.* already exists" 1>&2 - exit 1 - fi - TMPCC=".${NS}.${NAME}.tmp.cc" - TMPHPP=".${NS}.${NAME}.tmp.hpp" - sed "s/___FILEBASENAME___/${NAME}/g" Modules/templates/Module_tmp_in_NS.hpp.template > ${TMPHPP} - sed "s/___NAMESPACE___/${NS}/g" ${TMPHPP} > Modules/${NS}/${NAME}.hpp - rm -f ${TMPCC} ${TMPHPP} +mkdir -p Modules/${NS} +if [ -e "Modules/${NS}/${NAME}.cc" ] || [ -e "Modules/${NS}/${NAME}.hpp" ]; then + echo "error: files Modules/${NS}/${NAME}.* already exists" 1>&2 + exit 1 fi +TMPCC=".${NS}.${NAME}.tmp.cc" +TMPHPP=".${NS}.${NAME}.tmp.hpp" +sed "s/___FILEBASENAME___/${NAME}/g" Modules/templates/Module_tmp_in_NS.cc.template > ${TMPCC} +sed "s/___FILEBASENAME___/${NAME}/g" Modules/templates/Module_tmp_in_NS.hpp.template > ${TMPHPP} +sed "s/___NAMESPACE___/${NS}/g" ${TMPCC} > Modules/${NS}/${NAME}.cc +sed "s/___NAMESPACE___/${NS}/g" ${TMPHPP} > Modules/${NS}/${NAME}.hpp +rm -f ${TMPCC} ${TMPHPP} ./make_module_list.sh From 75113e6523bf5a5687c27c826a8b8e892722a84a Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 24 Apr 2018 19:49:27 +0100 Subject: [PATCH 142/267] Hadrons: Scalar SU(N) variable name update --- extras/Hadrons/Modules/MScalarSUN/Utils.hpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/extras/Hadrons/Modules/MScalarSUN/Utils.hpp b/extras/Hadrons/Modules/MScalarSUN/Utils.hpp index 1a17282a..b9e49715 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Utils.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/Utils.hpp @@ -89,15 +89,20 @@ inline void dmuAcc(Field &out, const Field &in, const unsigned int mu, const Dif } } +inline std::string varName(const std::string name, const std::string suf) +{ + return name + "_" + suf; +} + inline std::string varName(const std::string name, const unsigned int mu) { - return name + "_" + std::to_string(mu); + return varName(name, std::to_string(mu)); } inline std::string varName(const std::string name, const unsigned int mu, const unsigned int nu) { - return name + "_" + std::to_string(mu) + "_" + std::to_string(nu); + return varName(name, std::to_string(mu) + "_" + std::to_string(nu)); } END_MODULE_NAMESPACE From a13106da0cb40469cfecb281ee619186bf7f95fc Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 24 Apr 2018 19:49:51 +0100 Subject: [PATCH 143/267] Hadrons: scalar SU(N) gradient --- extras/Hadrons/Modules.hpp | 1 + extras/Hadrons/Modules/MScalarSUN/Grad.cc | 38 +++++ extras/Hadrons/Modules/MScalarSUN/Grad.hpp | 165 +++++++++++++++++++++ extras/Hadrons/modules.inc | 2 + 4 files changed, 206 insertions(+) create mode 100644 extras/Hadrons/Modules/MScalarSUN/Grad.cc create mode 100644 extras/Hadrons/Modules/MScalarSUN/Grad.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 528faecd..fc536393 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -69,6 +69,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MScalarSUN/Grad.cc b/extras/Hadrons/Modules/MScalarSUN/Grad.cc new file mode 100644 index 00000000..be03b4a7 --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/Grad.cc @@ -0,0 +1,38 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/Grad.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MScalarSUN; + +template class Grid::Hadrons::MScalarSUN::TGrad>; +template class Grid::Hadrons::MScalarSUN::TGrad>; +template class Grid::Hadrons::MScalarSUN::TGrad>; +template class Grid::Hadrons::MScalarSUN::TGrad>; +template class Grid::Hadrons::MScalarSUN::TGrad>; diff --git a/extras/Hadrons/Modules/MScalarSUN/Grad.hpp b/extras/Hadrons/Modules/MScalarSUN/Grad.hpp new file mode 100644 index 00000000..7718fbf2 --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/Grad.hpp @@ -0,0 +1,165 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/Grad.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ +#ifndef Hadrons_MScalarSUN_Grad_hpp_ +#define Hadrons_MScalarSUN_Grad_hpp_ + +#include +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * Gradient of a complex field * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MScalarSUN) + +class GradPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(GradPar, + std::string, op, + DiffType, type, + std::string, output); +}; + +template +class TGrad: public Module +{ +public: + typedef typename SImpl::Field Field; + typedef typename SImpl::ComplexField ComplexField; + class Result: Serializable + { + public: + GRID_SERIALIZABLE_CLASS_MEMBERS(Result, + DiffType, type, + Complex, value); + }; +public: + // constructor + TGrad(const std::string name); + // destructor + virtual ~TGrad(void) {}; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER_TMP(GradSU2, TGrad>, MScalarSUN); +MODULE_REGISTER_TMP(GradSU3, TGrad>, MScalarSUN); +MODULE_REGISTER_TMP(GradSU4, TGrad>, MScalarSUN); +MODULE_REGISTER_TMP(GradSU5, TGrad>, MScalarSUN); +MODULE_REGISTER_TMP(GradSU6, TGrad>, MScalarSUN); + +/****************************************************************************** + * TGrad implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TGrad::TGrad(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TGrad::getInput(void) +{ + std::vector in = {par().op}; + + return in; +} + +template +std::vector TGrad::getOutput(void) +{ + std::vector out; + const auto nd = env().getNd(); + + for (unsigned int mu = 0; mu < nd; ++mu) + { + out.push_back(varName(getName(), mu)); + } + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TGrad::setup(void) +{ + const auto nd = env().getNd(); + + for (unsigned int mu = 0; mu < nd; ++mu) + { + envCreateLat(ComplexField, varName(getName(), mu)); + } +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TGrad::execute(void) +{ + const auto nd = env().getNd(); + + LOG(Message) << "Computing the " << par().type << " gradient of '" + << par().op << "'" << std::endl; + + std::vector result; + auto &op = envGet(ComplexField, par().op); + + for (unsigned int mu = 0; mu < nd; ++mu) + { + auto &der = envGet(ComplexField, varName(getName(), mu)); + + dmu(der, op, mu, par().type); + if (!par().output.empty()) + { + Result r; + + r.type = par().type; + r.value = TensorRemove(sum(der)); + result.push_back(r); + } + } + if (result.size() > 0) + { + saveResult(par().output, "grad", result); + } +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MScalarSUN_Grad_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index ec954bbe..ad3a8727 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -31,6 +31,7 @@ modules_cc =\ Modules/MAction/WilsonClover.cc \ Modules/MAction/DWF.cc \ Modules/MScalarSUN/TrPhi.cc \ + Modules/MScalarSUN/Grad.cc \ Modules/MScalarSUN/TrMag.cc \ Modules/MScalarSUN/TrKinetic.cc \ Modules/MScalarSUN/EMT.cc \ @@ -85,6 +86,7 @@ modules_hpp =\ Modules/MScalarSUN/TrPhi.hpp \ Modules/MScalarSUN/Utils.hpp \ Modules/MScalarSUN/TransProj.hpp \ + Modules/MScalarSUN/Grad.hpp \ Modules/MScalarSUN/TrKinetic.hpp \ Modules/MIO/LoadEigenPack.hpp \ Modules/MIO/LoadNersc.hpp \ From 047ee4ad0bbf75e9ab728947ad3b680bac416e0c Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 24 Apr 2018 19:50:58 +0100 Subject: [PATCH 144/267] Hadrons: scalar SU(N) cleanup --- extras/Hadrons/Modules/MScalarSUN/Div.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/Hadrons/Modules/MScalarSUN/Div.hpp b/extras/Hadrons/Modules/MScalarSUN/Div.hpp index 4382eb9f..d1f6df26 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Div.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/Div.hpp @@ -126,7 +126,7 @@ void TDiv::execute(void) LOG(Message) << "Computing the " << par().type << " divergence of ["; for (unsigned int mu = 0; mu < nd; ++mu) { - std::cout << par().op[mu] << ((mu == nd - 1) ? "]" : ", "); + std::cout << "'" << par().op[mu] << ((mu == nd - 1) ? "']" : "', "); } std::cout << std::endl; From c1d0359aaa05518b9668452f73c08a3312af80d8 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 24 Apr 2018 19:51:22 +0100 Subject: [PATCH 145/267] Hadrons: scalar SU(N) kinetic term saves trace --- extras/Hadrons/Modules/MScalarSUN/EMT.hpp | 11 ++------- .../Hadrons/Modules/MScalarSUN/TrKinetic.hpp | 24 +++++++++++++++++-- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp index fbc9c62a..025b7936 100644 --- a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp @@ -104,6 +104,7 @@ std::vector TEMT::getInput(void) in.push_back(varName(par().improvement, mu, nu)); } } + in.push_back(varName(par().kinetic, "sum")); in.push_back(varName(par().phiPow, 2)); in.push_back(varName(par().phiPow, 4)); @@ -133,7 +134,6 @@ void TEMT::setup(void) { envCreateLat(ComplexField, varName(getName(), mu, nu)); } - envTmpLat(ComplexField, "sumkin"); } // execution /////////////////////////////////////////////////////////////////// @@ -158,15 +158,8 @@ void TEMT::execute(void) const unsigned int N = SImpl::Group::Dimension; auto &trphi2 = envGet(ComplexField, varName(par().phiPow, 2)); auto &trphi4 = envGet(ComplexField, varName(par().phiPow, 4)); + auto &sumkin = envGet(ComplexField, varName(par().kinetic, "sum")); - envGetTmp(ComplexField, sumkin); - sumkin = zero; - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - { - auto &trkin = envGet(ComplexField, varName(par().kinetic, mu, mu)); - - sumkin += trkin; - } for (unsigned int mu = 0; mu < env().getNd(); ++mu) for (unsigned int nu = mu; nu < env().getNd(); ++nu) { diff --git a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp index a8c7f521..59aa27b8 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp @@ -110,6 +110,7 @@ std::vector TTrKinetic::getOutput(void) { out.push_back(varName(getName(), mu, nu)); } + out.push_back(varName(getName(), "sum")); return out; } @@ -123,6 +124,7 @@ void TTrKinetic::setup(void) { envCreateLat(ComplexField, varName(getName(), mu, nu)); } + envCreateLat(ComplexField, varName(getName(), "sum")); envTmp(std::vector, "der", 1, env().getNd(), env().getGrid()); } @@ -134,9 +136,11 @@ void TTrKinetic::execute(void) << " derivative" << std::endl; std::vector result; - auto &phi = envGet(Field, par().field); + auto &phi = envGet(Field, par().field); + auto &sumkin = envGet(ComplexField, varName(getName(), "sum")); envGetTmp(std::vector, der); + sumkin = zero; for (unsigned int mu = 0; mu < env().getNd(); ++mu) { dmu(der[mu], phi, mu, par().type); @@ -147,8 +151,17 @@ void TTrKinetic::execute(void) auto &out = envGet(ComplexField, varName(getName(), mu, nu)); out = -trace(der[mu]*der[nu]); - if (!par().output.empty()) + if (mu == nu) { + sumkin += out; + } + } + if (!par().output.empty()) + { + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + for (unsigned int nu = mu; nu < env().getNd(); ++nu) + { + auto &out = envGet(ComplexField, varName(getName(), mu, nu)); Result r; r.op = "tr(d_" + std::to_string(mu) + "phi*d_" @@ -156,6 +169,13 @@ void TTrKinetic::execute(void) r.value = TensorRemove(sum(out)); result.push_back(r); } + { + Result r; + + r.op = "sum_mu tr(d_mu phi*d_mu phi)"; + r.value = TensorRemove(sum(sumkin)); + result.push_back(r); + } } if (result.size() > 0) { From 6ea2a8b7caa33456c0c50b21c9e1e63ac9fd6920 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 24 Apr 2018 19:51:47 +0100 Subject: [PATCH 146/267] Hadrons: scheduler shows starting value --- extras/Hadrons/GeneticScheduler.hpp | 4 ++-- extras/Hadrons/VirtualMachine.cc | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/extras/Hadrons/GeneticScheduler.hpp b/extras/Hadrons/GeneticScheduler.hpp index e8fcd2c2..83666402 100644 --- a/extras/Hadrons/GeneticScheduler.hpp +++ b/extras/Hadrons/GeneticScheduler.hpp @@ -58,6 +58,8 @@ public: // access const Gene & getMinSchedule(void); V getMinValue(void); + // reset population + void initPopulation(void); // breed a new generation void nextGeneration(void); // heuristic benchmarks @@ -76,8 +78,6 @@ public: return out; } private: - // evolution steps - void initPopulation(void); void doCrossover(void); void doMutation(void); // genetic operators diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index 49096d92..dffabe29 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -596,6 +596,9 @@ VirtualMachine::Program VirtualMachine::schedule(const GeneticPar &par) }; Scheduler scheduler(graph, memPeak, gpar); gen = 0; + scheduler.initPopulation(); + LOG(Iterative) << "Start: " << sizeString(scheduler.getMinValue()) + << std::endl; do { //LOG(Debug) << "Generation " << gen << ":" << std::endl; From b234784c8edf156916d54d7eeebc7bea07373d1b Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 24 Apr 2018 19:52:12 +0100 Subject: [PATCH 147/267] Hadrons: scalar SU(N) takes operator pairs now --- .../Hadrons/Modules/MScalarSUN/TwoPoint.hpp | 69 ++++++++++++------- 1 file changed, 44 insertions(+), 25 deletions(-) diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp index 27edf370..c31b1621 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp @@ -43,8 +43,9 @@ BEGIN_MODULE_NAMESPACE(MScalarSUN) class TwoPointPar: Serializable { public: + typedef std::pair OpPair; GRID_SERIALIZABLE_CLASS_MEMBERS(TwoPointPar, - std::vector, op, + std::vector, op, std::vector, mom, std::string, output); }; @@ -106,7 +107,20 @@ TTwoPoint::TTwoPoint(const std::string name) template std::vector TTwoPoint::getInput(void) { - return par().op; + std::vector in; + std::set ops; + + for (auto &p: par().op) + { + ops.insert(p.first); + ops.insert(p.second); + } + for (auto &o: ops) + { + in.push_back(o); + } + + return in; } template @@ -140,54 +154,59 @@ void TTwoPoint::setup(void) template void TTwoPoint::execute(void) { - LOG(Message) << "Computing 2-point functions for operators:" << std::endl; - for (auto &o: par().op) + LOG(Message) << "Computing 2-point functions" << std::endl; + for (auto &p: par().op) { - LOG(Message) << " '" << o << "'" << std::endl; + LOG(Message) << " <" << p.first << " " << p.second << ">" << std::endl; } - const unsigned int nd = env().getDim().size(); - const unsigned int nt = env().getDim().back(); - const unsigned int nop = par().op.size(); - const unsigned int nmom = mom_.size(); - std::vector dMask(nd, 1); - std::vector result; - std::vector> slicedOp(nop); - FFT fft(env().getGrid()); + const unsigned int nd = env().getDim().size(); + const unsigned int nt = env().getDim().back(); + const unsigned int nop = par().op.size(); + const unsigned int nmom = mom_.size(); + std::vector dMask(nd, 1); + std::set ops; + std::vector result; + std::map> slicedOp; + FFT fft(env().getGrid()); envGetTmp(ComplexField, ftBuf); dMask[nd - 1] = 0; - for (unsigned int i = 0; i < nop; ++i) + for (auto &p: par().op) { - auto &op = envGet(ComplexField, par().op[i]); + ops.insert(p.first); + ops.insert(p.second); + } + for (auto &o: ops) + { + auto &op = envGet(ComplexField, o); - slicedOp[i].resize(nmom); - LOG(Message) << "Operator '" << par().op[i] << "' FFT" << std::endl; - fft.FFT_dim_mask(ftBuf, op, dMask, FFT::forward); + slicedOp[o].resize(nmom); + LOG(Message) << "Operator '" << o << "' FFT" << std::endl; + fft.FFT_dim_mask(ftBuf, op, dMask, FFT::backward); for (unsigned int m = 0; m < nmom; ++m) { auto qt = mom_[m]; qt.resize(nd); - slicedOp[i][m].resize(nt); + slicedOp[o][m].resize(nt); for (unsigned int t = 0; t < nt; ++t) { qt[nd - 1] = t; - peekSite(slicedOp[i][m][t], ftBuf, qt); + peekSite(slicedOp[o][m][t], ftBuf, qt); } } } LOG(Message) << "Making contractions" << std::endl; for (unsigned int m = 0; m < nmom; ++m) - for (unsigned int i = 0; i < nop; ++i) - for (unsigned int j = 0; j < nop; ++j) + for (auto &p: par().op) { Result r; - r.sink = par().op[i]; - r.source = par().op[j]; + r.sink = p.first; + r.source = p.second; r.mom = mom_[m]; - r.data = makeTwoPoint(slicedOp[i][m], slicedOp[j][m]); + r.data = makeTwoPoint(slicedOp[p.first][m], slicedOp[p.second][m]); result.push_back(r); } saveResult(par().output, "twopt", result); From cc6eb51e3ea83f53f49edcb6c648570ff08717fe Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Wed, 25 Apr 2018 16:49:14 +0100 Subject: [PATCH 148/267] Hadrons: macro refactoring for library portability --- extras/Hadrons/Application.cc | 8 ++++---- extras/Hadrons/EigenPack.hpp | 2 +- extras/Hadrons/Environment.cc | 16 ++++++++-------- extras/Hadrons/Environment.hpp | 12 ++++++------ extras/Hadrons/Exceptions.hpp | 8 ++++---- extras/Hadrons/Factory.hpp | 2 +- extras/Hadrons/Global.hpp | 2 +- extras/Hadrons/Graph.hpp | 12 ++++++------ extras/Hadrons/Module.cc | 2 +- extras/Hadrons/Module.hpp | 2 +- .../Modules/MContraction/WardIdentity.hpp | 2 +- extras/Hadrons/Modules/MFermion/GaugeProp.hpp | 2 +- extras/Hadrons/Modules/MScalarSUN/Div.hpp | 2 +- extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp | 4 ++-- extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp | 2 +- extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp | 2 +- extras/Hadrons/Modules/MScalarSUN/Utils.hpp | 8 ++++---- extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 2 +- .../Modules/MUtilities/TestSeqConserved.hpp | 2 +- extras/Hadrons/VirtualMachine.cc | 14 +++++++------- extras/Hadrons/VirtualMachine.hpp | 2 +- lib/qcd/modules/Factory.h | 2 +- 22 files changed, 55 insertions(+), 55 deletions(-) diff --git a/extras/Hadrons/Application.cc b/extras/Hadrons/Application.cc index 4c7e71f2..f409d8eb 100644 --- a/extras/Hadrons/Application.cc +++ b/extras/Hadrons/Application.cc @@ -114,12 +114,12 @@ void Application::parseParameterFile(const std::string parameterFileName) setPar(par); if (!push(reader, "modules")) { - HADRON_ERROR(Parsing, "Cannot open node 'modules' in parameter file '" + HADRONS_ERROR(Parsing, "Cannot open node 'modules' in parameter file '" + parameterFileName + "'"); } if (!push(reader, "module")) { - HADRON_ERROR(Parsing, "Cannot open node 'modules/module' in parameter file '" + HADRONS_ERROR(Parsing, "Cannot open node 'modules/module' in parameter file '" + parameterFileName + "'"); } do @@ -177,7 +177,7 @@ void Application::saveSchedule(const std::string filename) if (!scheduled_) { - HADRON_ERROR(Definition, "Computation not scheduled"); + HADRONS_ERROR(Definition, "Computation not scheduled"); } for (auto address: program_) @@ -208,7 +208,7 @@ void Application::printSchedule(void) { if (!scheduled_) { - HADRON_ERROR(Definition, "Computation not scheduled"); + HADRONS_ERROR(Definition, "Computation not scheduled"); } auto peak = vm().memoryNeeded(program_); LOG(Message) << "Schedule (memory needed: " << sizeString(peak) << "):" diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index 5f403595..976fba7b 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -123,7 +123,7 @@ protected: binReader.readScidacFieldRecord(evec[k], vecRecord); if (vecRecord.index != k) { - HADRON_ERROR(Io, "Eigenvector " + std::to_string(k) + " has a" + HADRONS_ERROR(Io, "Eigenvector " + std::to_string(k) + " has a" + " wrong index (expected " + std::to_string(vecRecord.index) + ") in file '" + filename + "'"); } diff --git a/extras/Hadrons/Environment.cc b/extras/Hadrons/Environment.cc index 35bb4648..990a717e 100644 --- a/extras/Hadrons/Environment.cc +++ b/extras/Hadrons/Environment.cc @@ -35,7 +35,7 @@ using namespace QCD; using namespace Hadrons; #define ERROR_NO_ADDRESS(address)\ -HADRON_ERROR(Definition, "no object with address " + std::to_string(address)); +HADRONS_ERROR(Definition, "no object with address " + std::to_string(address)); /****************************************************************************** * Environment implementation * @@ -85,7 +85,7 @@ void Environment::createCoarseGrid(const std::vector &blockSize, coarseDim[d] = fineDim[d]/blockSize[d]; if (coarseDim[d]*blockSize[d] != fineDim[d]) { - HADRON_ERROR(Size, "Fine dimension " + std::to_string(d) + HADRONS_ERROR(Size, "Fine dimension " + std::to_string(d) + " (" + std::to_string(fineDim[d]) + ") not divisible by coarse dimension (" + std::to_string(coarseDim[d]) + ")"); @@ -96,7 +96,7 @@ void Environment::createCoarseGrid(const std::vector &blockSize, cLs = Ls/blockSize[nd]; if (cLs*blockSize[nd] != Ls) { - HADRON_ERROR(Size, "Fine Ls (" + std::to_string(Ls) + HADRONS_ERROR(Size, "Fine Ls (" + std::to_string(Ls) + ") not divisible by coarse Ls (" + std::to_string(cLs) + ")"); } @@ -128,7 +128,7 @@ GridCartesian * Environment::getGrid(const unsigned int Ls) const } catch(std::out_of_range &) { - HADRON_ERROR(Definition, "no grid with Ls= " + std::to_string(Ls)); + HADRONS_ERROR(Definition, "no grid with Ls= " + std::to_string(Ls)); } } @@ -147,7 +147,7 @@ GridRedBlackCartesian * Environment::getRbGrid(const unsigned int Ls) const } catch(std::out_of_range &) { - HADRON_ERROR(Definition, "no red-black grid with Ls= " + std::to_string(Ls)); + HADRONS_ERROR(Definition, "no red-black grid with Ls= " + std::to_string(Ls)); } } @@ -171,7 +171,7 @@ GridCartesian * Environment::getCoarseGrid( } catch(std::out_of_range &) { - HADRON_ERROR(Definition, "no coarse grid with Ls= " + std::to_string(Ls)); + HADRONS_ERROR(Definition, "no coarse grid with Ls= " + std::to_string(Ls)); } } @@ -221,7 +221,7 @@ void Environment::addObject(const std::string name, const int moduleAddress) } else { - HADRON_ERROR(Definition, "object '" + name + "' already exists"); + HADRONS_ERROR(Definition, "object '" + name + "' already exists"); } } @@ -244,7 +244,7 @@ unsigned int Environment::getObjectAddress(const std::string name) const } else { - HADRON_ERROR(Definition, "no object with name '" + name + "'"); + HADRONS_ERROR(Definition, "no object with name '" + name + "'"); } } diff --git a/extras/Hadrons/Environment.hpp b/extras/Hadrons/Environment.hpp index f624f36e..a9c3c724 100644 --- a/extras/Hadrons/Environment.hpp +++ b/extras/Hadrons/Environment.hpp @@ -245,7 +245,7 @@ void Environment::createDerivedObject(const std::string name, (object_[address].type != &typeid(B)) or (object_[address].derivedType != &typeid(T))) { - HADRON_ERROR(Definition, "object '" + name + "' already allocated"); + HADRONS_ERROR(Definition, "object '" + name + "' already allocated"); } } @@ -279,7 +279,7 @@ T * Environment::getDerivedObject(const unsigned int address) const } else { - HADRON_ERROR(Definition, "object with address " + std::to_string(address) + + HADRONS_ERROR(Definition, "object with address " + std::to_string(address) + " cannot be casted to '" + typeName(&typeid(T)) + "' (has type '" + typeName(&typeid(h->get())) + "')"); } @@ -287,20 +287,20 @@ T * Environment::getDerivedObject(const unsigned int address) const } else { - HADRON_ERROR(Definition, "object with address " + std::to_string(address) + + HADRONS_ERROR(Definition, "object with address " + std::to_string(address) + " does not have type '" + typeName(&typeid(B)) + "' (has type '" + getObjectType(address) + "')"); } } else { - HADRON_ERROR(Definition, "object with address " + std::to_string(address) + + HADRONS_ERROR(Definition, "object with address " + std::to_string(address) + " is empty"); } } else { - HADRON_ERROR(Definition, "no object with address " + std::to_string(address)); + HADRONS_ERROR(Definition, "no object with address " + std::to_string(address)); } } @@ -338,7 +338,7 @@ bool Environment::isObjectOfType(const unsigned int address) const } else { - HADRON_ERROR(Definition, "no object with address " + std::to_string(address)); + HADRONS_ERROR(Definition, "no object with address " + std::to_string(address)); } } diff --git a/extras/Hadrons/Exceptions.hpp b/extras/Hadrons/Exceptions.hpp index adf2340f..3eb1c25f 100644 --- a/extras/Hadrons/Exceptions.hpp +++ b/extras/Hadrons/Exceptions.hpp @@ -34,10 +34,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #endif -#define SRC_LOC std::string(__FUNCTION__) + " at " + std::string(__FILE__) + ":"\ - + std::to_string(__LINE__) -#define HADRON_ERROR(exc, msg)\ -throw(Exceptions::exc(msg, SRC_LOC)); +#define HADRONS_SRC_LOC std::string(__FUNCTION__) + " at " \ + + std::string(__FILE__) + ":" + std::to_string(__LINE__) +#define HADRONS_ERROR(exc, msg)\ +throw(Exceptions::exc(msg, HADRONS_SRC_LOC)); #define DECL_EXC(name, base) \ class name: public base\ diff --git a/extras/Hadrons/Factory.hpp b/extras/Hadrons/Factory.hpp index 705a639e..07516640 100644 --- a/extras/Hadrons/Factory.hpp +++ b/extras/Hadrons/Factory.hpp @@ -94,7 +94,7 @@ std::unique_ptr Factory::create(const std::string type, } catch (std::out_of_range &) { - HADRON_ERROR(Argument, "object of type '" + type + "' unknown"); + HADRONS_ERROR(Argument, "object of type '" + type + "' unknown"); } return func(name); diff --git a/extras/Hadrons/Global.hpp b/extras/Hadrons/Global.hpp index 5e729579..433dcd21 100644 --- a/extras/Hadrons/Global.hpp +++ b/extras/Hadrons/Global.hpp @@ -110,7 +110,7 @@ public: }; #define LOG(channel) std::cout << HadronsLog##channel -#define DEBUG_VAR(var) LOG(Debug) << #var << "= " << (var) << std::endl; +#define HADRONS_DEBUG_VAR(var) LOG(Debug) << #var << "= " << (var) << std::endl; extern HadronsLogger HadronsLogError; extern HadronsLogger HadronsLogWarning; diff --git a/extras/Hadrons/Graph.hpp b/extras/Hadrons/Graph.hpp index 67694aa8..ad84e7e0 100644 --- a/extras/Hadrons/Graph.hpp +++ b/extras/Hadrons/Graph.hpp @@ -184,7 +184,7 @@ void Graph::removeVertex(const T &value) } else { - HADRON_ERROR(Range, "vertex does not exists"); + HADRONS_ERROR(Range, "vertex does not exists"); } // remove all edges containing the vertex @@ -213,7 +213,7 @@ void Graph::removeEdge(const Edge &e) } else { - HADRON_ERROR(Range, "edge does not exists"); + HADRONS_ERROR(Range, "edge does not exists"); } } @@ -259,7 +259,7 @@ void Graph::mark(const T &value, const bool doMark) } else { - HADRON_ERROR(Range, "vertex does not exists"); + HADRONS_ERROR(Range, "vertex does not exists"); } } @@ -297,7 +297,7 @@ bool Graph::isMarked(const T &value) const } else { - HADRON_ERROR(Range, "vertex does not exists"); + HADRONS_ERROR(Range, "vertex does not exists"); return false; } @@ -543,7 +543,7 @@ std::vector Graph::topoSort(void) { if (tmpMarked.at(v)) { - HADRON_ERROR(Range, "cannot topologically sort a cyclic graph"); + HADRONS_ERROR(Range, "cannot topologically sort a cyclic graph"); } if (!isMarked(v)) { @@ -602,7 +602,7 @@ std::vector Graph::topoSort(Gen &gen) { if (tmpMarked.at(v)) { - HADRON_ERROR(Range, "cannot topologically sort a cyclic graph"); + HADRONS_ERROR(Range, "cannot topologically sort a cyclic graph"); } if (!isMarked(v)) { diff --git a/extras/Hadrons/Module.cc b/extras/Hadrons/Module.cc index 54978f93..faf01d5a 100644 --- a/extras/Hadrons/Module.cc +++ b/extras/Hadrons/Module.cc @@ -49,7 +49,7 @@ std::string ModuleBase::getName(void) const // get factory registration name if available std::string ModuleBase::getRegisteredName(void) { - HADRON_ERROR(Definition, "module '" + getName() + "' has no registered type" + HADRONS_ERROR(Definition, "module '" + getName() + "' has no registered type" + " in the factory"); } diff --git a/extras/Hadrons/Module.hpp b/extras/Hadrons/Module.hpp index 656aacef..7f8b7796 100644 --- a/extras/Hadrons/Module.hpp +++ b/extras/Hadrons/Module.hpp @@ -126,7 +126,7 @@ if (env().getGrid()->IsBoss())\ \ if (mkdir(_dirname))\ {\ - HADRON_ERROR(Io, "cannot create directory '" + _dirname + "'");\ + HADRONS_ERROR(Io, "cannot create directory '" + _dirname + "'");\ }\ {\ ResultWriter _writer(RESULT_FILE_NAME(ioStem));\ diff --git a/extras/Hadrons/Modules/MContraction/WardIdentity.hpp b/extras/Hadrons/Modules/MContraction/WardIdentity.hpp index f1ca6c2b..e529d7a2 100644 --- a/extras/Hadrons/Modules/MContraction/WardIdentity.hpp +++ b/extras/Hadrons/Modules/MContraction/WardIdentity.hpp @@ -119,7 +119,7 @@ void TWardIdentity::setup(void) Ls_ = env().getObjectLs(par().q); if (Ls_ != env().getObjectLs(par().action)) { - HADRON_ERROR(Size, "Ls mismatch between quark action and propagator"); + HADRONS_ERROR(Size, "Ls mismatch between quark action and propagator"); } envTmpLat(PropagatorField, "tmp"); envTmpLat(PropagatorField, "vector_WI"); diff --git a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp index 9a359427..ee21cba9 100644 --- a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp +++ b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp @@ -177,7 +177,7 @@ void TGaugeProp::execute(void) { if (Ls_ != env().getObjectLs(par().source)) { - HADRON_ERROR(Size, "Ls mismatch between quark action and source"); + HADRONS_ERROR(Size, "Ls mismatch between quark action and source"); } else { diff --git a/extras/Hadrons/Modules/MScalarSUN/Div.hpp b/extras/Hadrons/Modules/MScalarSUN/Div.hpp index d1f6df26..1b59fbed 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Div.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/Div.hpp @@ -112,7 +112,7 @@ void TDiv::setup(void) { if (par().op.size() != env().getNd()) { - HADRON_ERROR(Size, "the number of components differs from number of dimensions"); + HADRONS_ERROR(Size, "the number of components differs from number of dimensions"); } envCreateLat(ComplexField, getName()); } diff --git a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp index 979a340e..c7c0e9ee 100644 --- a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp @@ -134,14 +134,14 @@ void TShiftProbe::execute(void) shift = strToVec(par().shifts); if (shift.size() % 2 != 0) { - HADRON_ERROR(Size, "the number of shifts is odd"); + HADRONS_ERROR(Size, "the number of shifts is odd"); } sign = (shift.size() % 4 == 0) ? 1 : -1; for (auto &s: shift) { if (s.first >= env().getNd()) { - HADRON_ERROR(Size, "dimension to large for shift <" + HADRONS_ERROR(Size, "dimension to large for shift <" + std::to_string(s.first) + " " + std::to_string(s.second) + ">" ); } diff --git a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp b/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp index a61c00bc..6c1d733b 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp @@ -119,7 +119,7 @@ void TTrPhi::setup(void) { if (par().maxPow < 2) { - HADRON_ERROR(Size, "'maxPow' should be at least equal to 2"); + HADRONS_ERROR(Size, "'maxPow' should be at least equal to 2"); } envTmpLat(Field, "phi2"); envTmpLat(Field, "buf"); diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp index c31b1621..9e53553f 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp @@ -143,7 +143,7 @@ void TTwoPoint::setup(void) mom_[i] = strToVec(par().mom[i]); if (mom_[i].size() != nd - 1) { - HADRON_ERROR(Size, "momentum number of components different from " + HADRONS_ERROR(Size, "momentum number of components different from " + std::to_string(nd-1)); } } diff --git a/extras/Hadrons/Modules/MScalarSUN/Utils.hpp b/extras/Hadrons/Modules/MScalarSUN/Utils.hpp index b9e49715..37a9e137 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Utils.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/Utils.hpp @@ -44,7 +44,7 @@ inline void dmu(Field &out, const Field &in, const unsigned int mu, const DiffTy if (mu >= env.getNd()) { - HADRON_ERROR(Range, "Derivative direction out of range"); + HADRONS_ERROR(Range, "Derivative direction out of range"); } switch(type) { @@ -58,7 +58,7 @@ inline void dmu(Field &out, const Field &in, const unsigned int mu, const DiffTy out = 0.5*(Cshift(in, mu, 1) - Cshift(in, mu, -1)); break; default: - HADRON_ERROR(Argument, "Derivative type invalid"); + HADRONS_ERROR(Argument, "Derivative type invalid"); break; } } @@ -70,7 +70,7 @@ inline void dmuAcc(Field &out, const Field &in, const unsigned int mu, const Dif if (mu >= env.getNd()) { - HADRON_ERROR(Range, "Derivative direction out of range"); + HADRONS_ERROR(Range, "Derivative direction out of range"); } switch(type) { @@ -84,7 +84,7 @@ inline void dmuAcc(Field &out, const Field &in, const unsigned int mu, const Dif out += 0.5*(Cshift(in, mu, 1) - Cshift(in, mu, -1)); break; default: - HADRON_ERROR(Argument, "Derivative type invalid"); + HADRONS_ERROR(Argument, "Derivative type invalid"); break; } } diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index f559c4eb..206d44d1 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -127,7 +127,7 @@ void TRBPrecCG::setup(void) { if (par().maxIteration == 0) { - HADRON_ERROR(Argument, "zero maximum iteration"); + HADRONS_ERROR(Argument, "zero maximum iteration"); } LOG(Message) << "setting up Schur red-black preconditioned CG for" diff --git a/extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp b/extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp index dcd1ba9a..7b1bc1db 100644 --- a/extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp +++ b/extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp @@ -123,7 +123,7 @@ void TTestSeqConserved::setup(void) auto Ls = env().getObjectLs(par().q); if (Ls != env().getObjectLs(par().action)) { - HADRON_ERROR(Size, "Ls mismatch between quark action and propagator"); + HADRONS_ERROR(Size, "Ls mismatch between quark action and propagator"); } envTmpLat(PropagatorField, "tmp"); envTmpLat(LatticeComplex, "c"); diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index dffabe29..cc197ef8 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -123,7 +123,7 @@ void VirtualMachine::pushModule(VirtualMachine::ModPt &pt) else { // output already fully registered, error - HADRON_ERROR(Definition, "object '" + out + HADRONS_ERROR(Definition, "object '" + out + "' is already produced by module '" + module_[env().getObjectModule(out)].name + "' (while pushing module '" + name + "')"); @@ -158,7 +158,7 @@ void VirtualMachine::pushModule(VirtualMachine::ModPt &pt) } else { - HADRON_ERROR(Definition, "module '" + name + "' already exists"); + HADRONS_ERROR(Definition, "module '" + name + "' already exists"); } } @@ -185,7 +185,7 @@ ModuleBase * VirtualMachine::getModule(const unsigned int address) const } else { - HADRON_ERROR(Definition, "no module with address " + std::to_string(address)); + HADRONS_ERROR(Definition, "no module with address " + std::to_string(address)); } } @@ -202,7 +202,7 @@ unsigned int VirtualMachine::getModuleAddress(const std::string name) const } else { - HADRON_ERROR(Definition, "no module with name '" + name + "'"); + HADRONS_ERROR(Definition, "no module with name '" + name + "'"); } } @@ -214,7 +214,7 @@ std::string VirtualMachine::getModuleName(const unsigned int address) const } else { - HADRON_ERROR(Definition, "no module with address " + std::to_string(address)); + HADRONS_ERROR(Definition, "no module with address " + std::to_string(address)); } } @@ -226,7 +226,7 @@ std::string VirtualMachine::getModuleType(const unsigned int address) const } else { - HADRON_ERROR(Definition, "no module with address " + std::to_string(address)); + HADRONS_ERROR(Definition, "no module with address " + std::to_string(address)); } } @@ -306,7 +306,7 @@ void VirtualMachine::makeModuleGraph(void) if (min < 0) { - HADRON_ERROR(Definition, "dependency '" + HADRONS_ERROR(Definition, "dependency '" + env().getObjectName(in) + "' (address " + std::to_string(in) + ") is not produced by any module"); diff --git a/extras/Hadrons/VirtualMachine.hpp b/extras/Hadrons/VirtualMachine.hpp index 153f8d70..ccc06d63 100644 --- a/extras/Hadrons/VirtualMachine.hpp +++ b/extras/Hadrons/VirtualMachine.hpp @@ -195,7 +195,7 @@ M * VirtualMachine::getModule(const unsigned int address) const } else { - HADRON_ERROR(Definition, "module '" + module_[address].name + HADRONS_ERROR(Definition, "module '" + module_[address].name + "' does not have type " + typeid(M).name() + "(has type: " + getModuleType(address) + ")"); } diff --git a/lib/qcd/modules/Factory.h b/lib/qcd/modules/Factory.h index 66bd627e..fafa2038 100644 --- a/lib/qcd/modules/Factory.h +++ b/lib/qcd/modules/Factory.h @@ -95,7 +95,7 @@ std::unique_ptr Factory::create(const std::string type, } catch (std::out_of_range &) { - //HADRON_ERROR("object of type '" + type + "' unknown"); + //HADRONS_ERROR("object of type '" + type + "' unknown"); std::cout << GridLogError << "Error" << std::endl; std::cout << GridLogError << obj_type() << " object of name [" << type << "] unknown" << std::endl; exit(1); From d47484717e91db165f8e1d35446689dd2400e067 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 26 Apr 2018 17:32:37 +0100 Subject: [PATCH 149/267] Hadrons: scalar SU(N) result handling improvement --- extras/Hadrons/Modules/MScalarSUN/Div.hpp | 17 +++--- extras/Hadrons/Modules/MScalarSUN/EMT.hpp | 35 ++++++++++- extras/Hadrons/Modules/MScalarSUN/Grad.hpp | 35 +++++------ .../Hadrons/Modules/MScalarSUN/ShiftProbe.hpp | 24 +++++--- .../Hadrons/Modules/MScalarSUN/TrKinetic.hpp | 60 ++++++++----------- extras/Hadrons/Modules/MScalarSUN/TrMag.hpp | 21 +++---- extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp | 22 +++---- .../Hadrons/Modules/MScalarSUN/TransProj.hpp | 42 ++++++------- .../Hadrons/Modules/MScalarSUN/TwoPoint.hpp | 24 ++++---- 9 files changed, 156 insertions(+), 124 deletions(-) diff --git a/extras/Hadrons/Modules/MScalarSUN/Div.hpp b/extras/Hadrons/Modules/MScalarSUN/Div.hpp index 1b59fbed..ff26c60b 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Div.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/Div.hpp @@ -49,19 +49,20 @@ public: std::string, output); }; +class DivResult: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(DivResult, + DiffType, type, + Complex, value); +}; + template class TDiv: public Module { public: typedef typename SImpl::Field Field; typedef typename SImpl::ComplexField ComplexField; - class Result: Serializable - { - public: - GRID_SERIALIZABLE_CLASS_MEMBERS(Result, - DiffType, type, - Complex, value); - }; public: // constructor TDiv(const std::string name); @@ -139,7 +140,7 @@ void TDiv::execute(void) } if (!par().output.empty()) { - Result r; + DivResult r; r.type = par().type; r.value = TensorRemove(sum(div)); diff --git a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp index 025b7936..dbbfb6b3 100644 --- a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/EMT.hpp @@ -54,6 +54,17 @@ public: std::string, output); }; +class EMTResult: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(EMTResult, + std::vector>, value, + double, m2, + double, lambda, + double, g, + double, xi); +}; + template class TEMT: public Module { @@ -155,13 +166,22 @@ void TEMT::execute(void) LOG(Message) << " xi= " << par().xi << std::endl; } - const unsigned int N = SImpl::Group::Dimension; + const unsigned int N = SImpl::Group::Dimension, nd = env().getNd(); auto &trphi2 = envGet(ComplexField, varName(par().phiPow, 2)); auto &trphi4 = envGet(ComplexField, varName(par().phiPow, 4)); auto &sumkin = envGet(ComplexField, varName(par().kinetic, "sum")); + EMTResult result; - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - for (unsigned int nu = mu; nu < env().getNd(); ++nu) + if (!par().output.empty()) + { + result.m2 = par().m2; + result.g = par().g; + result.lambda = par().lambda; + result.xi = par().xi; + result.value.resize(nd, std::vector(nd)); + } + for (unsigned int mu = 0; mu < nd; ++mu) + for (unsigned int nu = mu; nu < nd; ++nu) { auto &out = envGet(ComplexField, varName(getName(), mu, nu)); auto &trkin = envGet(ComplexField, varName(par().kinetic, mu, nu)); @@ -178,6 +198,15 @@ void TEMT::execute(void) out -= sumkin + par().m2*trphi2 + par().lambda*trphi4; } out *= N/par().g; + if (!par().output.empty()) + { + result.value[mu][nu] = TensorRemove(sum(out)); + result.value[mu][nu] = result.value[nu][mu]; + } + } + if (!par().output.empty()) + { + saveResult(par().output, "emt", result); } } diff --git a/extras/Hadrons/Modules/MScalarSUN/Grad.hpp b/extras/Hadrons/Modules/MScalarSUN/Grad.hpp index 7718fbf2..ecf65e90 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Grad.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/Grad.hpp @@ -49,19 +49,20 @@ public: std::string, output); }; +class GradResult: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(GradResult, + DiffType, type, + std::vector, value); +}; + template class TGrad: public Module { public: typedef typename SImpl::Field Field; typedef typename SImpl::ComplexField ComplexField; - class Result: Serializable - { - public: - GRID_SERIALIZABLE_CLASS_MEMBERS(Result, - DiffType, type, - Complex, value); - }; public: // constructor TGrad(const std::string name); @@ -130,14 +131,18 @@ void TGrad::setup(void) template void TGrad::execute(void) { - const auto nd = env().getNd(); - LOG(Message) << "Computing the " << par().type << " gradient of '" << par().op << "'" << std::endl; - std::vector result; - auto &op = envGet(ComplexField, par().op); + const unsigned int nd = env().getNd(); + GradResult result; + auto &op = envGet(ComplexField, par().op); + if (!par().output.empty()) + { + result.type = par().type; + result.value.resize(nd); + } for (unsigned int mu = 0; mu < nd; ++mu) { auto &der = envGet(ComplexField, varName(getName(), mu)); @@ -145,14 +150,10 @@ void TGrad::execute(void) dmu(der, op, mu, par().type); if (!par().output.empty()) { - Result r; - - r.type = par().type; - r.value = TensorRemove(sum(der)); - result.push_back(r); + result.value[mu] = TensorRemove(sum(der)); } } - if (result.size() > 0) + if (!par().output.empty()) { saveResult(par().output, "grad", result); } diff --git a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp index c7c0e9ee..cd7c15eb 100644 --- a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp @@ -51,20 +51,20 @@ public: std::string, output); }; +class ShiftProbeResult: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(ShiftProbeResult, + std::string, shifts, + Complex, value); +}; + template class TShiftProbe: public Module { public: - typedef typename SImpl::Field Field; typedef typename SImpl::ComplexField ComplexField; - class Result: Serializable - { - public: - GRID_SERIALIZABLE_CLASS_MEMBERS(Result, - std::string, op, - Complex , value); - }; public: // constructor TShiftProbe(const std::string name); @@ -160,6 +160,14 @@ void TShiftProbe::execute(void) } } probe = real(sign*trace(acc)); + if (!par().output.empty()) + { + ShiftProbeResult r; + + r.shifts = par().shifts; + r.value = TensorRemove(sum(probe)); + saveResult(par().output, "probe", r); + } } END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp index 59aa27b8..a714daaa 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp @@ -49,19 +49,20 @@ public: std::string, output); }; +class TrKineticResult: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(TrKineticResult, + std::vector>, value, + DiffType, type); +}; + template class TTrKinetic: public Module { public: typedef typename SImpl::Field Field; typedef typename SImpl::ComplexField ComplexField; - class Result: Serializable - { - public: - GRID_SERIALIZABLE_CLASS_MEMBERS(Result, - std::string, op, - Complex , value); - }; public: // constructor TTrKinetic(const std::string name); @@ -135,18 +136,24 @@ void TTrKinetic::execute(void) LOG(Message) << "Computing tr(d_mu phi*d_nu phi) using " << par().type << " derivative" << std::endl; - std::vector result; - auto &phi = envGet(Field, par().field); - auto &sumkin = envGet(ComplexField, varName(getName(), "sum")); + const unsigned int nd = env().getNd(); + TrKineticResult result; + auto &phi = envGet(Field, par().field); + auto &sumkin = envGet(ComplexField, varName(getName(), "sum")); envGetTmp(std::vector, der); sumkin = zero; - for (unsigned int mu = 0; mu < env().getNd(); ++mu) + if (!par().output.empty()) + { + result.type = par().type; + result.value.resize(nd, std::vector(nd)); + } + for (unsigned int mu = 0; mu < nd; ++mu) { dmu(der[mu], phi, mu, par().type); } - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - for (unsigned int nu = mu; nu < env().getNd(); ++nu) + for (unsigned int mu = 0; mu < nd; ++mu) + for (unsigned int nu = mu; nu < nd; ++nu) { auto &out = envGet(ComplexField, varName(getName(), mu, nu)); @@ -155,32 +162,13 @@ void TTrKinetic::execute(void) { sumkin += out; } - } - if (!par().output.empty()) - { - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - for (unsigned int nu = mu; nu < env().getNd(); ++nu) + if (!par().output.empty()) { - auto &out = envGet(ComplexField, varName(getName(), mu, nu)); - Result r; - - r.op = "tr(d_" + std::to_string(mu) + "phi*d_" - + std::to_string(nu) + "phi)"; - r.value = TensorRemove(sum(out)); - result.push_back(r); - } - { - Result r; - - r.op = "sum_mu tr(d_mu phi*d_mu phi)"; - r.value = TensorRemove(sum(sumkin)); - result.push_back(r); + result.value[mu][nu] = TensorRemove(sum(out)); + result.value[mu][nu] = result.value[nu][mu]; } } - if (result.size() > 0) - { - saveResult(par().output, "trkinetic", result); - } + saveResult(par().output, "trkinetic", result); } END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp b/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp index ed1a629a..cdbf7e30 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp @@ -49,19 +49,20 @@ public: std::string, output); }; +class TrMagResult: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(TrMagResult, + std::string, op, + Real, value); +}; + template class TTrMag: public Module { public: typedef typename SImpl::Field Field; typedef typename SImpl::ComplexField ComplexField; - class Result: Serializable - { - public: - GRID_SERIALIZABLE_CLASS_MEMBERS(Result, - std::string, op, - Real, value); - }; public: // constructor TTrMag(const std::string name); @@ -120,8 +121,8 @@ void TTrMag::execute(void) LOG(Message) << "Computing tr(mag^n) for n even up to " << par().maxPow << std::endl; - std::vector result; - auto &phi = envGet(Field, par().field); + std::vector result; + auto &phi = envGet(Field, par().field); auto m2 = sum(phi), mn = m2; @@ -129,7 +130,7 @@ void TTrMag::execute(void) mn = 1.; for (unsigned int n = 2; n <= par().maxPow; n += 2) { - Result r; + TrMagResult r; mn = mn*m2; r.op = "tr(mag^" + std::to_string(n) + ")"; diff --git a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp b/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp index 6c1d733b..9be0a5d6 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp @@ -49,19 +49,21 @@ public: std::string, output); }; +class TrPhiResult: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(TrPhiResult, + std::string, op, + Real, value); +}; + template class TTrPhi: public Module { public: typedef typename SImpl::Field Field; typedef typename SImpl::ComplexField ComplexField; - class Result: Serializable - { - public: - GRID_SERIALIZABLE_CLASS_MEMBERS(Result, - std::string, op, - Real, value); - }; + public: // constructor TTrPhi(const std::string name); @@ -136,8 +138,8 @@ void TTrPhi::execute(void) LOG(Message) << "Computing tr(phi^n) for n even up to " << par().maxPow << std::endl; - std::vector result; - auto &phi = envGet(Field, par().field); + std::vector result; + auto &phi = envGet(Field, par().field); envGetTmp(Field, phi2); envGetTmp(Field, buf); @@ -151,7 +153,7 @@ void TTrPhi::execute(void) phin = trace(buf); if (!par().output.empty()) { - Result r; + TrPhiResult r; r.op = "tr(phi^" + std::to_string(n) + ")"; r.value = TensorRemove(sum(phin)).real(); diff --git a/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp b/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp index 6c6502fc..c9b42bf0 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp @@ -49,19 +49,20 @@ public: std::string, output); }; +class TransProjResult: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(TransProjResult, + std::vector>, value, + DiffType, type); +}; + template class TTransProj: public Module { public: typedef typename SImpl::Field Field; typedef typename SImpl::ComplexField ComplexField; - class Result: Serializable - { - public: - GRID_SERIALIZABLE_CLASS_MEMBERS(Result, - std::string, op, - Complex , value); - }; public: // constructor TTransProj(const std::string name); @@ -137,21 +138,27 @@ void TTransProj::execute(void) << par().type << " derivatives and op= '" << par().op << "'" << std::endl; - std::vector result; - auto &op = envGet(ComplexField, par().op); + const unsigned int nd = env().getNd(); + TransProjResult result; + auto &op = envGet(ComplexField, par().op); envGetTmp(ComplexField, buf1); envGetTmp(ComplexField, buf2); envGetTmp(ComplexField, lap); lap = zero; - for (unsigned int mu = 0; mu < env().getNd(); ++mu) + if (!par().output.empty()) + { + result.type = par().type; + result.value.resize(nd, std::vector(nd)); + } + for (unsigned int mu = 0; mu < nd; ++mu) { dmu(buf1, op, mu, par().type); dmu(buf2, buf1, mu, par().type); lap += buf2; } - for (unsigned int mu = 0; mu < env().getNd(); ++mu) - for (unsigned int nu = mu; nu < env().getNd(); ++nu) + for (unsigned int mu = 0; mu < nd; ++mu) + for (unsigned int nu = mu; nu < nd; ++nu) { auto &out = envGet(ComplexField, varName(getName(), mu, nu)); dmu(buf1, op, mu, par().type); @@ -163,16 +170,11 @@ void TTransProj::execute(void) } if (!par().output.empty()) { - Result r; - - r.op = "(delta_" + std::to_string(mu) + "," + std::to_string(nu) - + " d^2 - d_" + std::to_string(mu) + "*d_" - + std::to_string(nu) + ")*op"; - r.value = TensorRemove(sum(out)); - result.push_back(r); + result.value[mu][nu] = TensorRemove(sum(out)); + result.value[mu][nu] = result.value[nu][mu]; } } - if (result.size() > 0) + if (!par().output.empty()) { saveResult(par().output, "transproj", result); } diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp index 9e53553f..abca6212 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp @@ -50,6 +50,16 @@ public: std::string, output); }; +class TwoPointResult: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(TwoPointResult, + std::string, sink, + std::string, source, + std::vector, mom, + std::vector, data); +}; + template class TTwoPoint: public Module { @@ -57,16 +67,6 @@ public: typedef typename SImpl::Field Field; typedef typename SImpl::ComplexField ComplexField; typedef std::vector SlicedOp; - - class Result: Serializable - { - public: - GRID_SERIALIZABLE_CLASS_MEMBERS(Result, - std::string, sink, - std::string, source, - std::vector, mom, - std::vector, data); - }; public: // constructor TTwoPoint(const std::string name); @@ -166,7 +166,7 @@ void TTwoPoint::execute(void) const unsigned int nmom = mom_.size(); std::vector dMask(nd, 1); std::set ops; - std::vector result; + std::vector result; std::map> slicedOp; FFT fft(env().getGrid()); @@ -201,7 +201,7 @@ void TTwoPoint::execute(void) for (unsigned int m = 0; m < nmom; ++m) for (auto &p: par().op) { - Result r; + TwoPointResult r; r.sink = p.first; r.source = p.second; From edc28dcfbf0df697e78bb8718e3ad4980fe885ad Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 1 May 2018 14:02:31 +0100 Subject: [PATCH 150/267] Hadrons: scalar SU(N) 2-pt fix --- .../Hadrons/Modules/MScalarSUN/TwoPoint.hpp | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp index abca6212..1496edf9 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp @@ -64,9 +64,9 @@ template class TTwoPoint: public Module { public: - typedef typename SImpl::Field Field; - typedef typename SImpl::ComplexField ComplexField; - typedef std::vector SlicedOp; + typedef typename SImpl::Field Field; + typedef typename SImpl::ComplexField ComplexField; + typedef std::vector SlicedOp; public: // constructor TTwoPoint(const std::string name); @@ -160,18 +160,24 @@ void TTwoPoint::execute(void) LOG(Message) << " <" << p.first << " " << p.second << ">" << std::endl; } - const unsigned int nd = env().getDim().size(); - const unsigned int nt = env().getDim().back(); - const unsigned int nop = par().op.size(); - const unsigned int nmom = mom_.size(); + const unsigned int nd = env().getNd(); + const unsigned int nt = env().getDim().back(); + const unsigned int nop = par().op.size(); + const unsigned int nmom = mom_.size(); + double partVol = 1.; std::vector dMask(nd, 1); std::set ops; std::vector result; std::map> slicedOp; FFT fft(env().getGrid()); + TComplex buf; envGetTmp(ComplexField, ftBuf); dMask[nd - 1] = 0; + for (unsigned int mu = 0; mu < nd - 1; ++mu) + { + partVol *= env().getDim()[mu]; + } for (auto &p: par().op) { ops.insert(p.first); @@ -183,7 +189,7 @@ void TTwoPoint::execute(void) slicedOp[o].resize(nmom); LOG(Message) << "Operator '" << o << "' FFT" << std::endl; - fft.FFT_dim_mask(ftBuf, op, dMask, FFT::backward); + fft.FFT_dim_mask(ftBuf, op, dMask, FFT::forward); for (unsigned int m = 0; m < nmom; ++m) { auto qt = mom_[m]; @@ -193,7 +199,8 @@ void TTwoPoint::execute(void) for (unsigned int t = 0; t < nt; ++t) { qt[nd - 1] = t; - peekSite(slicedOp[o][m][t], ftBuf, qt); + peekSite(buf, ftBuf, qt); + slicedOp[o][m][t] = TensorRemove(buf)/partVol; } } } @@ -228,7 +235,7 @@ std::vector TTwoPoint::makeTwoPoint( { for (unsigned int t = 0; t < nt; ++t) { - res[dt] += TensorRemove(trace(sink[(t+dt)%nt]*adj(source[t]))); + res[dt] += sink[(t+dt)%nt]*adj(source[t]); } res[dt] *= 1./static_cast(nt); } From 04190ee7f30b181c851d40e01e1375ebee24cfc8 Mon Sep 17 00:00:00 2001 From: Vera Guelpers Date: Thu, 3 May 2018 12:31:36 +0100 Subject: [PATCH 151/267] 5D free propagator for DWF and boundary conditions for free propagators --- lib/qcd/action/fermion/DomainWallFermion.h | 55 ++++- lib/qcd/action/fermion/FermionOperator.h | 30 ++- .../fermion/OverlapWilsonCayleyTanhFermion.h | 4 +- lib/qcd/action/fermion/WilsonFermion.cc | 3 +- lib/qcd/action/fermion/WilsonFermion.h | 2 +- lib/qcd/action/fermion/WilsonFermion5D.cc | 227 +++++++++++++++++- lib/qcd/action/fermion/WilsonFermion5D.h | 5 +- tests/core/Test_fft.cc | 3 +- 8 files changed, 311 insertions(+), 18 deletions(-) diff --git a/lib/qcd/action/fermion/DomainWallFermion.h b/lib/qcd/action/fermion/DomainWallFermion.h index 72ce8f42..99f64865 100644 --- a/lib/qcd/action/fermion/DomainWallFermion.h +++ b/lib/qcd/action/fermion/DomainWallFermion.h @@ -8,6 +8,7 @@ Author: Peter Boyle Author: Peter Boyle +Author: Vera Guelpers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -42,8 +43,58 @@ namespace Grid { INHERIT_IMPL_TYPES(Impl); public: - void MomentumSpacePropagator(FermionField &out,const FermionField &in,RealD _m) { - this->MomentumSpacePropagatorHt(out,in,_m); + void FreePropagator(const FermionField &in,FermionField &out,RealD mass, std::vector twist, bool fiveD) { + FermionField in_k(in._grid); + FermionField prop_k(in._grid); + + FFT theFFT((GridCartesian *) in._grid); + + //phase for boundary condition + ComplexField coor(in._grid); + ComplexField ph(in._grid); ph = zero; + FermionField in_buf(in._grid); in_buf = zero; + Complex ci(0.0,1.0); + assert(twist.size() == Nd);//check that twist is Nd + int shift = 0; + if(fiveD) shift = 1; + for(unsigned int nu = 0; nu < Nd; nu++) + { + // Shift coordinate lattice index by 1 to account for 5th dimension. + LatticeCoordinate(coor, nu + shift); + ph = ph + twist[nu]*coor*((1./(in._grid->_fdimensions[nu+shift]))); + } + in_buf = exp((RealD)(2.0*M_PI)*ci*ph*(-1.0))*in; + + if(fiveD){//FFT only on temporal and spatial dimensions + std::vector mask(Nd+1,1); mask[0] = 0; + theFFT.FFT_dim_mask(in_k,in_buf,mask,FFT::forward); + this->MomentumSpacePropagatorHt_5d(prop_k,in_k,mass,twist); + theFFT.FFT_dim_mask(out,prop_k,mask,FFT::backward); + } + else{ + theFFT.FFT_all_dim(in_k,in,FFT::forward); + this->MomentumSpacePropagatorHt(prop_k,in_k,mass,twist); + theFFT.FFT_all_dim(out,prop_k,FFT::backward); + } + + //phase for boundary condition + out = out * exp((RealD)(2.0*M_PI)*ci*ph); + }; + + virtual void FreePropagator(const FermionField &in,FermionField &out,RealD mass,std::vector twist) { + bool fiveD = true; //5d propagator by default + FreePropagator(in,out,mass,twist,fiveD); + }; + + virtual void FreePropagator(const FermionField &in,FermionField &out,RealD mass, bool fiveD) { + std::vector twist(Nd,0.0); //default: periodic boundarys in all directions + FreePropagator(in,out,mass,twist,fiveD); + }; + + virtual void FreePropagator(const FermionField &in,FermionField &out,RealD mass) { + bool fiveD = true; //5d propagator by default + std::vector twist(Nd,0.0); //default: periodic boundarys in all directions + FreePropagator(in,out,mass,twist,fiveD); }; virtual void Instantiatable(void) {}; diff --git a/lib/qcd/action/fermion/FermionOperator.h b/lib/qcd/action/fermion/FermionOperator.h index f81c9e2c..1ef99b85 100644 --- a/lib/qcd/action/fermion/FermionOperator.h +++ b/lib/qcd/action/fermion/FermionOperator.h @@ -9,6 +9,7 @@ Author: Peter Boyle Author: Peter Boyle Author: Peter Boyle +Author: Vera Guelpers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -95,17 +96,38 @@ namespace Grid { virtual void Mdir (const FermionField &in, FermionField &out,int dir,int disp)=0; // case by case Wilson, Clover, Cayley, ContFrac, PartFrac - virtual void MomentumSpacePropagator(FermionField &out,const FermionField &in,RealD _m) { assert(0);}; + virtual void MomentumSpacePropagator(FermionField &out,const FermionField &in,RealD _m,std::vector twist) { assert(0);}; - virtual void FreePropagator(const FermionField &in,FermionField &out,RealD mass) { + virtual void FreePropagator(const FermionField &in,FermionField &out,RealD mass,std::vector twist) { FFT theFFT((GridCartesian *) in._grid); FermionField in_k(in._grid); FermionField prop_k(in._grid); - theFFT.FFT_all_dim(in_k,in,FFT::forward); - this->MomentumSpacePropagator(prop_k,in_k,mass); + //phase for boundary condition + ComplexField coor(in._grid); + ComplexField ph(in._grid); ph = zero; + FermionField in_buf(in._grid); in_buf = zero; + Complex ci(0.0,1.0); + assert(twist.size() == Nd);//check that twist is Nd + for(unsigned int nu = 0; nu < Nd; nu++) + { + LatticeCoordinate(coor, nu); + ph = ph + twist[nu]*coor*((1./(in._grid->_fdimensions[nu]))); + } + in_buf = exp((RealD)(2.0*M_PI)*ci*ph*(-1.0))*in; + + theFFT.FFT_all_dim(in_k,in_buf,FFT::forward); + this->MomentumSpacePropagator(prop_k,in_k,mass,twist); theFFT.FFT_all_dim(out,prop_k,FFT::backward); + + //phase for boundary condition + out = out * exp((RealD)(2.0*M_PI)*ci*ph); + + }; + virtual void FreePropagator(const FermionField &in,FermionField &out,RealD mass) { + std::vector twist(Nd,0.0); //default: periodic boundarys in all directions + FreePropagator(in,out,mass,twist); }; /////////////////////////////////////////////// diff --git a/lib/qcd/action/fermion/OverlapWilsonCayleyTanhFermion.h b/lib/qcd/action/fermion/OverlapWilsonCayleyTanhFermion.h index f516c5d0..fd7d74df 100644 --- a/lib/qcd/action/fermion/OverlapWilsonCayleyTanhFermion.h +++ b/lib/qcd/action/fermion/OverlapWilsonCayleyTanhFermion.h @@ -42,8 +42,8 @@ namespace Grid { INHERIT_IMPL_TYPES(Impl); public: - void MomentumSpacePropagator(FermionField &out,const FermionField &in,RealD _m) { - this->MomentumSpacePropagatorHw(out,in,_m); + void MomentumSpacePropagator(FermionField &out,const FermionField &in,RealD _m,std::vector twist) { + this->MomentumSpacePropagatorHw(out,in,_m,twist); }; // Constructors diff --git a/lib/qcd/action/fermion/WilsonFermion.cc b/lib/qcd/action/fermion/WilsonFermion.cc index 2d9cf22d..53e81c39 100644 --- a/lib/qcd/action/fermion/WilsonFermion.cc +++ b/lib/qcd/action/fermion/WilsonFermion.cc @@ -162,7 +162,7 @@ void WilsonFermion::MooeeInvDag(const FermionField &in, FermionField &out) MooeeInv(in,out); } template -void WilsonFermion::MomentumSpacePropagator(FermionField &out, const FermionField &in,RealD _m) +void WilsonFermion::MomentumSpacePropagator(FermionField &out, const FermionField &in,RealD _m,std::vector twist) { typedef typename FermionField::vector_type vector_type; typedef typename FermionField::scalar_type ScalComplex; @@ -195,6 +195,7 @@ void WilsonFermion::MomentumSpacePropagator(FermionField &out, const Fermi RealD TwoPiL = M_PI * 2.0/ latt_size[mu]; kmu = TwoPiL * kmu; + kmu = kmu + TwoPiL * one * twist[mu];//momentum for twisted boundary conditions wilson = wilson + 2.0*sin(kmu*0.5)*sin(kmu*0.5); // Wilson term diff --git a/lib/qcd/action/fermion/WilsonFermion.h b/lib/qcd/action/fermion/WilsonFermion.h index ea25ed7f..3985771c 100644 --- a/lib/qcd/action/fermion/WilsonFermion.h +++ b/lib/qcd/action/fermion/WilsonFermion.h @@ -96,7 +96,7 @@ class WilsonFermion : public WilsonKernels, public WilsonFermionStatic { virtual void MooeeInv(const FermionField &in, FermionField &out); virtual void MooeeInvDag(const FermionField &in, FermionField &out); - virtual void MomentumSpacePropagator(FermionField &out,const FermionField &in,RealD _mass) ; + virtual void MomentumSpacePropagator(FermionField &out,const FermionField &in,RealD _mass,std::vector twist) ; //////////////////////// // Derivative interface diff --git a/lib/qcd/action/fermion/WilsonFermion5D.cc b/lib/qcd/action/fermion/WilsonFermion5D.cc index 6f82aad2..6d4c6967 100644 --- a/lib/qcd/action/fermion/WilsonFermion5D.cc +++ b/lib/qcd/action/fermion/WilsonFermion5D.cc @@ -13,6 +13,7 @@ Author: Peter Boyle Author: paboyle Author: Guido Cossu Author: Andrew Lawson +Author: Vera Guelpers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -563,7 +564,221 @@ void WilsonFermion5D::DW(const FermionField &in, FermionField &out,int dag } template -void WilsonFermion5D::MomentumSpacePropagatorHt(FermionField &out,const FermionField &in, RealD mass) +void WilsonFermion5D::MomentumSpacePropagatorHt_5d(FermionField &out,const FermionField &in, RealD mass,std::vector twist) +{ + // what type LatticeComplex + GridBase *_grid = _FourDimGrid; + GridBase *_5dgrid = _FiveDimGrid; + + conformable(_5dgrid,out._grid); + + FermionField PRsource(_5dgrid); + FermionField PLsource(_5dgrid); + FermionField buf1_4d(_grid); + FermionField buf2_4d(_grid); + FermionField GR(_5dgrid); + FermionField GL(_5dgrid); + FermionField bufL_4d(_grid); + FermionField bufR_4d(_grid); + + unsigned int Ls = in._grid->_rdimensions[0]; + + typedef typename FermionField::vector_type vector_type; + typedef typename FermionField::scalar_type ScalComplex; + typedef iSinglet Tcomplex; + typedef Lattice > LatComplex; + + Gamma::Algebra Gmu [] = { + Gamma::Algebra::GammaX, + Gamma::Algebra::GammaY, + Gamma::Algebra::GammaZ, + Gamma::Algebra::GammaT + }; + + Gamma g5(Gamma::Algebra::Gamma5); + + std::vector latt_size = _grid->_fdimensions; + + LatComplex sk(_grid); sk = zero; + LatComplex sk2(_grid); sk2= zero; + LatComplex W(_grid); W= zero; + LatComplex a(_grid); a= zero; + LatComplex one (_grid); one = ScalComplex(1.0,0.0); + LatComplex cosha(_grid); + LatComplex kmu(_grid); + LatComplex Wea(_grid); + LatComplex Wema(_grid); + LatComplex sinha(_grid); + LatComplex sinhaLs(_grid); + LatComplex coshaLs(_grid); + LatComplex A(_grid); + LatComplex F(_grid); + LatComplex App(_grid); + LatComplex Amm(_grid); + LatComplex Bpp(_grid); + LatComplex Bmm(_grid); + LatComplex ABpm(_grid); //Apm=Amp=Bpm=Bmp + LatComplex signW(_grid); + + ScalComplex ci(0.0,1.0); + + for(int mu=0;mu alpha + //////////////////////////////////////////// + cosha = (one + W*W + sk) / (abs(W)*2.0); + + // FIXME Need a Lattice acosh + for(int idx=0;idx<_grid->lSites();idx++){ + std::vector lcoor(Nd); + Tcomplex cc; + RealD sgn; + _grid->LocalIndexToLocalCoor(idx,lcoor); + peekLocalSite(cc,cosha,lcoor); + assert((double)real(cc)>=1.0); + assert(fabs((double)imag(cc))<=1.0e-15); + cc = ScalComplex(::acosh(real(cc)),0.0); + pokeLocalSite(cc,a,lcoor); + } + + Wea = ( exp( a) * abs(W) ); + Wema= ( exp(-a) * abs(W) ); + sinha = 0.5*(exp( a) - exp(-a)); + sinhaLs = 0.5*(exp( a*Ls) - exp(-a*Ls)); + coshaLs = 0.5*(exp( a*Ls) + exp(-a*Ls)); + + A = one / (abs(W) * sinha * 2.0) * one / (sinhaLs * 2.0); + F = exp( a*Ls) * (one - Wea + (Wema - one) * mass*mass); + F = F + exp(-a*Ls) * (Wema - one + (one - Wea) * mass*mass); + F = F - abs(W) * sinha * 4.0 * mass; + + Bpp = (A/F) * (exp(-a*Ls*2.0) - one) * (one - Wema) * (one - mass*mass * one); + Bmm = (A/F) * (one - exp(a*Ls*2.0)) * (one - Wea) * (one - mass*mass * one); + App = (A/F) * (exp(-a*Ls*2.0) - one) * exp(-a) * (exp(-a) - abs(W)) * (one - mass*mass * one); + Amm = (A/F) * (one - exp(a*Ls*2.0)) * exp(a) * (exp(a) - abs(W)) * (one - mass*mass * one); + ABpm = (A/F) * abs(W) * sinha * 2.0 * (one + mass * coshaLs * 2.0 + mass*mass * one); + + //P+ source, P- source + PRsource = (in + g5 * in) * 0.5; + PLsource = (in - g5 * in) * 0.5; + + //calculate GR, GL + for(unsigned int ss=1;ss<=Ls;ss++) + { + bufR_4d = zero; + bufL_4d = zero; + for(unsigned int tt=1;tt<=Ls;tt++) + { + //possible sign if W<0 + if((ss+tt)%2==1) signW = abs(W)/W; + else signW = one; + + unsigned int f = (ss > tt) ? ss-tt : tt-ss; //f = abs(ss-tt) + //GR + buf1_4d = zero; + ExtractSlice(buf1_4d, PRsource, (tt-1), 0); + //G(s,t) + bufR_4d = bufR_4d + A * exp(a*Ls) * exp(-a*f) * signW * buf1_4d + A * exp(-a*Ls) * exp(a*f) * signW * buf1_4d; + //A++*exp(a(s+t)) + bufR_4d = bufR_4d + App * exp(a*ss) * exp(a*tt) * signW * buf1_4d ; + //A+-*exp(a(s-t)) + bufR_4d = bufR_4d + ABpm * exp(a*ss) * exp(-a*tt) * signW * buf1_4d ; + //A-+*exp(a(-s+t)) + bufR_4d = bufR_4d + ABpm * exp(-a*ss) * exp(a*tt) * signW * buf1_4d ; + //A--*exp(a(-s-t)) + bufR_4d = bufR_4d + Amm * exp(-a*ss) * exp(-a*tt) * signW * buf1_4d ; + + //GL + buf2_4d = zero; + ExtractSlice(buf2_4d, PLsource, (tt-1), 0); + //G(s,t) + bufL_4d = bufL_4d + A * exp(a*Ls) * exp(-a*f) * signW * buf2_4d + A * exp(-a*Ls) * exp(a*f) * signW * buf2_4d; + //B++*exp(a(s+t)) + bufL_4d = bufL_4d + Bpp * exp(a*ss) * exp(a*tt) * signW * buf2_4d ; + //B+-*exp(a(s-t)) + bufL_4d = bufL_4d + ABpm * exp(a*ss) * exp(-a*tt) * signW * buf2_4d ; + //B-+*exp(a(-s+t)) + bufL_4d = bufL_4d + ABpm * exp(-a*ss) * exp(a*tt) * signW * buf2_4d ; + //B--*exp(a(-s-t)) + bufL_4d = bufL_4d + Bmm * exp(-a*ss) * exp(-a*tt) * signW * buf2_4d ; + } + InsertSlice(bufR_4d, GR, (ss-1), 0); + InsertSlice(bufL_4d, GL, (ss-1), 0); + } + +//calculate propagator + for(unsigned int ss=1;ss<=Ls;ss++) + { + bufR_4d = zero; + bufL_4d = zero; + + //(i*gamma_mu*sin(p_mu) - W)*(GL*P- source) + buf1_4d = zero; + ExtractSlice(buf1_4d, GL, (ss-1), 0); + buf2_4d = zero; + for(int mu=0;mu +void WilsonFermion5D::MomentumSpacePropagatorHt(FermionField &out,const FermionField &in, RealD mass,std::vector twist) { // what type LatticeComplex GridBase *_grid = _FourDimGrid; @@ -606,6 +821,7 @@ void WilsonFermion5D::MomentumSpacePropagatorHt(FermionField &out,const Fe RealD TwoPiL = M_PI * 2.0/ latt_size[mu]; kmu = TwoPiL * kmu; + kmu = kmu + TwoPiL * one * twist[mu];//momentum for twisted boundary conditions sk2 = sk2 + 2.0*sin(kmu*0.5)*sin(kmu*0.5); sk = sk + sin(kmu) *sin(kmu); @@ -619,7 +835,7 @@ void WilsonFermion5D::MomentumSpacePropagatorHt(FermionField &out,const Fe //////////////////////////////////////////// // Cosh alpha -> alpha //////////////////////////////////////////// - cosha = (one + W*W + sk) / (W*2.0); + cosha = (one + W*W + sk) / (abs(W)*2.0); // FIXME Need a Lattice acosh for(int idx=0;idx<_grid->lSites();idx++){ @@ -634,8 +850,8 @@ void WilsonFermion5D::MomentumSpacePropagatorHt(FermionField &out,const Fe pokeLocalSite(cc,a,lcoor); } - Wea = ( exp( a) * W ); - Wema= ( exp(-a) * W ); + Wea = ( exp( a) * abs(W) ); + Wema= ( exp(-a) * abs(W) ); num = num + ( one - Wema ) * mass * in; denom= ( Wea - one ) + mass*mass * (one - Wema); @@ -643,7 +859,7 @@ void WilsonFermion5D::MomentumSpacePropagatorHt(FermionField &out,const Fe } template -void WilsonFermion5D::MomentumSpacePropagatorHw(FermionField &out,const FermionField &in,RealD mass) +void WilsonFermion5D::MomentumSpacePropagatorHw(FermionField &out,const FermionField &in,RealD mass,std::vector twist) { Gamma::Algebra Gmu [] = { Gamma::Algebra::GammaX, @@ -683,6 +899,7 @@ void WilsonFermion5D::MomentumSpacePropagatorHw(FermionField &out,const Fe RealD TwoPiL = M_PI * 2.0/ latt_size[mu]; kmu = TwoPiL * kmu; + kmu = kmu + TwoPiL * one * twist[mu];//momentum for twisted boundary conditions sk2 = sk2 + 2.0*sin(kmu*0.5)*sin(kmu*0.5); sk = sk + sin(kmu)*sin(kmu); diff --git a/lib/qcd/action/fermion/WilsonFermion5D.h b/lib/qcd/action/fermion/WilsonFermion5D.h index 21da4c31..d22b5d6f 100644 --- a/lib/qcd/action/fermion/WilsonFermion5D.h +++ b/lib/qcd/action/fermion/WilsonFermion5D.h @@ -118,8 +118,9 @@ namespace QCD { virtual void DhopDerivEO(GaugeField &mat,const FermionField &U,const FermionField &V,int dag); virtual void DhopDerivOE(GaugeField &mat,const FermionField &U,const FermionField &V,int dag); - void MomentumSpacePropagatorHt(FermionField &out,const FermionField &in,RealD mass) ; - void MomentumSpacePropagatorHw(FermionField &out,const FermionField &in,RealD mass) ; + void MomentumSpacePropagatorHt_5d(FermionField &out,const FermionField &in,RealD mass,std::vector twist) ; + void MomentumSpacePropagatorHt(FermionField &out,const FermionField &in,RealD mass,std::vector twist) ; + void MomentumSpacePropagatorHw(FermionField &out,const FermionField &in,RealD mass,std::vector twist) ; // Implement hopping term non-hermitian hopping term; half cb or both // Implement s-diagonal DW diff --git a/tests/core/Test_fft.cc b/tests/core/Test_fft.cc index b2336cfa..b7f9f000 100644 --- a/tests/core/Test_fft.cc +++ b/tests/core/Test_fft.cc @@ -309,7 +309,8 @@ int main (int argc, char ** argv) // Momentum space prop std::cout << " Solving by FFT and Feynman rules" < Date: Thu, 3 May 2018 12:33:20 +0100 Subject: [PATCH 152/267] FreeProp module for Hadrons --- extras/Hadrons/Modules.hpp | 1 + extras/Hadrons/Modules/MFermion/FreeProp.cc | 36 +++ extras/Hadrons/Modules/MFermion/FreeProp.hpp | 189 ++++++++++++++ extras/Hadrons/modules.inc | 2 + tests/hadrons/Test_free_prop.cc | 245 +++++++++++++++++++ 5 files changed, 473 insertions(+) create mode 100644 extras/Hadrons/Modules/MFermion/FreeProp.cc create mode 100644 extras/Hadrons/Modules/MFermion/FreeProp.hpp create mode 100644 tests/hadrons/Test_free_prop.cc diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index fc536393..2c356cfc 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -37,6 +37,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MFermion/FreeProp.cc b/extras/Hadrons/Modules/MFermion/FreeProp.cc new file mode 100644 index 00000000..b8eb0529 --- /dev/null +++ b/extras/Hadrons/Modules/MFermion/FreeProp.cc @@ -0,0 +1,36 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MFermion/FreeProp.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli +Author: Vera Guelpers + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MFermion; + +template class Grid::Hadrons::MFermion::TFreeProp; + diff --git a/extras/Hadrons/Modules/MFermion/FreeProp.hpp b/extras/Hadrons/Modules/MFermion/FreeProp.hpp new file mode 100644 index 00000000..b1038ddd --- /dev/null +++ b/extras/Hadrons/Modules/MFermion/FreeProp.hpp @@ -0,0 +1,189 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MFermion/FreeProp.hpp + +Copyright (C) 2015-2018 + +Author: Vera Guelpers + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ + + +#ifndef Hadrons_MFermion_FreeProp_hpp_ +#define Hadrons_MFermion_FreeProp_hpp_ + +#include +#include +#include + +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * FreeProp * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MFermion) + +class FreePropPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(FreePropPar, + std::string, source, + std::string, action, + double, mass, + std::string, twist); +}; + +template +class TFreeProp: public Module +{ +public: + FGS_TYPE_ALIASES(FImpl,); +public: + // constructor + TFreeProp(const std::string name); + // destructor + virtual ~TFreeProp(void) {}; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); +protected: + // setup + virtual void setup(void); + // execution + virtual void execute(void); +private: + unsigned int Ls_; +}; + +MODULE_REGISTER_TMP(FreeProp, TFreeProp, MFermion); + +/****************************************************************************** + * TFreeProp implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TFreeProp::TFreeProp(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TFreeProp::getInput(void) +{ + std::vector in = {par().source, par().action}; + + return in; +} + +template +std::vector TFreeProp::getOutput(void) +{ + std::vector out = {getName(), getName() + "_5d"}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TFreeProp::setup(void) +{ + Ls_ = env().getObjectLs(par().action); + envCreateLat(PropagatorField, getName()); + envTmpLat(FermionField, "source", Ls_); + envTmpLat(FermionField, "sol", Ls_); + envTmpLat(FermionField, "tmp"); + if (Ls_ > 1) + { + envCreateLat(PropagatorField, getName() + "_5d", Ls_); + } +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TFreeProp::execute(void) +{ + LOG(Message) << "Computing free fermion propagator '" << getName() << "'" + << std::endl; + + std::string propName = (Ls_ == 1) ? getName() : (getName() + "_5d"); + auto &prop = envGet(PropagatorField, propName); + auto &fullSrc = envGet(PropagatorField, par().source); + auto &mat = envGet(FMat, par().action); + RealD mass = par().mass; + + envGetTmp(FermionField, source); + envGetTmp(FermionField, sol); + envGetTmp(FermionField, tmp); + LOG(Message) << "Calculating a free Propagator with mass " << mass + << " using the action '" << par().action + << "' on source '" << par().source << "'" << std::endl; + for (unsigned int s = 0; s < Ns; ++s) + for (unsigned int c = 0; c < FImpl::Dimension; ++c) + { + LOG(Message) << "Calculation for spin= " << s << ", color= " << c + << std::endl; + // source conversion for 4D sources + if (!env().isObject5d(par().source)) + { + if (Ls_ == 1) + { + PropToFerm(source, fullSrc, s, c); + } + else + { + PropToFerm(tmp, fullSrc, s, c); + make_5D(tmp, source, Ls_); + } + } + // source conversion for 5D sources + else + { + if (Ls_ != env().getObjectLs(par().source)) + { + HADRONS_ERROR(Size, "Ls mismatch between quark action and source"); + } + else + { + PropToFerm(source, fullSrc, s, c); + } + } + sol = zero; + std::vector twist = strToVec(par().twist); + if(twist.size() != Nd) HADRONS_ERROR(Size, "number of twist angles does not match number of dimensions"); + mat.FreePropagator(source,sol,mass,twist); + FermToProp(prop, sol, s, c); + // create 4D propagators from 5D one if necessary + if (Ls_ > 1) + { + PropagatorField &p4d = envGet(PropagatorField, getName()); + make_4D(sol, tmp, Ls_); + FermToProp(p4d, tmp, s, c); + } + } +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MFermion_FreeProp_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index ad3a8727..69463f9d 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -7,6 +7,7 @@ modules_cc =\ Modules/MContraction/WardIdentity.cc \ Modules/MContraction/DiscLoop.cc \ Modules/MContraction/Gamma3pt.cc \ + Modules/MFermion/FreeProp.cc \ Modules/MFermion/GaugeProp.cc \ Modules/MSource/Point.cc \ Modules/MSource/Wall.cc \ @@ -54,6 +55,7 @@ modules_hpp =\ Modules/MContraction/Gamma3pt.hpp \ Modules/MContraction/WardIdentity.hpp \ Modules/MContraction/WeakHamiltonianEye.hpp \ + Modules/MFermion/FreeProp.hpp \ Modules/MFermion/GaugeProp.hpp \ Modules/MSource/SeqGamma.hpp \ Modules/MSource/Point.hpp \ diff --git a/tests/hadrons/Test_free_prop.cc b/tests/hadrons/Test_free_prop.cc new file mode 100644 index 00000000..a1a5aadd --- /dev/null +++ b/tests/hadrons/Test_free_prop.cc @@ -0,0 +1,245 @@ +/******************************************************************************* + Grid physics library, www.github.com/paboyle/Grid + + Source file: tests/hadrons/Test_free_prop.cc + + Copyright (C) 2015-2018 + + Author: Antonin Portelli + Author: Vera Guelpers + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + See the full license in the file "LICENSE" in the top level distribution + directory. + *******************************************************************************/ + +#include +#include + +using namespace Grid; +using namespace Hadrons; + +int main(int argc, char *argv[]) +{ + // initialization ////////////////////////////////////////////////////////// + Grid_init(&argc, &argv); + HadronsLogError.Active(GridLogError.isActive()); + HadronsLogWarning.Active(GridLogWarning.isActive()); + HadronsLogMessage.Active(GridLogMessage.isActive()); + HadronsLogIterative.Active(GridLogIterative.isActive()); + HadronsLogDebug.Active(GridLogDebug.isActive()); + LOG(Message) << "Grid initialized" << std::endl; + + + // run setup /////////////////////////////////////////////////////////////// + Application application; + std::vector flavour = {"h"}; //{"l", "s", "c1", "c2", "c3"}; + std::vector mass = {.2}; //{.01, .04, .2 , .25 , .3 }; + std::vector lepton_flavour = {"mu"}; + std::vector lepton_mass = {.2}; + + unsigned int nt = GridDefaultLatt()[Tp]; + + // global parameters + Application::GlobalPar globalPar; + globalPar.trajCounter.start = 1500; + globalPar.trajCounter.end = 1520; + globalPar.trajCounter.step = 20; + globalPar.seed = "1 2 3 4"; + application.setPar(globalPar); + // gauge field + application.createModule("gauge"); + // unit gauge field for lepton + application.createModule("free_gauge"); + // pt source + MSource::Point::Par ptPar; + ptPar.position = "0 0 0 0"; + application.createModule("pt", ptPar); + // sink + MSink::Point::Par sinkPar; + sinkPar.mom = "0 0 0"; + application.createModule("sink", sinkPar); + + // set fermion boundary conditions to be periodic space, antiperiodic time. + std::string boundary = "1 1 1 -1"; + + + //Propagators from FFT and Feynman rules + for (unsigned int i = 0; i < lepton_mass.size(); ++i) + { + //DWF actions + MAction::DWF::Par actionPar_lep; + actionPar_lep.gauge = "free_gauge"; + actionPar_lep.Ls = 8; + actionPar_lep.M5 = 1.8; + actionPar_lep.mass = lepton_mass[i]; + actionPar_lep.boundary = boundary; + application.createModule("free_DWF_" + lepton_flavour[i], actionPar_lep); + + //DWF free propagators + MFermion::FreeProp::Par freePar; + freePar.source = "pt"; + freePar.action = "free_DWF_" + lepton_flavour[i]; + freePar.twist = "0 0 0 0.5"; + freePar.mass = lepton_mass[i]; + application.createModule("Lpt_" + lepton_flavour[i], + freePar); + + //Wilson actions + MAction::Wilson::Par actionPar_lep_W; + actionPar_lep_W.gauge = "free_gauge"; + actionPar_lep_W.mass = lepton_mass[i]; + actionPar_lep_W.boundary = boundary; + application.createModule("free_W_" + lepton_flavour[i], actionPar_lep_W); + + //Wilson free propagators + MFermion::FreeProp::Par freePar_W; + freePar_W.source = "pt"; + freePar_W.action = "free_W_" + lepton_flavour[i]; + freePar_W.twist = "0 0 0 0.5"; + freePar_W.mass = lepton_mass[i]; + application.createModule("W_Lpt_" + lepton_flavour[i], + freePar_W); + + + } + + + + //Propagators from inversion + for (unsigned int i = 0; i < flavour.size(); ++i) + { + //DWF actions + MAction::DWF::Par actionPar; + actionPar.gauge = "gauge"; + actionPar.Ls = 8; + actionPar.M5 = 1.8; + actionPar.mass = mass[i]; + actionPar.boundary = boundary; + application.createModule("DWF_" + flavour[i], actionPar); + + // solvers + MSolver::RBPrecCG::Par solverPar; + solverPar.action = "DWF_" + flavour[i]; + solverPar.residual = 1.0e-8; + solverPar.maxIteration = 10000; + application.createModule("CG_" + flavour[i], + solverPar); + + //DWF propagators + MFermion::GaugeProp::Par quarkPar; + quarkPar.solver = "CG_" + flavour[i]; + quarkPar.source = "pt"; + application.createModule("Qpt_" + flavour[i], + quarkPar); + + + + //Wilson actions + MAction::Wilson::Par actionPar_W; + actionPar_W.gauge = "gauge"; + actionPar_W.mass = mass[i]; + actionPar_W.boundary = boundary; + application.createModule("W_" + flavour[i], actionPar_W); + + + // solvers + MSolver::RBPrecCG::Par solverPar_W; + solverPar_W.action = "W_" + flavour[i]; + solverPar_W.residual = 1.0e-8; + solverPar_W.maxIteration = 10000; + application.createModule("W_CG_" + flavour[i], + solverPar_W); + + //Wilson propagators + MFermion::GaugeProp::Par quarkPar_W; + quarkPar_W.solver = "W_CG_" + flavour[i]; + quarkPar_W.source = "pt"; + application.createModule("W_Qpt_" + flavour[i], + quarkPar_W); + + } + + + //2pt contraction for Propagators from FFT and Feynman rules + for (unsigned int i = 0; i < lepton_flavour.size(); ++i) + for (unsigned int j = i; j < lepton_flavour.size(); ++j) + { + //2pt function contraction DWF + MContraction::Meson::Par freemesPar; + freemesPar.output = "2pt_free/DWF_L_pt_" + lepton_flavour[i] + lepton_flavour[j]; + freemesPar.q1 = "Lpt_" + lepton_flavour[i]; + freemesPar.q2 = "Lpt_" + lepton_flavour[j]; + freemesPar.gammas = "(Gamma5 Gamma5)"; + freemesPar.sink = "sink"; + application.createModule("meson_L_pt_" + + lepton_flavour[i] + lepton_flavour[j], + freemesPar); + + //2pt function contraction Wilson + MContraction::Meson::Par freemesPar_W; + freemesPar_W.output = "2pt_free/W_L_pt_" + lepton_flavour[i] + lepton_flavour[j]; + freemesPar_W.q1 = "W_Lpt_" + lepton_flavour[i]; + freemesPar_W.q2 = "W_Lpt_" + lepton_flavour[j]; + freemesPar_W.gammas = "(Gamma5 Gamma5)"; + freemesPar_W.sink = "sink"; + application.createModule("W_meson_L_pt_" + + lepton_flavour[i] + lepton_flavour[j], + freemesPar_W); + + } + + //2pt contraction for Propagators from inverion + for (unsigned int i = 0; i < flavour.size(); ++i) + for (unsigned int j = i; j < flavour.size(); ++j) + { + //2pt function contraction DWF + MContraction::Meson::Par mesPar; + mesPar.output = "2pt_free/DWF_pt_" + flavour[i] + flavour[j]; + mesPar.q1 = "Qpt_" + flavour[i]; + mesPar.q2 = "Qpt_" + flavour[j]; + mesPar.gammas = "(Gamma5 Gamma5)"; + mesPar.sink = "sink"; + application.createModule("meson_pt_" + + flavour[i] + flavour[j], + mesPar); + + + //2pt function contraction Wilson + MContraction::Meson::Par mesPar_W; + mesPar_W.output = "2pt_free/W_pt_" + flavour[i] + flavour[j]; + mesPar_W.q1 = "W_Qpt_" + flavour[i]; + mesPar_W.q2 = "W_Qpt_" + flavour[j]; + mesPar_W.gammas = "(Gamma5 Gamma5)"; + mesPar_W.sink = "sink"; + application.createModule("W_meson_pt_" + + flavour[i] + flavour[j], + mesPar_W); + + } + + + + // execution + application.saveParameterFile("free_prop.xml"); + application.run(); + + // epilogue + LOG(Message) << "Grid is finalizing now" << std::endl; + Grid_finalize(); + + return EXIT_SUCCESS; +} From dd6b796a01131123274517eaca8631b3b2b5c3af Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 3 May 2018 16:19:17 +0100 Subject: [PATCH 153/267] Hadrons: scalar SU(N) volume factor fix --- extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp index 1496edf9..8ee80242 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp @@ -83,7 +83,8 @@ private: // make 2-pt function template std::vector makeTwoPoint(const std::vector &sink, - const std::vector &source); + const std::vector &source, + const double factor = 1.); private: std::vector> mom_; }; @@ -200,7 +201,7 @@ void TTwoPoint::execute(void) { qt[nd - 1] = t; peekSite(buf, ftBuf, qt); - slicedOp[o][m][t] = TensorRemove(buf)/partVol; + slicedOp[o][m][t] = TensorRemove(buf); } } } @@ -213,7 +214,8 @@ void TTwoPoint::execute(void) r.sink = p.first; r.source = p.second; r.mom = mom_[m]; - r.data = makeTwoPoint(slicedOp[p.first][m], slicedOp[p.second][m]); + r.data = makeTwoPoint(slicedOp[p.first][m], slicedOp[p.second][m], + 1./partVol); result.push_back(r); } saveResult(par().output, "twopt", result); @@ -224,7 +226,8 @@ template template std::vector TTwoPoint::makeTwoPoint( const std::vector &sink, - const std::vector &source) + const std::vector &source, + const double factor) { assert(sink.size() == source.size()); @@ -237,7 +240,7 @@ std::vector TTwoPoint::makeTwoPoint( { res[dt] += sink[(t+dt)%nt]*adj(source[t]); } - res[dt] *= 1./static_cast(nt); + res[dt] *= factor/static_cast(nt); } return res; From 9d9692d4398e78374948af4b939c9b06ba6abc6c Mon Sep 17 00:00:00 2001 From: Vera Guelpers Date: Thu, 3 May 2018 16:40:16 +0100 Subject: [PATCH 154/267] Fix double vs float in boundary phases --- lib/qcd/action/fermion/DomainWallFermion.h | 4 ++-- lib/qcd/action/fermion/FermionOperator.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/qcd/action/fermion/DomainWallFermion.h b/lib/qcd/action/fermion/DomainWallFermion.h index 99f64865..56179f26 100644 --- a/lib/qcd/action/fermion/DomainWallFermion.h +++ b/lib/qcd/action/fermion/DomainWallFermion.h @@ -63,7 +63,7 @@ namespace Grid { LatticeCoordinate(coor, nu + shift); ph = ph + twist[nu]*coor*((1./(in._grid->_fdimensions[nu+shift]))); } - in_buf = exp((RealD)(2.0*M_PI)*ci*ph*(-1.0))*in; + in_buf = exp((Real)(2.0*M_PI)*ci*ph*(-1.0))*in; if(fiveD){//FFT only on temporal and spatial dimensions std::vector mask(Nd+1,1); mask[0] = 0; @@ -78,7 +78,7 @@ namespace Grid { } //phase for boundary condition - out = out * exp((RealD)(2.0*M_PI)*ci*ph); + out = out * exp((Real)(2.0*M_PI)*ci*ph); }; virtual void FreePropagator(const FermionField &in,FermionField &out,RealD mass,std::vector twist) { diff --git a/lib/qcd/action/fermion/FermionOperator.h b/lib/qcd/action/fermion/FermionOperator.h index 1ef99b85..f39e7511 100644 --- a/lib/qcd/action/fermion/FermionOperator.h +++ b/lib/qcd/action/fermion/FermionOperator.h @@ -115,14 +115,14 @@ namespace Grid { LatticeCoordinate(coor, nu); ph = ph + twist[nu]*coor*((1./(in._grid->_fdimensions[nu]))); } - in_buf = exp((RealD)(2.0*M_PI)*ci*ph*(-1.0))*in; + in_buf = exp((Real)(2.0*M_PI)*ci*ph*(-1.0))*in; theFFT.FFT_all_dim(in_k,in_buf,FFT::forward); this->MomentumSpacePropagator(prop_k,in_k,mass,twist); theFFT.FFT_all_dim(out,prop_k,FFT::backward); //phase for boundary condition - out = out * exp((RealD)(2.0*M_PI)*ci*ph); + out = out * exp((Real)(2.0*M_PI)*ci*ph); }; virtual void FreePropagator(const FermionField &in,FermionField &out,RealD mass) { From 3252059dafed52add248b03b6277270f31bd7d8e Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 7 May 2018 17:25:36 +0100 Subject: [PATCH 155/267] Hadrons: multi-file support for eigenpacks --- extras/Hadrons/EigenPack.hpp | 246 ++++++++++++------ .../Modules/MIO/LoadCoarseEigenPack.hpp | 3 +- extras/Hadrons/Modules/MIO/LoadEigenPack.hpp | 3 +- .../Modules/MSolver/LocalCoherenceLanczos.hpp | 7 +- 4 files changed, 176 insertions(+), 83 deletions(-) diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index 976fba7b..6767e584 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -74,42 +74,47 @@ public: evec.resize(size, grid); } - virtual void read(const std::string fileStem, const int traj = -1) + virtual void read(const std::string fileStem, const bool multiFile, const int traj = -1) { - std::string evecFilename, evalFilename; - - makeFilenames(evecFilename, evalFilename, fileStem, traj); - XmlReader xmlReader(evalFilename); - LOG(Message) << "Reading " << eval.size() << " eigenvalues from '" - << evalFilename << "'" << std::endl; - Grid::read(xmlReader, "evals", eval); - basicRead(evec, evecFilename, evec.size()); + if (multiFile) + { + for(int k = 0; k < evec.size(); ++k) + { + basicReadSingle(evec[k], eval[k], evecFilename(fileStem, k, traj), k); + } + } + else + { + basicRead(evec, eval, evecFilename(fileStem, -1, traj), evec.size()); + } } - virtual void write(const std::string fileStem, const int traj = -1) + virtual void write(const std::string fileStem, const bool multiFile, const int traj = -1) { - std::string evecFilename, evalFilename; - - makeFilenames(evecFilename, evalFilename, fileStem, traj); - XmlWriter xmlWriter(evalFilename); - LOG(Message) << "Writing " << eval.size() << " eigenvalues to '" - << evalFilename << "'" << std::endl; - Grid::write(xmlWriter, "evals", eval); - basicWrite(evecFilename, evec, evec.size()); + if (multiFile) + { + for(int k = 0; k < evec.size(); ++k) + { + basicWriteSingle(evecFilename(fileStem, k, traj), evec[k], eval[k], k); + } + } + else + { + basicWrite(evecFilename(fileStem, -1, traj), evec, eval, evec.size()); + } } protected: - void makeFilenames(std::string &evecFilename, std::string &evalFilename, - const std::string stem, const int traj = -1) + std::string evecFilename(const std::string stem, const int vec, const int traj) { std::string t = (traj < 0) ? "" : ("." + std::to_string(traj)); + std::string v = (traj < 0) ? "" : (".v" + std::to_string(vec)); - evecFilename = stem + "_evec" + t + ".bin"; - evalFilename = stem + "_eval" + t + ".xml"; + return stem + "_evec" + t + v + ".bin"; } template - void basicRead(std::vector &evec, const std::string filename, - const unsigned int size) + void basicRead(std::vector &evec, std::vector &eval, + const std::string filename, const unsigned int size) { ScidacReader binReader; @@ -124,16 +129,38 @@ protected: if (vecRecord.index != k) { HADRONS_ERROR(Io, "Eigenvector " + std::to_string(k) + " has a" - + " wrong index (expected " + std::to_string(vecRecord.index) - + ") in file '" + filename + "'"); + + " wrong index (expected " + std::to_string(vecRecord.index) + + ") in file '" + filename + "'"); } + eval[k] = vecRecord.eval; } binReader.close(); } + template + void basicReadSingle(T &evec, double &eval, const std::string filename, + const unsigned int index) + { + ScidacReader binReader; + VecRecord vecRecord; + + binReader.open(filename); + binReader.skipPastObjectRecord(SCIDAC_FILE_XML); + LOG(Message) << "Reading eigenvector " << index << std::endl; + binReader.readScidacFieldRecord(evec, vecRecord); + if (vecRecord.index != index) + { + HADRONS_ERROR(Io, "Eigenvector " + std::to_string(index) + " has a" + + " wrong index (expected " + std::to_string(vecRecord.index) + + ") in file '" + filename + "'"); + } + eval = vecRecord.eval; + binReader.close(); + } + template void basicWrite(const std::string filename, std::vector &evec, - const unsigned int size) + const std::vector &eval, const unsigned int size) { ScidacWriter binWriter(evec[0]._grid->IsBoss()); XmlWriter xmlWriter("", "eigenPackPar"); @@ -153,6 +180,25 @@ protected: } binWriter.close(); } + + template + void basicWriteSingle(const std::string filename, T &evec, + const double eval, const unsigned int index) + { + ScidacWriter binWriter(evec._grid->IsBoss()); + XmlWriter xmlWriter("", "eigenPackPar"); + VecRecord vecRecord; + + xmlWriter.pushXmlString(record.operatorXml); + xmlWriter.pushXmlString(record.solverXml); + binWriter.open(filename); + binWriter.writeLimeObject(1, 1, xmlWriter, "parameters", SCIDAC_FILE_XML); + vecRecord.index = index; + vecRecord.eval = eval; + LOG(Message) << "Writing eigenvector " << index << std::endl; + binWriter.writeScidacFieldRecord(evec, vecRecord); + binWriter.close(); + } }; template @@ -181,77 +227,121 @@ public: evecCoarse.resize(sizeCoarse, gridCoarse); } - void readFine(const std::string fileStem, const int traj = -1) + void readFine(const std::string fileStem, const bool multiFile, const int traj = -1) { - std::string evecFineFilename, evalFineFilename; - std::string evecCoarseFilename, evalCoarseFilename; + // std::string evecFineFilename, evalFineFilename; + // std::string evecCoarseFilename, evalCoarseFilename; - this->makeFilenames(evecFineFilename, evalFineFilename, - fileStem + "_fine", traj); - XmlReader xmlFineReader(evalFineFilename); - LOG(Message) << "Reading " << this->eval.size() << " fine eigenvalues from '" - << evalFineFilename << "'" << std::endl; - Grid::read(xmlFineReader, "evals", this->eval); - LOG(Message) << "Reading " << this->evec.size() << " fine eigenvectors from '" - << evecFineFilename << "'" << std::endl; - this->basicRead(this->evec, evecFineFilename, this->evec.size()); + // this->makeFilenames(evecFineFilename, evalFineFilename, + // fileStem + "_fine", traj); + // XmlReader xmlFineReader(evalFineFilename); + // LOG(Message) << "Reading " << this->eval.size() << " fine eigenvalues from '" + // << evalFineFilename << "'" << std::endl; + // Grid::read(xmlFineReader, "evals", this->eval); + // LOG(Message) << "Reading " << this->evec.size() << " fine eigenvectors from '" + // << evecFineFilename << "'" << std::endl; + // this->basicRead(this->evec, evecFineFilename, this->evec.size()); + if (multiFile) + { + for(int k = 0; k < this->evec.size(); ++k) + { + this->basicReadSingle(this->evec[k], this->eval[k], this->evecFilename(fileStem + "_fine", k, traj), k); + } + } + else + { + this->basicRead(this->evec, this->eval, this->evecFilename(fileStem + "_fine", -1, traj), this->evec.size()); + } } - void readCoarse(const std::string fileStem, const int traj = -1) + void readCoarse(const std::string fileStem, const bool multiFile, const int traj = -1) { - std::string evecCoarseFilename, evalCoarseFilename; + // std::string evecCoarseFilename, evalCoarseFilename; - this->makeFilenames(evecCoarseFilename, evalCoarseFilename, - fileStem + "_coarse", traj); - XmlReader xmlCoarseReader(evalCoarseFilename); - LOG(Message) << "Reading " << evalCoarse.size() << " coarse eigenvalues from '" - << evalCoarseFilename << "'" << std::endl; - Grid::read(xmlCoarseReader, "evals", evalCoarse); - LOG(Message) << "Reading " << evecCoarse.size() << " coarse eigenvectors from '" - << evecCoarseFilename << "'" << std::endl; - this->basicRead(evecCoarse, evecCoarseFilename, evecCoarse.size()); + // this->makeFilenames(evecCoarseFilename, evalCoarseFilename, + // fileStem + "_coarse", traj); + // XmlReader xmlCoarseReader(evalCoarseFilename); + // LOG(Message) << "Reading " << evalCoarse.size() << " coarse eigenvalues from '" + // << evalCoarseFilename << "'" << std::endl; + // Grid::read(xmlCoarseReader, "evals", evalCoarse); + // LOG(Message) << "Reading " << evecCoarse.size() << " coarse eigenvectors from '" + // << evecCoarseFilename << "'" << std::endl; + // this->basicRead(evecCoarse, evecCoarseFilename, evecCoarse.size()); + if (multiFile) + { + for(int k = 0; k < evecCoarse.size(); ++k) + { + this->basicReadSingle(evecCoarse[k], evalCoarse[k], this->evecFilename(fileStem + "_coarse", k, traj), k); + } + } + else + { + this->basicRead(evecCoarse, evalCoarse, this->evecFilename(fileStem + "_coarse", -1, traj), evecCoarse.size()); + } } - virtual void read(const std::string fileStem, const int traj = -1) + virtual void read(const std::string fileStem, const bool multiFile, const int traj = -1) { - readFine(fileStem, traj); - readCoarse(fileStem, traj); + readFine(fileStem, multiFile, traj); + readCoarse(fileStem, multiFile, traj); } - void writeFine(const std::string fileStem, const int traj = -1) + void writeFine(const std::string fileStem, const bool multiFile, const int traj = -1) { - std::string evecFineFilename, evalFineFilename; + // std::string evecFineFilename, evalFineFilename; - this->makeFilenames(evecFineFilename, evalFineFilename, - fileStem + "_fine", traj); - XmlWriter xmlFineWriter(evalFineFilename); - LOG(Message) << "Writing " << this->eval.size() << " fine eigenvalues to '" - << evalFineFilename << "'" << std::endl; - Grid::write(xmlFineWriter, "evals", this->eval); - LOG(Message) << "Writing " << this->evec.size() << " fine eigenvectors to '" - << evecFineFilename << "'" << std::endl; - this->basicWrite(evecFineFilename, this->evec, this->evec.size()); + // this->makeFilenames(evecFineFilename, evalFineFilename, + // fileStem + "_fine", traj); + // XmlWriter xmlFineWriter(evalFineFilename); + // LOG(Message) << "Writing " << this->eval.size() << " fine eigenvalues to '" + // << evalFineFilename << "'" << std::endl; + // Grid::write(xmlFineWriter, "evals", this->eval); + // LOG(Message) << "Writing " << this->evec.size() << " fine eigenvectors to '" + // << evecFineFilename << "'" << std::endl; + // this->basicWrite(evecFineFilename, this->evec, this->evec.size()); + if (multiFile) + { + for(int k = 0; k < this->evec.size(); ++k) + { + this->basicWriteSingle(this->evecFilename(fileStem + "_fine", k, traj), this->evec[k], this->eval[k], k); + } + } + else + { + this->basicWrite(this->evecFilename(fileStem + "_fine", -1, traj), this->evec, this->eval, this->evec.size()); + } } - void writeCoarse(const std::string fileStem, const int traj = -1) + void writeCoarse(const std::string fileStem, const bool multiFile, const int traj = -1) { - std::string evecCoarseFilename, evalCoarseFilename; + // std::string evecCoarseFilename, evalCoarseFilename; - this->makeFilenames(evecCoarseFilename, evalCoarseFilename, - fileStem + "_coarse", traj); - XmlWriter xmlCoarseWriter(evalCoarseFilename); - LOG(Message) << "Writing " << evalCoarse.size() << " coarse eigenvalues to '" - << evalCoarseFilename << "'" << std::endl; - Grid::write(xmlCoarseWriter, "evals", evalCoarse); - LOG(Message) << "Writing " << evecCoarse.size() << " coarse eigenvectors to '" - << evecCoarseFilename << "'" << std::endl; - this->basicWrite(evecCoarseFilename, evecCoarse, evecCoarse.size()); + // this->makeFilenames(evecCoarseFilename, evalCoarseFilename, + // fileStem + "_coarse", traj); + // XmlWriter xmlCoarseWriter(evalCoarseFilename); + // LOG(Message) << "Writing " << evalCoarse.size() << " coarse eigenvalues to '" + // << evalCoarseFilename << "'" << std::endl; + // Grid::write(xmlCoarseWriter, "evals", evalCoarse); + // LOG(Message) << "Writing " << evecCoarse.size() << " coarse eigenvectors to '" + // << evecCoarseFilename << "'" << std::endl; + // this->basicWrite(evecCoarseFilename, evecCoarse, evecCoarse.size()); + if (multiFile) + { + for(int k = 0; k < evecCoarse.size(); ++k) + { + this->basicWriteSingle(this->evecFilename(fileStem + "_coarse", k, traj), evecCoarse[k], evalCoarse[k], k); + } + } + else + { + this->basicWrite(this->evecFilename(fileStem + "_coarse", -1, traj), evecCoarse, evalCoarse, evecCoarse.size()); + } } - virtual void write(const std::string fileStem, const int traj = -1) + virtual void write(const std::string fileStem, const bool multiFile, const int traj = -1) { - writeFine(fileStem, traj); - writeCoarse(fileStem, traj); + writeFine(fileStem, multiFile, traj); + writeCoarse(fileStem, multiFile, traj); } }; diff --git a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp b/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp index 6661f3cc..945b6751 100644 --- a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp +++ b/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp @@ -45,6 +45,7 @@ class LoadCoarseEigenPackPar: Serializable public: GRID_SERIALIZABLE_CLASS_MEMBERS(LoadCoarseEigenPackPar, std::string, filestem, + bool, multiFile, unsigned int, sizeFine, unsigned int, sizeCoarse, unsigned int, Ls, @@ -120,7 +121,7 @@ void TLoadCoarseEigenPack::execute(void) auto &epack = envGetDerived(BasePack, Pack, getName()); Lattice dummy(cg); - epack.read(par().filestem, vm().getTrajectory()); + epack.read(par().filestem, par().multiFile, vm().getTrajectory()); LOG(Message) << "Block Gramm-Schmidt pass 1"<< std::endl; blockOrthogonalise(dummy, epack.evec); LOG(Message) << "Block Gramm-Schmidt pass 2"<< std::endl; diff --git a/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp b/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp index a95bc51e..fcad4107 100644 --- a/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp +++ b/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp @@ -45,6 +45,7 @@ class LoadEigenPackPar: Serializable public: GRID_SERIALIZABLE_CLASS_MEMBERS(LoadEigenPackPar, std::string, filestem, + bool, multiFile, unsigned int, size, unsigned int, Ls); }; @@ -111,7 +112,7 @@ void TLoadEigenPack::execute(void) { auto &epack = envGetDerived(BasePack, Pack, getName()); - epack.read(par().filestem, vm().getTrajectory()); + epack.read(par().filestem, par().multiFile, vm().getTrajectory()); epack.eval.resize(par().size); } diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index b4bad7b5..c9088cf4 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -51,7 +51,8 @@ public: ChebyParams, smoother, RealD, coarseRelaxTol, std::string, blockSize, - std::string, output); + std::string, output, + bool, multiFile); }; template @@ -156,7 +157,7 @@ void TLocalCoherenceLanczos::execute(void) solver.testFine(finePar.resid*100.0); if (!par().output.empty()) { - epack.writeFine(par().output, vm().getTrajectory()); + epack.writeFine(par().output, par().multiFile, vm().getTrajectory()); } if (par().doCoarse) { @@ -173,7 +174,7 @@ void TLocalCoherenceLanczos::execute(void) par().coarseRelaxTol); if (!par().output.empty()) { - epack.writeCoarse(par().output, vm().getTrajectory()); + epack.writeCoarse(par().output, par().multiFile, vm().getTrajectory()); } } } From 27a4d4c951e261de26a23449919ddc6e2ff6e50e Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 7 May 2018 17:52:54 +0100 Subject: [PATCH 156/267] Hadrons: multi-file eigenpack in separate directory --- extras/Hadrons/EigenPack.hpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index 6767e584..83dccf93 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -107,9 +107,15 @@ protected: std::string evecFilename(const std::string stem, const int vec, const int traj) { std::string t = (traj < 0) ? "" : ("." + std::to_string(traj)); - std::string v = (traj < 0) ? "" : (".v" + std::to_string(vec)); - return stem + "_evec" + t + v + ".bin"; + if (vec == -1) + { + return stem + t + ".bin"; + } + else + { + return stem + t + "/v" + std::to_string(vec) + ".bin"; + } } template @@ -163,8 +169,13 @@ protected: const std::vector &eval, const unsigned int size) { ScidacWriter binWriter(evec[0]._grid->IsBoss()); - XmlWriter xmlWriter("", "eigenPackPar"); + XmlWriter xmlWriter("", "eigenPackPar"); + std::string d = dirname(filename); + if (mkdir(d)) + { + HADRONS_ERROR(Io, "cannot create directory '" + d + "'");\ + } xmlWriter.pushXmlString(record.operatorXml); xmlWriter.pushXmlString(record.solverXml); binWriter.open(filename); @@ -188,7 +199,12 @@ protected: ScidacWriter binWriter(evec._grid->IsBoss()); XmlWriter xmlWriter("", "eigenPackPar"); VecRecord vecRecord; + std::string d = dirname(filename); + if (mkdir(d)) + { + HADRONS_ERROR(Io, "cannot create directory '" + d + "'");\ + } xmlWriter.pushXmlString(record.operatorXml); xmlWriter.pushXmlString(record.solverXml); binWriter.open(filename); From 2017e4e3b4f16dda1c3ed3735925e18f7d08d52f Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 7 May 2018 18:12:22 +0100 Subject: [PATCH 157/267] Hadrons: more verbose directory creation error --- extras/Hadrons/EigenPack.hpp | 16 ++++++++++------ extras/Hadrons/Module.hpp | 6 ++++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index 83dccf93..d1f6e829 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -170,11 +170,13 @@ protected: { ScidacWriter binWriter(evec[0]._grid->IsBoss()); XmlWriter xmlWriter("", "eigenPackPar"); - std::string d = dirname(filename); + std::string d = dirname(filename); + int status = mkdir(d); - if (mkdir(d)) + if (status) { - HADRONS_ERROR(Io, "cannot create directory '" + d + "'");\ + HADRONS_ERROR(Io, "cannot create directory '" + d + + "' (status " + std::to_string(status) + ")"); } xmlWriter.pushXmlString(record.operatorXml); xmlWriter.pushXmlString(record.solverXml); @@ -199,11 +201,13 @@ protected: ScidacWriter binWriter(evec._grid->IsBoss()); XmlWriter xmlWriter("", "eigenPackPar"); VecRecord vecRecord; - std::string d = dirname(filename); + std::string d = dirname(filename); + int status = mkdir(d); - if (mkdir(d)) + if (status) { - HADRONS_ERROR(Io, "cannot create directory '" + d + "'");\ + HADRONS_ERROR(Io, "cannot create directory '" + d + + "' (status " + std::to_string(status) + ")"); } xmlWriter.pushXmlString(record.operatorXml); xmlWriter.pushXmlString(record.solverXml); diff --git a/extras/Hadrons/Module.hpp b/extras/Hadrons/Module.hpp index 7f8b7796..0fe6858d 100644 --- a/extras/Hadrons/Module.hpp +++ b/extras/Hadrons/Module.hpp @@ -123,10 +123,12 @@ MACRO_REDIRECT(__VA_ARGS__, envTmpLat5, envTmpLat4)(__VA_ARGS__) if (env().getGrid()->IsBoss())\ {\ std::string _dirname = dirname(ioStem);\ + int _status = mkdir(_dirname);\ \ - if (mkdir(_dirname))\ + if (_status)\ {\ - HADRONS_ERROR(Io, "cannot create directory '" + _dirname + "'");\ + HADRONS_ERROR(Io, "cannot create directory '" + _dirname \ + + "' (status " + std::to_string(_status) + ")");\ }\ {\ ResultWriter _writer(RESULT_FILE_NAME(ioStem));\ From f362c007393f1a920e004431deb3d4f35157d805 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 7 May 2018 19:43:40 +0100 Subject: [PATCH 158/267] Hadrons: better handling of automatic directory creation --- extras/Hadrons/EigenPack.hpp | 16 ++-------------- extras/Hadrons/Global.cc | 15 +++++++++++++++ extras/Hadrons/Global.hpp | 1 + extras/Hadrons/Module.hpp | 9 +-------- 4 files changed, 19 insertions(+), 22 deletions(-) diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index d1f6e829..fc68a5ed 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -170,14 +170,8 @@ protected: { ScidacWriter binWriter(evec[0]._grid->IsBoss()); XmlWriter xmlWriter("", "eigenPackPar"); - std::string d = dirname(filename); - int status = mkdir(d); - if (status) - { - HADRONS_ERROR(Io, "cannot create directory '" + d - + "' (status " + std::to_string(status) + ")"); - } + makeFileDir(filename, evec[0]._grid); xmlWriter.pushXmlString(record.operatorXml); xmlWriter.pushXmlString(record.solverXml); binWriter.open(filename); @@ -201,14 +195,8 @@ protected: ScidacWriter binWriter(evec._grid->IsBoss()); XmlWriter xmlWriter("", "eigenPackPar"); VecRecord vecRecord; - std::string d = dirname(filename); - int status = mkdir(d); - if (status) - { - HADRONS_ERROR(Io, "cannot create directory '" + d - + "' (status " + std::to_string(status) + ")"); - } + makeFileDir(filename, evec._grid); xmlWriter.pushXmlString(record.operatorXml); xmlWriter.pushXmlString(record.solverXml); binWriter.open(filename); diff --git a/extras/Hadrons/Global.cc b/extras/Hadrons/Global.cc index 82bd8eba..26b74a6f 100644 --- a/extras/Hadrons/Global.cc +++ b/extras/Hadrons/Global.cc @@ -158,3 +158,18 @@ std::string Hadrons::dirname(const std::string &s) return ""; } } + +void Hadrons::makeFileDir(const std::string filename, GridBase *g) +{ + if (g->IsBoss()) + { + std::string dir = dirname(filename); + int status = mkdir(dir); + + if (status) + { + HADRONS_ERROR(Io, "cannot create directory '" + dir + + "' ( " + std::strerror(errno) + ")"); + } + } +} diff --git a/extras/Hadrons/Global.hpp b/extras/Hadrons/Global.hpp index 433dcd21..bc0be474 100644 --- a/extras/Hadrons/Global.hpp +++ b/extras/Hadrons/Global.hpp @@ -192,6 +192,7 @@ name + "." + std::to_string(vm().getTrajectory()) + "." + resultFileExt int mkdir(const std::string dirName); std::string basename(const std::string &s); std::string dirname(const std::string &s); +void makeFileDir(const std::string filename, GridBase *g); // default Schur convention #ifndef HADRONS_DEFAULT_SCHUR diff --git a/extras/Hadrons/Module.hpp b/extras/Hadrons/Module.hpp index 0fe6858d..dd038a21 100644 --- a/extras/Hadrons/Module.hpp +++ b/extras/Hadrons/Module.hpp @@ -122,14 +122,7 @@ MACRO_REDIRECT(__VA_ARGS__, envTmpLat5, envTmpLat4)(__VA_ARGS__) #define saveResult(ioStem, name, result)\ if (env().getGrid()->IsBoss())\ {\ - std::string _dirname = dirname(ioStem);\ - int _status = mkdir(_dirname);\ - \ - if (_status)\ - {\ - HADRONS_ERROR(Io, "cannot create directory '" + _dirname \ - + "' (status " + std::to_string(_status) + ")");\ - }\ + makeFileDir(ioStem, env().getGrid());\ {\ ResultWriter _writer(RESULT_FILE_NAME(ioStem));\ write(_writer, name, result);\ From 25828746f377b528198efd2ae03c61f25c6e7e20 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 7 May 2018 21:04:31 +0100 Subject: [PATCH 159/267] XML precision scientific with 16 digits by default --- lib/serialisation/XmlIO.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/serialisation/XmlIO.h b/lib/serialisation/XmlIO.h index eaa8174b..792505d4 100644 --- a/lib/serialisation/XmlIO.h +++ b/lib/serialisation/XmlIO.h @@ -103,7 +103,8 @@ namespace Grid { std::ostringstream os; - os << std::boolalpha << x; + os.precision(16); + os << std::scientific << std::boolalpha << x; pugi::xml_node leaf = node_.append_child(s.c_str()); leaf.append_child(pugi::node_pcdata).set_value(os.str().c_str()); } From 54d789204fec8478eedd936f9a6d10e4ce5d13dd Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 7 May 2018 21:17:46 +0100 Subject: [PATCH 160/267] more general implementation of the precision interface for serialisers --- lib/serialisation/BaseIO.h | 32 +++++++++++++++++++++++++++++++- lib/serialisation/XmlIO.h | 11 +++++++++-- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/lib/serialisation/BaseIO.h b/lib/serialisation/BaseIO.h index bc178e0d..dd15e7da 100644 --- a/lib/serialisation/BaseIO.h +++ b/lib/serialisation/BaseIO.h @@ -60,8 +60,14 @@ namespace Grid { void write(const std::string &s, const iVector &output); template void write(const std::string &s, const iMatrix &output); + void scientificFormat(const bool set); + bool isScientific(void); + void setPrecision(const unsigned int prec); + unsigned int getPrecision(void); private: - T *upcast; + T *upcast; + bool scientific_{false}; + unsigned int prec_{0}; }; // Static abstract reader @@ -155,6 +161,30 @@ namespace Grid { { upcast->writeDefault(s, tensorToVec(output)); } + + template + void Writer::scientificFormat(const bool set) + { + scientific_ = set; + } + + template + bool Writer::isScientific(void) + { + return scientific_; + } + + template + void Writer::setPrecision(const unsigned int prec) + { + prec_ = prec; + } + + template + unsigned int Writer::getPrecision(void) + { + return prec_; + } // Reader template implementation template diff --git a/lib/serialisation/XmlIO.h b/lib/serialisation/XmlIO.h index 792505d4..17ccb32e 100644 --- a/lib/serialisation/XmlIO.h +++ b/lib/serialisation/XmlIO.h @@ -103,8 +103,15 @@ namespace Grid { std::ostringstream os; - os.precision(16); - os << std::scientific << std::boolalpha << x; + if (getPrecision()) + { + os.precision(getPrecision()); + } + if (isScientific()) + { + os << std::scientific; + } + os << std::boolalpha << x; pugi::xml_node leaf = node_.append_child(s.c_str()); leaf.append_child(pugi::node_pcdata).set_value(os.str().c_str()); } From 899f961d0d6d53b9e441d296f26c2e1603c023cb Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 7 May 2018 21:37:03 +0100 Subject: [PATCH 161/267] Hadrons: eigenvalue metadata saved with 16 significant digits --- extras/Hadrons/EigenPack.hpp | 47 +----------------------------------- extras/Hadrons/Global.hpp | 4 +++ lib/parallelIO/IldgIO.h | 12 ++++++--- 3 files changed, 14 insertions(+), 49 deletions(-) diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index fc68a5ed..92901138 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -204,7 +204,7 @@ protected: vecRecord.index = index; vecRecord.eval = eval; LOG(Message) << "Writing eigenvector " << index << std::endl; - binWriter.writeScidacFieldRecord(evec, vecRecord); + binWriter.writeScidacFieldRecord(evec, vecRecord, DEFAULT_ASCII_PREC); binWriter.close(); } }; @@ -237,18 +237,6 @@ public: void readFine(const std::string fileStem, const bool multiFile, const int traj = -1) { - // std::string evecFineFilename, evalFineFilename; - // std::string evecCoarseFilename, evalCoarseFilename; - - // this->makeFilenames(evecFineFilename, evalFineFilename, - // fileStem + "_fine", traj); - // XmlReader xmlFineReader(evalFineFilename); - // LOG(Message) << "Reading " << this->eval.size() << " fine eigenvalues from '" - // << evalFineFilename << "'" << std::endl; - // Grid::read(xmlFineReader, "evals", this->eval); - // LOG(Message) << "Reading " << this->evec.size() << " fine eigenvectors from '" - // << evecFineFilename << "'" << std::endl; - // this->basicRead(this->evec, evecFineFilename, this->evec.size()); if (multiFile) { for(int k = 0; k < this->evec.size(); ++k) @@ -264,17 +252,6 @@ public: void readCoarse(const std::string fileStem, const bool multiFile, const int traj = -1) { - // std::string evecCoarseFilename, evalCoarseFilename; - - // this->makeFilenames(evecCoarseFilename, evalCoarseFilename, - // fileStem + "_coarse", traj); - // XmlReader xmlCoarseReader(evalCoarseFilename); - // LOG(Message) << "Reading " << evalCoarse.size() << " coarse eigenvalues from '" - // << evalCoarseFilename << "'" << std::endl; - // Grid::read(xmlCoarseReader, "evals", evalCoarse); - // LOG(Message) << "Reading " << evecCoarse.size() << " coarse eigenvectors from '" - // << evecCoarseFilename << "'" << std::endl; - // this->basicRead(evecCoarse, evecCoarseFilename, evecCoarse.size()); if (multiFile) { for(int k = 0; k < evecCoarse.size(); ++k) @@ -296,17 +273,6 @@ public: void writeFine(const std::string fileStem, const bool multiFile, const int traj = -1) { - // std::string evecFineFilename, evalFineFilename; - - // this->makeFilenames(evecFineFilename, evalFineFilename, - // fileStem + "_fine", traj); - // XmlWriter xmlFineWriter(evalFineFilename); - // LOG(Message) << "Writing " << this->eval.size() << " fine eigenvalues to '" - // << evalFineFilename << "'" << std::endl; - // Grid::write(xmlFineWriter, "evals", this->eval); - // LOG(Message) << "Writing " << this->evec.size() << " fine eigenvectors to '" - // << evecFineFilename << "'" << std::endl; - // this->basicWrite(evecFineFilename, this->evec, this->evec.size()); if (multiFile) { for(int k = 0; k < this->evec.size(); ++k) @@ -322,17 +288,6 @@ public: void writeCoarse(const std::string fileStem, const bool multiFile, const int traj = -1) { - // std::string evecCoarseFilename, evalCoarseFilename; - - // this->makeFilenames(evecCoarseFilename, evalCoarseFilename, - // fileStem + "_coarse", traj); - // XmlWriter xmlCoarseWriter(evalCoarseFilename); - // LOG(Message) << "Writing " << evalCoarse.size() << " coarse eigenvalues to '" - // << evalCoarseFilename << "'" << std::endl; - // Grid::write(xmlCoarseWriter, "evals", evalCoarse); - // LOG(Message) << "Writing " << evecCoarse.size() << " coarse eigenvectors to '" - // << evecCoarseFilename << "'" << std::endl; - // this->basicWrite(evecCoarseFilename, evecCoarse, evecCoarse.size()); if (multiFile) { for(int k = 0; k < evecCoarse.size(); ++k) diff --git a/extras/Hadrons/Global.hpp b/extras/Hadrons/Global.hpp index bc0be474..72fbdf80 100644 --- a/extras/Hadrons/Global.hpp +++ b/extras/Hadrons/Global.hpp @@ -39,6 +39,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #define SITE_SIZE_TYPE size_t #endif +#ifndef DEFAULT_ASCII_PREC +#define DEFAULT_ASCII_PREC 16 +#endif + #define BEGIN_HADRONS_NAMESPACE \ namespace Grid {\ using namespace QCD;\ diff --git a/lib/parallelIO/IldgIO.h b/lib/parallelIO/IldgIO.h index 3eb55d7d..0bfa7b9e 100644 --- a/lib/parallelIO/IldgIO.h +++ b/lib/parallelIO/IldgIO.h @@ -340,10 +340,15 @@ class GridLimeWriter : public BinaryIO } template - void writeLimeObject(int MB,int ME,serialisable_object &object,std::string object_name,std::string record_name) + void writeLimeObject(int MB,int ME,serialisable_object &object,std::string object_name,std::string record_name, const unsigned int scientificPrec = 0) { XmlWriter WR("",""); + if (scientificPrec) + { + WR.scientificFormat(true); + WR.setPrecision(scientificPrec); + } write(WR,object_name,object); writeLimeObject(MB, ME, WR, object_name, record_name); } @@ -453,7 +458,8 @@ class ScidacWriter : public GridLimeWriter { // Write generic lattice field in scidac format //////////////////////////////////////////////// template - void writeScidacFieldRecord(Lattice &field,userRecord _userRecord) + void writeScidacFieldRecord(Lattice &field,userRecord _userRecord, + const unsigned int recordScientificPrec = 0) { GridBase * grid = field._grid; @@ -471,7 +477,7 @@ class ScidacWriter : public GridLimeWriter { ////////////////////////////////////////////// if ( this->boss_node ) { writeLimeObject(1,0,header ,std::string("FieldMetaData"),std::string(GRID_FORMAT)); // Open message - writeLimeObject(0,0,_userRecord,_userRecord.SerialisableClassName(),std::string(SCIDAC_RECORD_XML)); + writeLimeObject(0,0,_userRecord,_userRecord.SerialisableClassName(),std::string(SCIDAC_RECORD_XML), recordScientificPrec); writeLimeObject(0,0,_scidacRecord,_scidacRecord.SerialisableClassName(),std::string(SCIDAC_PRIVATE_RECORD_XML)); } // Collective call From 9ad580d82f2d479d0020bfde8c87f5209dea1b60 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 7 May 2018 21:38:15 +0100 Subject: [PATCH 162/267] Hadrons: format fix --- extras/Hadrons/EigenPack.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index 92901138..4169cba1 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -183,7 +183,7 @@ protected: vecRecord.index = k; vecRecord.eval = eval[k]; LOG(Message) << "Writing eigenvector " << k << std::endl; - binWriter.writeScidacFieldRecord(evec[k], vecRecord); + binWriter.writeScidacFieldRecord(evec[k], vecRecord, DEFAULT_ASCII_PREC); } binWriter.close(); } From 93771f30998d8876f786ee8fd9a2db1d77307f63 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 10 May 2018 22:29:48 +0100 Subject: [PATCH 163/267] Hadrons: scalar SU(N) stochastic free field --- extras/Hadrons/Modules.hpp | 31 +--- .../Modules/MScalarSUN/StochFreeField.cc | 11 ++ .../Modules/MScalarSUN/StochFreeField.hpp | 136 ++++++++++++++++++ extras/Hadrons/modules.inc | 2 + 4 files changed, 150 insertions(+), 30 deletions(-) create mode 100644 extras/Hadrons/Modules/MScalarSUN/StochFreeField.cc create mode 100644 extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index fc536393..1a18eb3a 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,33 +1,3 @@ -/************************************************************************************* - -Grid physics library, www.github.com/paboyle/Grid - -Source file: extras/Hadrons/Modules.hpp - -Copyright (C) 2015-2018 - -Author: Antonin Portelli -Author: Guido Cossu -Author: Lanny91 -Author: pretidav - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -See the full license in the file "LICENSE" in the top level distribution directory -*************************************************************************************/ -/* END LEGAL */ #include #include #include @@ -61,6 +31,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.cc b/extras/Hadrons/Modules/MScalarSUN/StochFreeField.cc new file mode 100644 index 00000000..0be90022 --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/StochFreeField.cc @@ -0,0 +1,11 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MScalarSUN; + +template class Grid::Hadrons::MScalarSUN::TStochFreeField>; +template class Grid::Hadrons::MScalarSUN::TStochFreeField>; +template class Grid::Hadrons::MScalarSUN::TStochFreeField>; +template class Grid::Hadrons::MScalarSUN::TStochFreeField>; +template class Grid::Hadrons::MScalarSUN::TStochFreeField>; diff --git a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp b/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp new file mode 100644 index 00000000..0dcd0177 --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp @@ -0,0 +1,136 @@ +#ifndef Hadrons_MScalarSUN_StochFreeField_hpp_ +#define Hadrons_MScalarSUN_StochFreeField_hpp_ + +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * stochastic free SU(N) scalar field * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MScalarSUN) + +class StochFreeFieldPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(StochFreeFieldPar, + double, m2, + double, g); +}; + +template +class TStochFreeField: public Module +{ +public: + typedef typename SImpl::Field Field; + typedef typename SImpl::ComplexField ComplexField; + typedef typename SImpl::Group Group; + typedef typename Group::LatticeAlgebraVector AlgebraField; +public: + // constructor + TStochFreeField(const std::string name); + // destructor + virtual ~TStochFreeField(void) {}; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +private: + bool create_weight; +}; + +MODULE_REGISTER_TMP(StochFreeFieldSU2, TStochFreeField>, MScalarSUN); +MODULE_REGISTER_TMP(StochFreeFieldSU3, TStochFreeField>, MScalarSUN); +MODULE_REGISTER_TMP(StochFreeFieldSU4, TStochFreeField>, MScalarSUN); +MODULE_REGISTER_TMP(StochFreeFieldSU5, TStochFreeField>, MScalarSUN); +MODULE_REGISTER_TMP(StochFreeFieldSU6, TStochFreeField>, MScalarSUN); + +/****************************************************************************** + * TStochFreeField implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TStochFreeField::TStochFreeField(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TStochFreeField::getInput(void) +{ + std::vector in; + + return in; +} + +template +std::vector TStochFreeField::getOutput(void) +{ + std::vector out = {getName()}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TStochFreeField::setup(void) +{ + create_weight = false; + if (!env().hasCreatedObject("_" + getName() + "_weight")) + { + envCacheLat(ComplexField, "_" + getName() + "_weight"); + create_weight = true; + } + envTmpLat(Field, "phift"); + envCreateLat(Field, getName()); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TStochFreeField::execute(void) +{ + LOG(Message) << "Generating stochastic scalar field" << std::endl; + + const unsigned int N = Group::Dimension; + const unsigned int Nadj = Group::AdjointDimension; + auto &phi = envGet(Field, getName()); + auto &w = envGet(ComplexField, "_" + getName() + "_weight"); + auto &rng = *env().get4dRng(); + double trphi2; + FFT fft(env().getGrid()); + Integer vol; + + vol = 1; + for(int d = 0; d < env().getNd(); d++) + { + vol = vol*env().getDim(d); + } + if (create_weight) + { + LOG(Message) << "Caching momentum-space scalar action" << std::endl; + + SImpl::MomentumSpacePropagator(w, sqrt(par().m2)); + w *= par().g/N; + w = sqrt(vol*real(w)); + } + LOG(Message) << "Generating random momentum-space field" << std::endl; + envGetTmp(Field, phift); + Group::GaussianFundamentalLieAlgebraMatrix(rng, phift); + phift *= w; + LOG(Message) << "Field Fourier transform" << std::endl; + fft.FFT_all_dim(phi, phift, FFT::backward); + phi = (1./sqrt(2.))*(phi - adj(phi)); + trphi2 = -TensorRemove(sum(trace(phi*phi))).real()/vol; + LOG(Message) << "tr(phi^2)= " << trphi2 << std::endl; +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MScalarSUN_StochFreeField_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index ad3a8727..c2e84086 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -37,6 +37,7 @@ modules_cc =\ Modules/MScalarSUN/EMT.cc \ Modules/MScalarSUN/ShiftProbe.cc \ Modules/MScalarSUN/TransProj.cc \ + Modules/MScalarSUN/StochFreeField.cc \ Modules/MScalarSUN/TwoPoint.cc \ Modules/MScalarSUN/Div.cc \ Modules/MIO/LoadEigenPack.cc \ @@ -78,6 +79,7 @@ modules_hpp =\ Modules/MAction/Wilson.hpp \ Modules/MAction/WilsonClover.hpp \ Modules/MAction/ZMobiusDWF.hpp \ + Modules/MScalarSUN/StochFreeField.hpp \ Modules/MScalarSUN/ShiftProbe.hpp \ Modules/MScalarSUN/Div.hpp \ Modules/MScalarSUN/TrMag.hpp \ From 5e3be47117534384cffbc4e8461f4ef176c6a42e Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 14 May 2018 18:58:39 +0100 Subject: [PATCH 164/267] Hadrons: scalar SU(N) various fixes --- extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp | 10 +++++----- extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp index cd7c15eb..edd38e42 100644 --- a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp @@ -40,7 +40,7 @@ BEGIN_HADRONS_NAMESPACE ******************************************************************************/ BEGIN_MODULE_NAMESPACE(MScalarSUN) -typedef std::pair ShiftPair; +typedef std::pair ShiftPair; class ShiftProbePar: Serializable { @@ -127,7 +127,7 @@ void TShiftProbe::execute(void) << std::endl; std::vector shift; - unsigned int sign; + double sign; auto &phi = envGet(Field, par().field); auto &probe = envGet(ComplexField, getName()); @@ -136,7 +136,7 @@ void TShiftProbe::execute(void) { HADRONS_ERROR(Size, "the number of shifts is odd"); } - sign = (shift.size() % 4 == 0) ? 1 : -1; + sign = (shift.size() % 4 == 0) ? 1. : -1.; for (auto &s: shift) { if (s.first >= env().getNd()) @@ -147,7 +147,7 @@ void TShiftProbe::execute(void) } } envGetTmp(Field, acc); - acc = 1.; + acc = 1.; for (unsigned int i = 0; i < shift.size(); ++i) { if (shift[i].second == 0) @@ -159,7 +159,7 @@ void TShiftProbe::execute(void) acc *= Cshift(phi, shift[i].first, shift[i].second); } } - probe = real(sign*trace(acc)); + probe = sign*trace(acc); if (!par().output.empty()) { ShiftProbeResult r; diff --git a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp b/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp index 0dcd0177..6800de53 100644 --- a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp @@ -116,7 +116,7 @@ void TStochFreeField::execute(void) SImpl::MomentumSpacePropagator(w, sqrt(par().m2)); w *= par().g/N; - w = sqrt(vol*real(w)); + w = sqrt(vol)*sqrt(w); } LOG(Message) << "Generating random momentum-space field" << std::endl; envGetTmp(Field, phift); From 9d835afa351e0a99601dc955be808b116765a8d0 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 14 May 2018 19:05:54 +0100 Subject: [PATCH 165/267] Attempt at solving the FP exception in the QED code --- lib/qcd/action/gauge/Photon.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/qcd/action/gauge/Photon.h b/lib/qcd/action/gauge/Photon.h index 7e21a1de..8a6eff79 100644 --- a/lib/qcd/action/gauge/Photon.h +++ b/lib/qcd/action/gauge/Photon.h @@ -185,7 +185,7 @@ namespace QCD{ vol = vol * latt_size[d]; } invKHatSquared(weight); - weight = sqrt(vol*real(weight)); + weight = sqrt(vol)*sqrt(weight); zmSub(weight); } From fd3b2e945adedb99129f3aa0534ec62cce98d6e6 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 18 May 2018 20:48:24 +0100 Subject: [PATCH 166/267] Hadrons: don't right result with empty stem --- extras/Hadrons/Module.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/Hadrons/Module.hpp b/extras/Hadrons/Module.hpp index dd038a21..2726da96 100644 --- a/extras/Hadrons/Module.hpp +++ b/extras/Hadrons/Module.hpp @@ -120,7 +120,7 @@ envTmp(type, name, Ls, env().getGrid(Ls)) MACRO_REDIRECT(__VA_ARGS__, envTmpLat5, envTmpLat4)(__VA_ARGS__) #define saveResult(ioStem, name, result)\ -if (env().getGrid()->IsBoss())\ +if (env().getGrid()->IsBoss() and !ioStem.empty())\ {\ makeFileDir(ioStem, env().getGrid());\ {\ From a0d399e5ce32d8bf0f51cceaa01cf920b907bde8 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 18 May 2018 20:49:26 +0100 Subject: [PATCH 167/267] Hadrons: yet other attempts at EMT NPR --- extras/Hadrons/Modules.hpp | 2 + .../Modules/MScalarSUN/TimeMomProbe.cc | 11 + .../Modules/MScalarSUN/TimeMomProbe.hpp | 241 ++++++++++++++++++ .../Hadrons/Modules/MScalarSUN/TwoPoint.hpp | 31 --- .../Hadrons/Modules/MScalarSUN/TwoPointNPR.cc | 11 + .../Modules/MScalarSUN/TwoPointNPR.hpp | 182 +++++++++++++ extras/Hadrons/Modules/MScalarSUN/Utils.hpp | 22 ++ extras/Hadrons/modules.inc | 4 + 8 files changed, 473 insertions(+), 31 deletions(-) create mode 100644 extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.cc create mode 100644 extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp create mode 100644 extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.cc create mode 100644 extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 1a18eb3a..3b33eb6e 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -32,8 +32,10 @@ #include #include #include +#include #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.cc b/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.cc new file mode 100644 index 00000000..f22d08af --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.cc @@ -0,0 +1,11 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MScalarSUN; + +template class Grid::Hadrons::MScalarSUN::TTimeMomProbe>; +template class Grid::Hadrons::MScalarSUN::TTimeMomProbe>; +template class Grid::Hadrons::MScalarSUN::TTimeMomProbe>; +template class Grid::Hadrons::MScalarSUN::TTimeMomProbe>; +template class Grid::Hadrons::MScalarSUN::TTimeMomProbe>; diff --git a/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp b/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp new file mode 100644 index 00000000..4807e865 --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp @@ -0,0 +1,241 @@ +#ifndef Hadrons_MScalarSUN_TimeMomProbe_hpp_ +#define Hadrons_MScalarSUN_TimeMomProbe_hpp_ + +#include +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * n-point functions O(t,p)*tr(phi(t_1,p_1)*...*phi(t_n,p_n)) * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MScalarSUN) + +class TimeMomProbePar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(TimeMomProbePar, + std::string, field, + std::vector, op, + std::vector>, timeMom, + std::string, output); +}; + +class TimeMomProbeResult: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(TimeMomProbeResult, + std::string, op, + std::vector>, timeMom, + std::vector, data); +}; + +template +class TTimeMomProbe: public Module +{ +public: + typedef typename SImpl::Field Field; + typedef typename SImpl::SiteField::scalar_object Site; + typedef typename SImpl::ComplexField ComplexField; + typedef std::vector SlicedOp; +public: + // constructor + TTimeMomProbe(const std::string name); + // destructor + virtual ~TTimeMomProbe(void) {}; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +private: + void vectorModulo(std::vector &v); +}; + +MODULE_REGISTER_TMP(TimeMomProbeSU2, TTimeMomProbe>, MScalarSUN); +MODULE_REGISTER_TMP(TimeMomProbeSU3, TTimeMomProbe>, MScalarSUN); +MODULE_REGISTER_TMP(TimeMomProbeSU4, TTimeMomProbe>, MScalarSUN); +MODULE_REGISTER_TMP(TimeMomProbeSU5, TTimeMomProbe>, MScalarSUN); +MODULE_REGISTER_TMP(TimeMomProbeSU6, TTimeMomProbe>, MScalarSUN); + +/****************************************************************************** + * TTimeMomProbe implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TTimeMomProbe::TTimeMomProbe(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TTimeMomProbe::getInput(void) +{ + std::vector in = par().op; + + in.push_back(par().field); + + return in; +} + +template +std::vector TTimeMomProbe::getOutput(void) +{ + std::vector out; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TTimeMomProbe::setup(void) +{ + envTmpLat(ComplexField, "ftBuf"); + envTmpLat(Field, "ftMatBuf"); +} + +// execution /////////////////////////////////////////////////////////////////// +// NB: time is direction 0 +template +void TTimeMomProbe::vectorModulo(std::vector &v) +{ + for (unsigned int mu = 0; mu < env().getNd(); ++mu) + { + auto d = env().getDim(mu); + v[mu] = ((v[mu] % d) + d) % d; + } +} + +template +void TTimeMomProbe::execute(void) +{ + const unsigned int nd = env().getNd(); + const unsigned int nt = env().getDim(0); + double partVol = 1.; + std::set> timeMomSet; + std::vector>> timeMom; + std::vector> transferMom; + FFT fft(env().getGrid()); + std::vector dMask(nd, 1); + std::vector result; + std::map> slicedOp; + std::vector slicedProbe; + auto &phi = envGet(Field, par().field); + + envGetTmp(ComplexField, ftBuf); + envGetTmp(Field, ftMatBuf); + dMask[0] = 0; + for (unsigned int mu = 1; mu < nd; ++mu) + { + partVol *= env().getDim(mu); + } + timeMom.resize(par().timeMom.size()); + for (unsigned int p = 0; p < timeMom.size(); ++p) + { + for (auto &tms: par().timeMom[p]) + { + std::vector tm = strToVec(tms); + + timeMom[p].push_back(tm); + timeMomSet.insert(tm); + } + transferMom.push_back(std::vector(nd - 1, 0)); + for (auto &tm: timeMom[p]) + { + for (unsigned int j = 1; j < nd; ++j) + { + transferMom[p][j - 1] -= tm[j]; + } + } + LOG(Message) << "Probe " << p << " (" << timeMom[p].size() << " points) : " << std::endl; + LOG(Message) << " phi(t_i, p_i) for (t_i, p_i) in " << timeMom[p] << std::endl; + LOG(Message) << " operator with momentum " << transferMom[p] << std::endl; + } + LOG(Message) << "FFT: field '" << par().field << "'" << std::endl; + fft.FFT_dim_mask(ftMatBuf, phi, dMask, FFT::forward); + slicedProbe.resize(timeMom.size()); + for (unsigned int p = 0; p < timeMom.size(); ++p) + { + std::vector qt; + + LOG(Message) << "Making probe " << p << std::endl; + slicedProbe[p].resize(nt); + for (unsigned int t = 0; t < nt; ++t) + { + Site acc; + + for (unsigned int i = 0; i < timeMom[p].size(); ++i) + { + Site buf; + + qt = timeMom[p][i]; + qt[0] += t; + vectorModulo(qt); + peekSite(buf, ftMatBuf, qt); + if (i == 0) + { + acc = buf; + } + else + { + acc *= buf; + } + } + slicedProbe[p][t] = TensorRemove(trace(acc)); + } + //std::cout << slicedProbe[p]<< std::endl; + } + for (auto &o: par().op) + { + auto &op = envGet(ComplexField, o); + + slicedOp[o].resize(transferMom.size()); + LOG(Message) << "FFT: operator '" << o << "'" << std::endl; + fft.FFT_dim_mask(ftBuf, op, dMask, FFT::forward); + //std::cout << ftBuf << std::endl; + for (unsigned int p = 0; p < transferMom.size(); ++p) + { + std::vector qt(nd, 0); + + for (unsigned int j = 1; j < nd; ++j) + { + qt[j] = transferMom[p][j - 1]; + } + slicedOp[o][p].resize(nt); + for (unsigned int t = 0; t < nt; ++t) + { + TComplex buf; + + qt[0] = t; + vectorModulo(qt); + peekSite(buf, ftBuf, qt); + slicedOp[o][p][t] = TensorRemove(buf); + } + //std::cout << ftBuf << std::endl; + //std::cout << slicedOp[o][p] << std::endl; + } + } + LOG(Message) << "Making correlators" << std::endl; + for (auto &o: par().op) + for (unsigned int p = 0; p < timeMom.size(); ++p) + { + TimeMomProbeResult r; + + LOG(Message) << " <" << o << " probe_" << p << ">" << std::endl; + r.op = o; + r.timeMom = timeMom[p]; + r.data = makeTwoPoint(slicedOp[o][p], slicedProbe[p], 1./partVol); + result.push_back(r); + } + saveResult(par().output, "timemomprobe", result); +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MScalarSUN_TimeMomProbe_hpp_ diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp index 8ee80242..2407f26f 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp @@ -79,12 +79,6 @@ public: virtual void setup(void); // execution virtual void execute(void); -private: - // make 2-pt function - template - std::vector makeTwoPoint(const std::vector &sink, - const std::vector &source, - const double factor = 1.); private: std::vector> mom_; }; @@ -221,31 +215,6 @@ void TTwoPoint::execute(void) saveResult(par().output, "twopt", result); } -// make 2-pt function ////////////////////////////////////////////////////////// -template -template -std::vector TTwoPoint::makeTwoPoint( - const std::vector &sink, - const std::vector &source, - const double factor) -{ - assert(sink.size() == source.size()); - - unsigned int nt = sink.size(); - std::vector res(nt, 0.); - - for (unsigned int dt = 0; dt < nt; ++dt) - { - for (unsigned int t = 0; t < nt; ++t) - { - res[dt] += sink[(t+dt)%nt]*adj(source[t]); - } - res[dt] *= factor/static_cast(nt); - } - - return res; -} - END_MODULE_NAMESPACE END_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.cc b/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.cc new file mode 100644 index 00000000..70fb2445 --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.cc @@ -0,0 +1,11 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MScalarSUN; + +template class Grid::Hadrons::MScalarSUN::TTwoPointNPR>; +template class Grid::Hadrons::MScalarSUN::TTwoPointNPR>; +template class Grid::Hadrons::MScalarSUN::TTwoPointNPR>; +template class Grid::Hadrons::MScalarSUN::TTwoPointNPR>; +template class Grid::Hadrons::MScalarSUN::TTwoPointNPR>; diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp b/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp new file mode 100644 index 00000000..4c2cdb0d --- /dev/null +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp @@ -0,0 +1,182 @@ +#ifndef Hadrons_MScalarSUN_TwoPointNPR_hpp_ +#define Hadrons_MScalarSUN_TwoPointNPR_hpp_ + +#include +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * TwoPointNPR * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MScalarSUN) + +class TwoPointNPRPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(TwoPointNPRPar, + std::vector, op, + std::string, field, + std::string, output); +}; + +class TwoPointNPRResult: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(TwoPointNPRResult, + std::string, op, + std::vector, data); +}; + +template +class TTwoPointNPR: public Module +{ +public: + typedef typename SImpl::Field Field; + typedef typename SImpl::SiteField::scalar_object Site; + typedef typename SImpl::ComplexField ComplexField; +public: + // constructor + TTwoPointNPR(const std::string name); + // destructor + virtual ~TTwoPointNPR(void) {}; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER_TMP(TwoPointNPRSU2, TTwoPointNPR>, MScalarSUN); +MODULE_REGISTER_TMP(TwoPointNPRSU3, TTwoPointNPR>, MScalarSUN); +MODULE_REGISTER_TMP(TwoPointNPRSU4, TTwoPointNPR>, MScalarSUN); +MODULE_REGISTER_TMP(TwoPointNPRSU5, TTwoPointNPR>, MScalarSUN); +MODULE_REGISTER_TMP(TwoPointNPRSU6, TTwoPointNPR>, MScalarSUN); + +/****************************************************************************** + * TTwoPointNPR implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TTwoPointNPR::TTwoPointNPR(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TTwoPointNPR::getInput(void) +{ + std::vector in = par().op; + + in.push_back(par().field); + + return in; +} + +template +std::vector TTwoPointNPR::getOutput(void) +{ + std::vector out; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TTwoPointNPR::setup(void) +{ + const unsigned int nl = env().getDim(0); + + for (unsigned int mu = 1; mu < env().getNd(); ++mu) + { + if (nl != env().getDim(mu)) + { + HADRONS_ERROR(Size, "non-cubic grid"); + } + } + envTmpLat(ComplexField, "ftBuf"); + envTmpLat(Field, "ftMatBuf"); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TTwoPointNPR::execute(void) +{ + const unsigned int nd = env().getNd(); + const unsigned int nl = env().getDim(0); + FFT fft(env().getGrid()); + std::vector result; + TwoPointNPRResult twoPtp1, twoPtp2; + auto &phi = envGet(Field, par().field); + bool doTwoPt = true; + + envGetTmp(ComplexField, ftBuf); + envGetTmp(Field, ftMatBuf); + LOG(Message) << "FFT: field '" << par().field << "'" << std::endl; + fft.FFT_all_dim(ftMatBuf, phi, FFT::forward); + for (auto &opName: par().op) + { + auto &op = envGet(ComplexField, opName); + std::vector p1, p2, p; + Site phip1, phip2; + TComplex opp; + TwoPointNPRResult r; + + LOG(Message) << "FFT: operator '" << opName << "'" << std::endl; + fft.FFT_all_dim(ftBuf, op, FFT::forward); + LOG(Message) << "Generating vertex function" << std::endl; + r.op = opName; + r.data.resize(nl); + if (doTwoPt) + { + twoPtp1.op = "phi_prop_p1"; + twoPtp1.data.resize(nl); + twoPtp2.op = "phi_prop_p2"; + twoPtp2.data.resize(nl); + } + for (unsigned int n = 0; n < nl; ++n) + { + p1.assign(nd, 0); + p2.assign(nd, 0); + p.assign(nd, 0); + // non-exceptional RI/SMOM kinematic + // p1 = mu*(1,1,0): in mom + // p2 = mu*(0,1,1): out mom + // p = p1 - p2 = mu*(1,0,-1) + // mu = 2*n*pi/L + p1[0] = n; + p1[1] = n; + p2[1] = n; + p2[2] = n; + p[0] = n; + p[2] = (nl - n) % nl; + peekSite(phip1, ftMatBuf, p1); + peekSite(phip2, ftMatBuf, p2); + peekSite(opp, ftBuf, p); + if (doTwoPt) + { + twoPtp1.data[n] = TensorRemove(trace(phip1*adj(phip1))); + twoPtp2.data[n] = TensorRemove(trace(phip2*adj(phip2))); + } + r.data[n] = TensorRemove(trace(phip2*adj(phip1))*opp); + } + if (doTwoPt) + { + result.push_back(twoPtp1); + result.push_back(twoPtp2); + } + result.push_back(r); + doTwoPt = false; + } + saveResult(par().output, "twoptnpr", result); +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MScalarSUN_TwoPointNPR_hpp_ diff --git a/extras/Hadrons/Modules/MScalarSUN/Utils.hpp b/extras/Hadrons/Modules/MScalarSUN/Utils.hpp index 37a9e137..68009f5e 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Utils.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/Utils.hpp @@ -89,6 +89,28 @@ inline void dmuAcc(Field &out, const Field &in, const unsigned int mu, const Dif } } +template +std::vector makeTwoPoint(const std::vector &sink, + const std::vector &source, + const double factor = 1.) +{ + assert(sink.size() == source.size()); + + unsigned int nt = sink.size(); + std::vector res(nt, 0.); + + for (unsigned int dt = 0; dt < nt; ++dt) + { + for (unsigned int t = 0; t < nt; ++t) + { + res[dt] += trace(sink[(t+dt)%nt]*source[t]); + } + res[dt] *= factor/static_cast(nt); + } + + return res; +} + inline std::string varName(const std::string name, const std::string suf) { return name + "_" + suf; diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index c2e84086..a1f34b95 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -32,6 +32,7 @@ modules_cc =\ Modules/MAction/DWF.cc \ Modules/MScalarSUN/TrPhi.cc \ Modules/MScalarSUN/Grad.cc \ + Modules/MScalarSUN/TimeMomProbe.cc \ Modules/MScalarSUN/TrMag.cc \ Modules/MScalarSUN/TrKinetic.cc \ Modules/MScalarSUN/EMT.cc \ @@ -39,6 +40,7 @@ modules_cc =\ Modules/MScalarSUN/TransProj.cc \ Modules/MScalarSUN/StochFreeField.cc \ Modules/MScalarSUN/TwoPoint.cc \ + Modules/MScalarSUN/TwoPointNPR.cc \ Modules/MScalarSUN/Div.cc \ Modules/MIO/LoadEigenPack.cc \ Modules/MIO/LoadBinary.cc \ @@ -80,8 +82,10 @@ modules_hpp =\ Modules/MAction/WilsonClover.hpp \ Modules/MAction/ZMobiusDWF.hpp \ Modules/MScalarSUN/StochFreeField.hpp \ + Modules/MScalarSUN/TwoPointNPR.hpp \ Modules/MScalarSUN/ShiftProbe.hpp \ Modules/MScalarSUN/Div.hpp \ + Modules/MScalarSUN/TimeMomProbe.hpp \ Modules/MScalarSUN/TrMag.hpp \ Modules/MScalarSUN/EMT.hpp \ Modules/MScalarSUN/TwoPoint.hpp \ From 255d4992e12ec585de06f4c0d3e20c6cee28b777 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 18 May 2018 20:49:55 +0100 Subject: [PATCH 168/267] Hadrons: stochastic scalar SU(N) free field fix --- .../Modules/MScalarSUN/StochFreeField.hpp | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp b/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp index 6800de53..75ef3fde 100644 --- a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp @@ -24,10 +24,10 @@ template class TStochFreeField: public Module { public: - typedef typename SImpl::Field Field; - typedef typename SImpl::ComplexField ComplexField; - typedef typename SImpl::Group Group; - typedef typename Group::LatticeAlgebraVector AlgebraField; + typedef typename SImpl::Field Field; + typedef typename SImpl::ComplexField ComplexField; + typedef typename SImpl::Group Group; + typedef typename SImpl::SiteField::scalar_object Site; public: // constructor TStochFreeField(const std::string name); @@ -87,6 +87,7 @@ void TStochFreeField::setup(void) create_weight = true; } envTmpLat(Field, "phift"); + envTmpLat(ComplexField, "ca"); envCreateLat(Field, getName()); } @@ -120,13 +121,27 @@ void TStochFreeField::execute(void) } LOG(Message) << "Generating random momentum-space field" << std::endl; envGetTmp(Field, phift); - Group::GaussianFundamentalLieAlgebraMatrix(rng, phift); + envGetTmp(ComplexField, ca); + phift = zero; + for (int a = 0; a < Nadj; ++a) + { + Site ta; + + gaussian(rng, ca); + Group::generator(a, ta); + phift += ca*ta; + } phift *= w; LOG(Message) << "Field Fourier transform" << std::endl; fft.FFT_all_dim(phi, phift, FFT::backward); - phi = (1./sqrt(2.))*(phi - adj(phi)); + phi = 0.5*(phi - adj(phi)); trphi2 = -TensorRemove(sum(trace(phi*phi))).real()/vol; LOG(Message) << "tr(phi^2)= " << trphi2 << std::endl; + + // ComplexField phi2(env().getGrid()); + + // phi2=trace(phi*phi); + // std::cout << phi2 << std::endl; } END_MODULE_NAMESPACE From f5db386c557f7eb5d3cab431b4f92a03a6be0112 Mon Sep 17 00:00:00 2001 From: James Harrison Date: Tue, 22 May 2018 16:16:21 +0100 Subject: [PATCH 169/267] Change MODULE_REGISTER_NS -> MODULE_REGISTER in UnitEM, ScalarVP and VPCounterTerms --- extras/Hadrons/Modules/MGauge/UnitEm.hpp | 4 ++-- extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 4 ++-- extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.hpp b/extras/Hadrons/Modules/MGauge/UnitEm.hpp index 94214274..07ee5bba 100644 --- a/extras/Hadrons/Modules/MGauge/UnitEm.hpp +++ b/extras/Hadrons/Modules/MGauge/UnitEm.hpp @@ -49,7 +49,7 @@ public: // constructor TUnitEm(const std::string name); // destructor - virtual ~TUnitEm(void) = default; + virtual ~TUnitEm(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); @@ -60,7 +60,7 @@ protected: virtual void execute(void); }; -MODULE_REGISTER_NS(UnitEm, TUnitEm, MGauge); +MODULE_REGISTER(UnitEm, TUnitEm, MGauge); END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index 8e18f80e..741325d1 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -56,7 +56,7 @@ public: // constructor TScalarVP(const std::string name); // destructor - virtual ~TScalarVP(void) = default; + virtual ~TScalarVP(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); @@ -92,7 +92,7 @@ private: std::vector phase_, momPhase_; }; -MODULE_REGISTER_NS(ScalarVP, TScalarVP, MScalar); +MODULE_REGISTER(ScalarVP, TScalarVP, MScalar); END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp b/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp index a0c3688d..99e1b1ce 100644 --- a/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp +++ b/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp @@ -47,7 +47,7 @@ public: // constructor TVPCounterTerms(const std::string name); // destructor - virtual ~TVPCounterTerms(void) = default; + virtual ~TVPCounterTerms(void) {}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); @@ -66,7 +66,7 @@ private: std::vector phase_, momPhase_; }; -MODULE_REGISTER_NS(VPCounterTerms, TVPCounterTerms, MScalar); +MODULE_REGISTER(VPCounterTerms, TVPCounterTerms, MScalar); END_MODULE_NAMESPACE From e3164d4c7b86dd997bd178ead6604010deca5cc9 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 28 May 2018 11:39:17 +0200 Subject: [PATCH 170/267] Hadrons: env function to get volume in double --- extras/Hadrons/Environment.cc | 11 +++++------ extras/Hadrons/Environment.hpp | 4 ++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/extras/Hadrons/Environment.cc b/extras/Hadrons/Environment.cc index 990a717e..bb12a036 100644 --- a/extras/Hadrons/Environment.cc +++ b/extras/Hadrons/Environment.cc @@ -49,11 +49,10 @@ Environment::Environment(void) dim_, GridDefaultSimd(nd_, vComplex::Nsimd()), GridDefaultMpi())); gridRb4d_.reset(SpaceTimeGrid::makeFourDimRedBlackGrid(grid4d_.get())); - auto loc = getGrid()->LocalDimensions(); - locVol_ = 1; - for (unsigned int d = 0; d < loc.size(); ++d) + vol_ = 1.; + for (auto d: dim_) { - locVol_ *= loc[d]; + vol_ *= d; } rng4d_.reset(new GridParallelRNG(grid4d_.get())); } @@ -190,9 +189,9 @@ int Environment::getDim(const unsigned int mu) const return dim_[mu]; } -unsigned long int Environment::getLocalVolume(void) const +double Environment::getVolume(void) const { - return locVol_; + return vol_; } // random number generator ///////////////////////////////////////////////////// diff --git a/extras/Hadrons/Environment.hpp b/extras/Hadrons/Environment.hpp index a9c3c724..13a7dfe6 100644 --- a/extras/Hadrons/Environment.hpp +++ b/extras/Hadrons/Environment.hpp @@ -94,8 +94,8 @@ public: const unsigned int Ls = 1) const; std::vector getDim(void) const; int getDim(const unsigned int mu) const; - unsigned long int getLocalVolume(void) const; unsigned int getNd(void) const; + double getVolume(void) const; // random number generator void setSeed(const std::vector &seed); GridParallelRNG * get4dRng(void) const; @@ -155,7 +155,7 @@ public: void printContent(void) const; private: // general - unsigned long int locVol_; + double vol_; bool protect_{true}; // grids std::vector dim_; From f4c6d392385d3f7ab956243c4aec0a44c7839b88 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Thu, 31 May 2018 17:16:20 +0100 Subject: [PATCH 171/267] CHanges made to SchurRB solvers to allow for the subtraction of a guess after solve --- lib/algorithms/iterative/Deflation.h | 4 +- lib/algorithms/iterative/SchurRedBlack.h | 98 +++++++++++++++++++++--- 2 files changed, 92 insertions(+), 10 deletions(-) diff --git a/lib/algorithms/iterative/Deflation.h b/lib/algorithms/iterative/Deflation.h index 316afe90..7c3e8e57 100644 --- a/lib/algorithms/iterative/Deflation.h +++ b/lib/algorithms/iterative/Deflation.h @@ -63,7 +63,7 @@ public: DeflatedGuesser(const std::vector & _evec,const std::vector & _eval) : evec(_evec), eval(_eval) {}; - virtual void operator()(const Field &src,Field &guess) { + virtual void operator()(const Field &src,Field &guess) { guess = zero; assert(evec.size()==eval.size()); auto N = evec.size(); @@ -71,6 +71,7 @@ public: const Field& tmp = evec[i]; axpy(guess,TensorRemove(innerProduct(tmp,src)) / eval[i],tmp,guess); } + guess.checkerboard = src.checkerboard; } }; @@ -101,6 +102,7 @@ public: axpy(guess_coarse,TensorRemove(innerProduct(tmp,src_coarse)) / eval_coarse[i],tmp,guess_coarse); } blockPromote(guess_coarse,guess,subspace); + guess.checkerboard = src.checkerboard; }; }; diff --git a/lib/algorithms/iterative/SchurRedBlack.h b/lib/algorithms/iterative/SchurRedBlack.h index 091330b2..ae751074 100644 --- a/lib/algorithms/iterative/SchurRedBlack.h +++ b/lib/algorithms/iterative/SchurRedBlack.h @@ -95,16 +95,26 @@ namespace Grid { private: OperatorFunction & _HermitianRBSolver; int CBfactorise; + bool subGuess; public: ///////////////////////////////////////////////////// // Wrap the usual normal equations Schur trick ///////////////////////////////////////////////////// - SchurRedBlackStaggeredSolve(OperatorFunction &HermitianRBSolver) : + SchurRedBlackStaggeredSolve(OperatorFunction &HermitianRBSolver, const bool initSubGuess = false) : _HermitianRBSolver(HermitianRBSolver) { CBfactorise=0; + subtractGuess(initSubGuess); }; + void subtractGuess(const bool initSubGuess) + { + subGuess = initSubGuess; + } + bool isSubtractGuess(void) + { + return subGuess; + } template void operator() (Matrix & _Matrix,const Field &in, Field &out){ @@ -151,7 +161,17 @@ namespace Grid { ////////////////////////////////////////////////////////////// std::cout< & _HermitianRBSolver; int CBfactorise; + bool subGuess; public: ///////////////////////////////////////////////////// // Wrap the usual normal equations Schur trick ///////////////////////////////////////////////////// - SchurRedBlackDiagMooeeSolve(OperatorFunction &HermitianRBSolver,int cb=0) : _HermitianRBSolver(HermitianRBSolver) + SchurRedBlackDiagMooeeSolve(OperatorFunction &HermitianRBSolver,int cb=0, const bool initSubGuess = false) : _HermitianRBSolver(HermitianRBSolver) { CBfactorise=cb; + subtractGuess(initSubGuess); }; + void subtractGuess(const bool initSubGuess) + { + subGuess = initSubGuess; + } + bool isSubtractGuess(void) + { + return subGuess; + } template void operator() (Matrix & _Matrix,const Field &in, Field &out){ ZeroGuesser guess; @@ -236,7 +266,17 @@ namespace Grid { ////////////////////////////////////////////////////////////// std::cout< & _HermitianRBSolver; int CBfactorise; + bool subGuess; public: ///////////////////////////////////////////////////// // Wrap the usual normal equations Schur trick ///////////////////////////////////////////////////// - SchurRedBlackDiagTwoSolve(OperatorFunction &HermitianRBSolver) : + SchurRedBlackDiagTwoSolve(OperatorFunction &HermitianRBSolver, const bool initSubGuess = false) : _HermitianRBSolver(HermitianRBSolver) { - CBfactorise=0; + CBfactorise = 0; + subtractGuess(initSubGuess); }; + void subtractGuess(const bool initSubGuess) + { + subGuess = initSubGuess; + } + bool isSubtractGuess(void) + { + return subGuess; + } template void operator() (Matrix & _Matrix,const Field &in, Field &out){ @@ -322,7 +372,17 @@ namespace Grid { std::cout< & _HermitianRBSolver; int CBfactorise; + bool subGuess; public: ///////////////////////////////////////////////////// // Wrap the usual normal equations Schur trick ///////////////////////////////////////////////////// - SchurRedBlackDiagTwoMixed(LinearFunction &HermitianRBSolver) : + SchurRedBlackDiagTwoMixed(LinearFunction &HermitianRBSolver, const bool initSubGuess = false) : _HermitianRBSolver(HermitianRBSolver) { CBfactorise=0; + subtractGuess(initSubGuess); }; + void subtractGuess(const bool initSubGuess) + { + subGuess = initSubGuess; + } + bool isSubtractGuess(void) + { + return subGuess; + } template void operator() (Matrix & _Matrix,const Field &in, Field &out){ @@ -408,7 +478,17 @@ namespace Grid { // _HermitianRBSolver(_HermOpEO,src_o,sol_o); assert(sol_o.checkerboard==Odd); // _HermitianRBSolver(_HermOpEO,src_o,tmp); assert(tmp.checkerboard==Odd); guess(src_o,tmp); - _HermitianRBSolver(src_o,tmp); assert(tmp.checkerboard==Odd); + if (subGuess) + { + std::cout << GridLogMessage << "Subtracting guess after solve" << std::endl; + Mtmp = tmp; + _HermitianRBSolver(_HermOpEO,src_o,tmp); assert(tmp.checkerboard==Odd); + tmp = tmp - Mtmp; + } + else + { + _HermitianRBSolver(_HermOpEO,src_o,tmp); assert(tmp.checkerboard==Odd); + } _Matrix.MooeeInv(tmp,sol_o); assert( sol_o.checkerboard ==Odd); /////////////////////////////////////////////////// From c18074869b97537aa5377b27dada707e37b66f2c Mon Sep 17 00:00:00 2001 From: fionnoh Date: Thu, 31 May 2018 17:17:16 +0100 Subject: [PATCH 172/267] Changes to Hadrons SchurRB solver to allow for a subtract_guess boolean to be passed --- extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 23 +++++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index 206d44d1..8983e30b 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -116,7 +116,7 @@ std::vector TRBPrecCG::getReference(void) template std::vector TRBPrecCG::getOutput(void) { - std::vector out = {getName()}; + std::vector out = {getName(), getName() + "_subtract"}; return out; } @@ -166,16 +166,21 @@ void TRBPrecCG::setup(void) guesser.reset(new FineGuesser(epack.evec, epack.eval)); } } - auto solver = [&mat, guesser, this](FermionField &sol, - const FermionField &source) - { - ConjugateGradient cg(par().residual, - par().maxIteration); - HADRONS_DEFAULT_SCHUR_SOLVE schurSolver(cg); - - schurSolver(mat, source, sol, *guesser); + auto makeSolver = [&mat, guesser, this](bool subGuess) { + return [&mat, guesser, subGuess, this](FermionField &sol, + const FermionField &source) { + ConjugateGradient cg(par().residual, + par().maxIteration); + HADRONS_DEFAULT_SCHUR_SOLVE schurSolver(cg); + schurSolver.subtractGuess(subGuess); + schurSolver(mat, source, sol, *guesser); + }; }; + + auto solver = makeSolver(false); envCreate(SolverFn, getName(), Ls, solver); + auto solver_subtract = makeSolver(true); + envCreate(SolverFn, getName() + "_subtract", Ls, solver_subtract); } From a8d4156997c84988c929e056c3d0e90629c3d465 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Thu, 31 May 2018 17:18:58 +0100 Subject: [PATCH 173/267] Added a Hadrons module that computes the all-to-all v and w vectors --- extras/Hadrons/AllToAllVectors.hpp | 296 ++++++++++++++++++ extras/Hadrons/Makefile.am | 1 + extras/Hadrons/Modules.hpp | 69 ++-- extras/Hadrons/Modules/MSolver/A2AVectors.cc | 8 + extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 206 ++++++++++++ extras/Hadrons/modules.inc | 128 ++++---- 6 files changed, 611 insertions(+), 97 deletions(-) create mode 100644 extras/Hadrons/AllToAllVectors.hpp create mode 100644 extras/Hadrons/Modules/MSolver/A2AVectors.cc create mode 100644 extras/Hadrons/Modules/MSolver/A2AVectors.hpp diff --git a/extras/Hadrons/AllToAllVectors.hpp b/extras/Hadrons/AllToAllVectors.hpp new file mode 100644 index 00000000..7ddc0e81 --- /dev/null +++ b/extras/Hadrons/AllToAllVectors.hpp @@ -0,0 +1,296 @@ +#ifndef A2A_Vectors_hpp_ +#define A2A_Vectors_hpp_ + +#include +#include + +BEGIN_HADRONS_NAMESPACE + +//////////////////////////////// +// A2A Modes +//////////////////////////////// + +template +class A2AModesSchurDiagTwo +{ + public: + A2AModesSchurDiagTwo(void) = default; + virtual ~A2AModesSchurDiagTwo(void) = default; + + void low_mode_v(Matrix &_Matrix, const Field &evec, const RealD &eval, Field &vout) + { + + GridBase *grid = _Matrix.RedBlackGrid(); + + Field src_o(grid); + Field sol_e(grid); + Field sol_o(grid); + Field tmp(grid); + + pickCheckerboard(Odd, src_o, evec); + pickCheckerboard(Even, sol_e, vout); + pickCheckerboard(Odd, sol_o, vout); + + ///////////////////////////////////////////////////// + // v_ie = -(1/eval_i)* Mee Meo MooInv evec_i + ///////////////////////////////////////////////////// + _Matrix.MooeeInv(src_o, tmp); + assert(tmp.checkerboard == Odd); + _Matrix.Meooe(tmp, sol_e); + assert(sol_e.checkerboard == Even); + _Matrix.Mooee(sol_e, tmp); + assert(tmp.checkerboard == Even); + sol_e = -(1.0 / eval) * tmp; + assert(sol_e.checkerboard == Even); + + ///////////////////////////////////////////////////// + // v_io = -(1/eval_i)* MooInv evec_i + ///////////////////////////////////////////////////// + _Matrix.MooeeInv(src_o, tmp); + assert(tmp.checkerboard == Odd); + sol_o = -(1.0 / eval) * tmp; + assert(sol_o.checkerboard == Odd); + + setCheckerboard(vout, sol_e); + assert(sol_e.checkerboard == Even); + setCheckerboard(vout, sol_o); + assert(sol_o.checkerboard == Odd); + } + + void low_mode_w(Matrix &_Matrix, const Field &evec, const RealD &eval, Field &wout) + { + GridBase *grid = _Matrix.RedBlackGrid(); + SchurDiagTwoOperator _HermOpEO(_Matrix); + + Field src_o(grid); + Field sol_e(grid); + Field sol_o(grid); + Field tmp(grid); + + GridBase *fgrid = _Matrix.Grid(); + Field tmp_out(fgrid); + + pickCheckerboard(Odd, src_o, evec); + pickCheckerboard(Even, sol_e, wout); + pickCheckerboard(Odd, sol_o, wout); + + ///////////////////////////////////////////////////// + // w_ie = MeeInvDag MoeDag Doo evec_i + ///////////////////////////////////////////////////// + _HermOpEO.Mpc(src_o, sol_e); + assert(sol_e.checkerboard == Odd); + _Matrix.MeooeDag(sol_e, tmp); + assert(tmp.checkerboard == Even); + _Matrix.MooeeInvDag(tmp, sol_e); + assert(sol_e.checkerboard == Even); + + ///////////////////////////////////////////////////// + // w_io = Doo evec_i + ///////////////////////////////////////////////////// + _HermOpEO.Mpc(src_o, sol_o); + assert(sol_o.checkerboard == Odd); + + setCheckerboard(tmp_out, sol_e); + assert(sol_e.checkerboard == Even); + setCheckerboard(tmp_out, sol_o); + assert(sol_o.checkerboard == Odd); + + _Matrix.Dminus(tmp_out, wout); + } + + void high_mode_v(Matrix &_Matrix, std::function &Solver, const Field &source, Field &vout) + { + GridBase *fgrid = _Matrix.Grid(); + Field tmp(fgrid); + + _Matrix.Dminus(source, tmp); + Solver(vout, tmp); + } + + void high_mode_w(Matrix &_Matrix, const Field &source, Field &wout) + { + wout = source; + } +}; + +//////////////////////////////// +// Low Modes +//////////////////////////////// + +template +class A2ALMSchurDiagTwo : public A2AModesSchurDiagTwo +{ + private: + const std::vector &evec; + const std::vector &eval; + Matrix &action; + + public: + A2ALMSchurDiagTwo(const std::vector &_evec, const std::vector &_eval, Matrix &_action) : evec(_evec), eval(_eval), action(_action){}; + void operator()(int i, Field &vout, Field &wout) + { + this->low_mode_v(action, evec[i], eval[i], vout); + this->low_mode_w(action, evec[i], eval[i], wout); + } +}; + +template +class A2ALMSchurDiagTwoCoarse : public A2AModesSchurDiagTwo +{ + private: + const std::vector &subspace; + const std::vector &evec_coarse; + const std::vector &eval_coarse; + Matrix &action; + + public: + A2ALMSchurDiagTwoCoarse(const std::vector &_subspace, const std::vector &_evec_coarse, const std::vector &_eval_coarse, Matrix &_action) + : subspace(_subspace), evec_coarse(_evec_coarse), eval_coarse(_eval_coarse), action(_action){}; + + void operator()(int i, FineField &vout, FineField &wout) + { + FineField prom_evec(subspace[0]._grid); + blockPromote(evec_coarse[i], prom_evec, subspace); + this->low_mode_v(action, prom_evec, eval_coarse[i], vout); + this->low_mode_w(action, prom_evec, eval_coarse[i], wout); + } +}; + +//////////////////////////////// +// High Modes +//////////////////////////////// + +template +class A2AHMSchurDiagTwo : virtual public A2AModesSchurDiagTwo +{ + public: + void operator()(Matrix &_Matrix, std::function &Solver, const Field &source, Field &vout, Field &wout) + { + this->high_mode_v(_Matrix, Solver, source, vout); + this->high_mode_w(_Matrix, source, wout); + } +}; + +template +class A2AVectorsReturnHigh : public A2AModesSchurDiagTwo +{ + private: + Matrix &action; + std::function &Solver; + const int Nh, Ls; + + public: + std::vector w_high, v_high; + A2AVectorsReturnHigh(Matrix &_action, + std::function &_Solver, + const int _Nh, const int _Ls) + : action(_action), + Solver(_Solver), + Nh(_Nh), Ls(_Ls) + { + GridBase *fgrid = action.Grid(); + resize(Nh, fgrid); + }; + + void resize(const size_t size, GridBase *grid) + { + w_high.resize(size, grid); + v_high.resize(size, grid); + } + + void high_modes(Field &source, int i) + { + this->high_mode_v(action, Solver, source, v_high[i]); + this->high_mode_w(action, source, w_high[i]); + } + + void operator()(int i, Field &vout, Field &wout) + { + if (Ls > 1) + { + vout = v_high[i]; + wout = w_high[i]; + } + else + { + action.ExportPhysicalFermionSolution(v_high[i], vout); + action.ExportPhysicalFermionSolution(w_high[i], wout); + } + } +}; + +//////////////////////////////// +// Both Modes +//////////////////////////////// + +template +class A2AVectorsReturn : public A2AModesSchurDiagTwo +{ + private: + const std::vector &evec; + const std::vector &eval; + Matrix &action; + std::function &Solver; + const int Nl, Nh, Ls; + + public: + std::vector w_high, v_high; + + A2AVectorsReturn(const std::vector &_evec, const std::vector &_eval, + Matrix &_action, + std::function &_Solver, + const int _Nl, const int _Nh, const int _Ls) + : evec(_evec), eval(_eval), + action(_action), + Solver(_Solver), + Nl(_Nl), Nh(_Nh), Ls(_Ls) + { + GridBase *fgrid = action.Grid(); + resize(Nh, fgrid); + }; + + void resize(const size_t size, GridBase *grid) + { + w_high.resize(size, grid); + v_high.resize(size, grid); + } + + void high_modes(Field &source, int i) + { + this->high_mode_v(action, Solver, source, v_high[i]); + this->high_mode_w(action, source, w_high[i]); + } + + void operator()(int i, Field &vout, Field &wout) + { + + GridBase *fgrid = action.Grid(); + Field vtmp(fgrid); + Field wtmp(fgrid); + if (i < Nl) + { + this->low_mode_v(action, evec[i], eval[i], vtmp); + this->low_mode_w(action, evec[i], eval[i], wtmp); + } + else + { + vtmp = v_high[i-Nl]; + wtmp = w_high[i-Nl]; + } + + if (Ls > 1) + { + vout = vtmp; + wout = wtmp; + } + else + { + action.ExportPhysicalFermionSolution(vtmp, vout); + action.ExportPhysicalFermionSolution(wtmp, wout); + } + } +}; + +END_HADRONS_NAMESPACE + +#endif // A2A_Vectors_hpp_ \ No newline at end of file diff --git a/extras/Hadrons/Makefile.am b/extras/Hadrons/Makefile.am index 3b945124..959cf597 100644 --- a/extras/Hadrons/Makefile.am +++ b/extras/Hadrons/Makefile.am @@ -14,6 +14,7 @@ libHadrons_a_SOURCES = \ libHadrons_adir = $(pkgincludedir)/Hadrons nobase_libHadrons_a_HEADERS = \ $(modules_hpp) \ + AllToAllVectors.hpp \ Application.hpp \ Environment.hpp \ Exceptions.hpp \ diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 4b420517..e46bf01b 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,51 +1,52 @@ +#include +#include +#include +#include +#include +#include +#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include #include #include +#include +#include +#include +#include +#include +#include #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include #include +#include #include #include +#include +#include +#include +#include +#include #include #include #include -#include -#include -#include +#include +#include +#include #include -#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.cc b/extras/Hadrons/Modules/MSolver/A2AVectors.cc new file mode 100644 index 00000000..f72f405d --- /dev/null +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MSolver; + +template class Grid::Hadrons::MSolver::TA2AVectors; +template class Grid::Hadrons::MSolver::TA2AVectors; diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp new file mode 100644 index 00000000..e4690b13 --- /dev/null +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -0,0 +1,206 @@ +#ifndef Hadrons_MSolver_A2AVectors_hpp_ +#define Hadrons_MSolver_A2AVectors_hpp_ + +#include +#include +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * A2AVectors * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MSolver) + +class A2AVectorsPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(A2AVectorsPar, + int, Ls, + int, Nl, + int, N, + std::vector, sources, + std::string, action, + std::string, eigenpack, + std::string, solver); +}; + +template +class TA2AVectors : public Module +{ + public: + FERM_TYPE_ALIASES(FImpl,); + SOLVER_TYPE_ALIASES(FImpl,); + + typedef FermionEigenPack EPack; + typedef CoarseFermionEigenPack CoarseEPack; + + typedef A2AModesSchurDiagTwo A2ABase; + typedef A2AVectorsReturn A2AReturn; + typedef A2AVectorsReturnHigh A2AReturnHigh; + + public: + // constructor + TA2AVectors(const std::string name); + // destructor + virtual ~TA2AVectors(void) {}; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); + + private: + unsigned int Ls_; + std::string retName_; +}; + +MODULE_REGISTER_TMP(A2AVectors, ARG(TA2AVectors), MSolver); +MODULE_REGISTER_TMP(ZA2AVectors, ARG(TA2AVectors), MSolver); + +/****************************************************************************** + * TA2AVectors implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TA2AVectors::TA2AVectors(const std::string name) +: Module(name) +, retName_ (name + "_ret") +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TA2AVectors::getInput(void) +{ + std::vector in = {par().action, par().solver + "_subtract"}; + + int n = par().sources.size(); + + for (unsigned int t = 0; t < n; t += 1) + { + in.push_back(par().sources[t]); + } + + return in; +} + +template +std::vector TA2AVectors::getOutput(void) +{ + std::vector out = {getName(), retName_}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TA2AVectors::setup(void) +{ + int N = par().N; + int Nl = par().Nl; + int Nh = N - Nl; + int Ls = par().Ls; + Ls_ = env().getObjectLs(par().solver + "_subtract"); + + auto &action = envGet(FMat, par().action); + auto &solver = envGet(SolverFn, par().solver + "_subtract"); + + GridBase *fgrid = action.Grid(); + + envTmpLat(FermionField, "ferm_src", Ls_); + envTmpLat(FermionField, "tmp"); + + if (Nl > 0) + { + // Low modes + auto &epack = envGet(EPack, par().eigenpack); + + LOG(Message) << "using a2a with eigenpack '" + << par().eigenpack << "' (" + << epack.evec.size() << " modes)" << std::endl; + + envCreateDerived(A2ABase, A2AReturn, retName_, Ls, + epack.evec, epack.eval, + action, + solver, + Nl, Nh, Ls); + } + else + { + LOG(Message) << "using a2a with high modes only" << std::endl; + envCreateDerived(A2ABase, A2AReturnHigh, retName_, Ls, action, + solver, + Nh, Ls); + } +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TA2AVectors::execute(void) +{ + auto &action = envGet(FMat, par().action); + + int Nt = env().getDim(Tp); + int Nl = par().Nl; // Number of low modes + int Nc = FImpl::Dimension; + + // High modes + auto sources = par().sources; + + envGetTmp(FermionField, ferm_src); + envGetTmp(FermionField, tmp); + int N_count = 0; + for (unsigned int s = 0; s < Ns; ++s) + for (unsigned int c = 0; c < Nc; ++c) + for (unsigned int T = 0; T < Nt; T++) + { + auto &fullSrc = envGet(PropagatorField, sources[T]); + // source conversion for 4D sources + if (!env().isObject5d(sources[T])) + { + if (Ls_ == 1) + { + PropToFerm(ferm_src, fullSrc, s, c); + } + else + { + PropToFerm(tmp, fullSrc, s, c); + action.ImportPhysicalFermionSource(tmp, ferm_src); + } + } + // source conversion for 5D sources + else + { + if (Ls_ != env().getObjectLs(sources[T])) + { + HADRONS_ERROR(Size, "Ls mismatch between quark action and source"); + } + else + { + PropToFerm(ferm_src, fullSrc, s, c); + } + } + + if (Nl > 0) + { + auto a2areturn = envGetDerived(A2ABase, A2AReturn, retName_); + a2areturn.high_modes(ferm_src, N_count); + } + else + { + auto a2areturnhigh = envGetDerived(A2ABase, A2AReturnHigh, retName_); + a2areturnhigh.high_modes(ferm_src, N_count); + } + N_count++; + } + +} +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MSolver_A2AVectors_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 57dc8d20..aecfdd5a 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -1,103 +1,105 @@ modules_cc =\ Modules/MContraction/WeakHamiltonianEye.cc \ Modules/MContraction/Baryon.cc \ - Modules/MContraction/Meson.cc \ Modules/MContraction/WeakNeutral4ptDisc.cc \ - Modules/MContraction/WeakHamiltonianNonEye.cc \ - Modules/MContraction/WardIdentity.cc \ Modules/MContraction/DiscLoop.cc \ + Modules/MContraction/WeakHamiltonianNonEye.cc \ + Modules/MContraction/Meson.cc \ + Modules/MContraction/WardIdentity.cc \ Modules/MContraction/Gamma3pt.cc \ - Modules/MFermion/FreeProp.cc \ - Modules/MFermion/GaugeProp.cc \ - Modules/MSource/Point.cc \ - Modules/MSource/Wall.cc \ - Modules/MSource/SeqConserved.cc \ - Modules/MSource/SeqGamma.cc \ - Modules/MSource/Z2.cc \ - Modules/MSink/Point.cc \ - Modules/MSink/Smear.cc \ - Modules/MSolver/RBPrecCG.cc \ - Modules/MSolver/LocalCoherenceLanczos.cc \ Modules/MGauge/Unit.cc \ + Modules/MGauge/FundtoHirep.cc \ Modules/MGauge/StochEm.cc \ Modules/MGauge/Random.cc \ - Modules/MGauge/FundtoHirep.cc \ - Modules/MUtilities/TestSeqGamma.cc \ + Modules/MSource/Wall.cc \ + Modules/MSource/SeqConserved.cc \ + Modules/MSource/Z2.cc \ + Modules/MSource/SeqGamma.cc \ + Modules/MSource/Point.cc \ Modules/MUtilities/TestSeqConserved.cc \ + Modules/MUtilities/TestSeqGamma.cc \ Modules/MLoop/NoiseLoop.cc \ - Modules/MScalar/FreeProp.cc \ - Modules/MScalar/ChargedProp.cc \ - Modules/MAction/Wilson.cc \ - Modules/MAction/ZMobiusDWF.cc \ - Modules/MAction/WilsonClover.cc \ - Modules/MAction/DWF.cc \ Modules/MScalarSUN/TrPhi.cc \ - Modules/MScalarSUN/Grad.cc \ - Modules/MScalarSUN/TimeMomProbe.cc \ Modules/MScalarSUN/TrMag.cc \ - Modules/MScalarSUN/TrKinetic.cc \ - Modules/MScalarSUN/EMT.cc \ - Modules/MScalarSUN/ShiftProbe.cc \ + Modules/MScalarSUN/Grad.cc \ Modules/MScalarSUN/TransProj.cc \ Modules/MScalarSUN/StochFreeField.cc \ Modules/MScalarSUN/TwoPoint.cc \ Modules/MScalarSUN/TwoPointNPR.cc \ + Modules/MScalarSUN/EMT.cc \ + Modules/MScalarSUN/ShiftProbe.cc \ + Modules/MScalarSUN/TrKinetic.cc \ Modules/MScalarSUN/Div.cc \ + Modules/MScalarSUN/TimeMomProbe.cc \ + Modules/MScalar/FreeProp.cc \ + Modules/MScalar/ChargedProp.cc \ + Modules/MIO/LoadCoarseEigenPack.cc \ + Modules/MIO/LoadNersc.cc \ Modules/MIO/LoadEigenPack.cc \ Modules/MIO/LoadBinary.cc \ - Modules/MIO/LoadNersc.cc \ - Modules/MIO/LoadCoarseEigenPack.cc + Modules/MFermion/FreeProp.cc \ + Modules/MFermion/GaugeProp.cc \ + Modules/MSolver/LocalCoherenceLanczos.cc \ + Modules/MSolver/A2AVectors.cc \ + Modules/MSolver/RBPrecCG.cc \ + Modules/MAction/WilsonClover.cc \ + Modules/MAction/Wilson.cc \ + Modules/MAction/DWF.cc \ + Modules/MAction/ZMobiusDWF.cc \ + Modules/MSink/Point.cc \ + Modules/MSink/Smear.cc modules_hpp =\ + Modules/MContraction/WeakNeutral4ptDisc.hpp \ + Modules/MContraction/WeakHamiltonianEye.hpp \ + Modules/MContraction/DiscLoop.hpp \ + Modules/MContraction/WeakHamiltonianNonEye.hpp \ + Modules/MContraction/WeakHamiltonian.hpp \ + Modules/MContraction/WardIdentity.hpp \ + Modules/MContraction/Gamma3pt.hpp \ Modules/MContraction/Baryon.hpp \ Modules/MContraction/Meson.hpp \ - Modules/MContraction/WeakHamiltonian.hpp \ - Modules/MContraction/WeakHamiltonianNonEye.hpp \ - Modules/MContraction/DiscLoop.hpp \ - Modules/MContraction/WeakNeutral4ptDisc.hpp \ - Modules/MContraction/Gamma3pt.hpp \ - Modules/MContraction/WardIdentity.hpp \ - Modules/MContraction/WeakHamiltonianEye.hpp \ - Modules/MFermion/FreeProp.hpp \ - Modules/MFermion/GaugeProp.hpp \ - Modules/MSource/SeqGamma.hpp \ - Modules/MSource/Point.hpp \ - Modules/MSource/Wall.hpp \ - Modules/MSource/Z2.hpp \ - Modules/MSource/SeqConserved.hpp \ - Modules/MSink/Smear.hpp \ - Modules/MSink/Point.hpp \ - Modules/MSolver/LocalCoherenceLanczos.hpp \ - Modules/MSolver/RBPrecCG.hpp \ - Modules/MGauge/Unit.hpp \ Modules/MGauge/Random.hpp \ Modules/MGauge/FundtoHirep.hpp \ Modules/MGauge/StochEm.hpp \ + Modules/MGauge/Unit.hpp \ + Modules/MSource/Wall.hpp \ + Modules/MSource/Point.hpp \ + Modules/MSource/Z2.hpp \ + Modules/MSource/SeqConserved.hpp \ + Modules/MSource/SeqGamma.hpp \ Modules/MUtilities/TestSeqGamma.hpp \ Modules/MUtilities/TestSeqConserved.hpp \ Modules/MLoop/NoiseLoop.hpp \ - Modules/MScalar/FreeProp.hpp \ - Modules/MScalar/Scalar.hpp \ - Modules/MScalar/ChargedProp.hpp \ - Modules/MAction/DWF.hpp \ - Modules/MAction/Wilson.hpp \ - Modules/MAction/WilsonClover.hpp \ - Modules/MAction/ZMobiusDWF.hpp \ - Modules/MScalarSUN/StochFreeField.hpp \ Modules/MScalarSUN/TwoPointNPR.hpp \ - Modules/MScalarSUN/ShiftProbe.hpp \ - Modules/MScalarSUN/Div.hpp \ - Modules/MScalarSUN/TimeMomProbe.hpp \ Modules/MScalarSUN/TrMag.hpp \ + Modules/MScalarSUN/Grad.hpp \ Modules/MScalarSUN/EMT.hpp \ Modules/MScalarSUN/TwoPoint.hpp \ + Modules/MScalarSUN/TimeMomProbe.hpp \ + Modules/MScalarSUN/TrKinetic.hpp \ + Modules/MScalarSUN/Div.hpp \ + Modules/MScalarSUN/ShiftProbe.hpp \ + Modules/MScalarSUN/StochFreeField.hpp \ Modules/MScalarSUN/TrPhi.hpp \ Modules/MScalarSUN/Utils.hpp \ Modules/MScalarSUN/TransProj.hpp \ - Modules/MScalarSUN/Grad.hpp \ - Modules/MScalarSUN/TrKinetic.hpp \ - Modules/MIO/LoadEigenPack.hpp \ + Modules/MScalar/ChargedProp.hpp \ + Modules/MScalar/Scalar.hpp \ + Modules/MScalar/FreeProp.hpp \ Modules/MIO/LoadNersc.hpp \ + Modules/MIO/LoadEigenPack.hpp \ + Modules/MIO/LoadBinary.hpp \ Modules/MIO/LoadCoarseEigenPack.hpp \ - Modules/MIO/LoadBinary.hpp + Modules/MFermion/GaugeProp.hpp \ + Modules/MFermion/FreeProp.hpp \ + Modules/MSolver/LocalCoherenceLanczos.hpp \ + Modules/MSolver/RBPrecCG.hpp \ + Modules/MSolver/A2AVectors.hpp \ + Modules/MAction/Wilson.hpp \ + Modules/MAction/ZMobiusDWF.hpp \ + Modules/MAction/WilsonClover.hpp \ + Modules/MAction/DWF.hpp \ + Modules/MSink/Point.hpp \ + Modules/MSink/Smear.hpp From b5fc5e203031f2fbc04c42f5e3fdf69541fc19ed Mon Sep 17 00:00:00 2001 From: fionnoh Date: Wed, 20 Jun 2018 10:59:07 +0100 Subject: [PATCH 174/267] All to all module update that hit a promising milestone. Commiting for a reference for future changes. --- extras/Hadrons/AllToAllVectors.hpp | 277 +++++++++--------- extras/Hadrons/Modules.hpp | 91 +++--- extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 98 ++++--- extras/Hadrons/modules.inc | 174 +++++------ 4 files changed, 326 insertions(+), 314 deletions(-) diff --git a/extras/Hadrons/AllToAllVectors.hpp b/extras/Hadrons/AllToAllVectors.hpp index 7ddc0e81..de97051f 100644 --- a/extras/Hadrons/AllToAllVectors.hpp +++ b/extras/Hadrons/AllToAllVectors.hpp @@ -17,77 +17,53 @@ class A2AModesSchurDiagTwo A2AModesSchurDiagTwo(void) = default; virtual ~A2AModesSchurDiagTwo(void) = default; - void low_mode_v(Matrix &_Matrix, const Field &evec, const RealD &eval, Field &vout) + void Doo(Matrix &action, const Field &in, Field &out) { + Field tmp(in._grid); - GridBase *grid = _Matrix.RedBlackGrid(); + action.MooeeInv(in, out); + action.Meooe(out, tmp); + action.MooeeInv(tmp, out); + action.Meooe(out, tmp); - Field src_o(grid); - Field sol_e(grid); - Field sol_o(grid); - Field tmp(grid); - - pickCheckerboard(Odd, src_o, evec); - pickCheckerboard(Even, sol_e, vout); - pickCheckerboard(Odd, sol_o, vout); - - ///////////////////////////////////////////////////// - // v_ie = -(1/eval_i)* Mee Meo MooInv evec_i - ///////////////////////////////////////////////////// - _Matrix.MooeeInv(src_o, tmp); - assert(tmp.checkerboard == Odd); - _Matrix.Meooe(tmp, sol_e); - assert(sol_e.checkerboard == Even); - _Matrix.Mooee(sol_e, tmp); - assert(tmp.checkerboard == Even); - sol_e = -(1.0 / eval) * tmp; - assert(sol_e.checkerboard == Even); - - ///////////////////////////////////////////////////// - // v_io = -(1/eval_i)* MooInv evec_i - ///////////////////////////////////////////////////// - _Matrix.MooeeInv(src_o, tmp); - assert(tmp.checkerboard == Odd); - sol_o = -(1.0 / eval) * tmp; - assert(sol_o.checkerboard == Odd); - - setCheckerboard(vout, sol_e); - assert(sol_e.checkerboard == Even); - setCheckerboard(vout, sol_o); - assert(sol_o.checkerboard == Odd); + axpy(out, -1.0, tmp, in); } - void low_mode_w(Matrix &_Matrix, const Field &evec, const RealD &eval, Field &wout) + void low_mode_v(Matrix &action, const Field &evec, const RealD &eval, Field &vout, bool return_5d = true) { - GridBase *grid = _Matrix.RedBlackGrid(); - SchurDiagTwoOperator _HermOpEO(_Matrix); + GridBase *grid = action.RedBlackGrid(); Field src_o(grid); Field sol_e(grid); Field sol_o(grid); Field tmp(grid); - GridBase *fgrid = _Matrix.Grid(); + GridBase *fgrid = action.Grid(); Field tmp_out(fgrid); - pickCheckerboard(Odd, src_o, evec); - pickCheckerboard(Even, sol_e, wout); - pickCheckerboard(Odd, sol_o, wout); + src_o = evec; + src_o.checkerboard = Odd; + pickCheckerboard(Even, sol_e, tmp_out); + pickCheckerboard(Odd, sol_o, tmp_out); ///////////////////////////////////////////////////// - // w_ie = MeeInvDag MoeDag Doo evec_i + // v_ie = -(1/eval_i) * MeeInv Meo MooInv evec_i ///////////////////////////////////////////////////// - _HermOpEO.Mpc(src_o, sol_e); - assert(sol_e.checkerboard == Odd); - _Matrix.MeooeDag(sol_e, tmp); + action.MooeeInv(src_o, tmp); + assert(tmp.checkerboard == Odd); + action.Meooe(tmp, sol_e); + assert(sol_e.checkerboard == Even); + action.MooeeInv(sol_e, tmp); assert(tmp.checkerboard == Even); - _Matrix.MooeeInvDag(tmp, sol_e); + sol_e = (-1.0 / eval) * tmp; assert(sol_e.checkerboard == Even); ///////////////////////////////////////////////////// - // w_io = Doo evec_i + // v_io = (1/eval_i) * MooInv evec_i ///////////////////////////////////////////////////// - _HermOpEO.Mpc(src_o, sol_o); + action.MooeeInv(src_o, tmp); + assert(tmp.checkerboard == Odd); + sol_o = (1.0 / eval) * tmp; assert(sol_o.checkerboard == Odd); setCheckerboard(tmp_out, sol_e); @@ -95,21 +71,85 @@ class A2AModesSchurDiagTwo setCheckerboard(tmp_out, sol_o); assert(sol_o.checkerboard == Odd); - _Matrix.Dminus(tmp_out, wout); + this->return_dim(action, tmp_out, vout, return_5d); } - void high_mode_v(Matrix &_Matrix, std::function &Solver, const Field &source, Field &vout) + void low_mode_w(Matrix &action, const Field &evec, const RealD &eval, Field &wout, bool return_5d = true) { - GridBase *fgrid = _Matrix.Grid(); + GridBase *grid = action.RedBlackGrid(); + SchurDiagTwoOperator _HermOpEO(action); + + Field src_o(grid); + Field sol_e(grid); + Field sol_o(grid); + Field tmp(grid); + + GridBase *fgrid = action.Grid(); + Field tmp_out(fgrid); + Field tmp_wout(fgrid); + + src_o = evec; + src_o.checkerboard = Odd; + pickCheckerboard(Even, sol_e, tmp_wout); + pickCheckerboard(Odd, sol_o, tmp_wout); + + ///////////////////////////////////////////////////// + // w_ie = - MeeInvDag MoeDag Doo evec_i + ///////////////////////////////////////////////////// + Doo(action, src_o, tmp); + assert(tmp.checkerboard == Odd); + action.MeooeDag(tmp, sol_e); + assert(sol_e.checkerboard == Even); + action.MooeeInvDag(sol_e, tmp); + assert(tmp.checkerboard == Even); + sol_e = (-1.0) * tmp; + + ///////////////////////////////////////////////////// + // w_io = Doo evec_i + ///////////////////////////////////////////////////// + Doo(action, src_o, sol_o); + assert(sol_o.checkerboard == Odd); + + setCheckerboard(tmp_wout, sol_e); + assert(sol_e.checkerboard == Even); + setCheckerboard(tmp_wout, sol_o); + assert(sol_o.checkerboard == Odd); + + action.DminusDag(tmp_wout, tmp_out); + this->return_dim(action, tmp_out, wout, return_5d); + } + + void high_mode_v(Matrix &action, std::function &Solver, const Field &source, Field &vout, bool return_5d = true) + { + GridBase *fgrid = action.Grid(); Field tmp(fgrid); + Field tmp_out(fgrid); - _Matrix.Dminus(source, tmp); - Solver(vout, tmp); + action.Dminus(source, tmp); + Solver(tmp_out, source); // Note: Solver is Solver(out, in) + this->return_dim(action, tmp_out, vout, return_5d); } - void high_mode_w(Matrix &_Matrix, const Field &source, Field &wout) + void high_mode_w(Matrix &action, const Field &source4d, Field &wout, bool return_5d = true) { - wout = source; + // GridBase *fgrid = action.Grid(); + // Field tmp_out(fgrid); + + // tmp_out = source; + // this->return_dim(action, tmp_out, wout, return_5d); + wout = source4d; + } + + void return_dim(Matrix &action, const Field &in, Field &out, bool return_5d) + { + if (return_5d) + { + out = in; + } + else + { + action.ExportPhysicalFermionSolution(in, out); + } } }; @@ -123,7 +163,7 @@ class A2ALMSchurDiagTwo : public A2AModesSchurDiagTwo private: const std::vector &evec; const std::vector &eval; - Matrix &action; + Matrix &action; public: A2ALMSchurDiagTwo(const std::vector &_evec, const std::vector &_eval, Matrix &_action) : evec(_evec), eval(_eval), action(_action){}; @@ -138,10 +178,10 @@ template class A2ALMSchurDiagTwoCoarse : public A2AModesSchurDiagTwo { private: - const std::vector &subspace; + const std::vector &subspace; const std::vector &evec_coarse; - const std::vector &eval_coarse; - Matrix &action; + const std::vector &eval_coarse; + Matrix &action; public: A2ALMSchurDiagTwoCoarse(const std::vector &_subspace, const std::vector &_evec_coarse, const std::vector &_eval_coarse, Matrix &_action) @@ -164,58 +204,10 @@ template class A2AHMSchurDiagTwo : virtual public A2AModesSchurDiagTwo { public: - void operator()(Matrix &_Matrix, std::function &Solver, const Field &source, Field &vout, Field &wout) + void operator()(Matrix &action, std::function &Solver, const Field &source, Field &vout, Field &wout) { - this->high_mode_v(_Matrix, Solver, source, vout); - this->high_mode_w(_Matrix, source, wout); - } -}; - -template -class A2AVectorsReturnHigh : public A2AModesSchurDiagTwo -{ - private: - Matrix &action; - std::function &Solver; - const int Nh, Ls; - - public: - std::vector w_high, v_high; - A2AVectorsReturnHigh(Matrix &_action, - std::function &_Solver, - const int _Nh, const int _Ls) - : action(_action), - Solver(_Solver), - Nh(_Nh), Ls(_Ls) - { - GridBase *fgrid = action.Grid(); - resize(Nh, fgrid); - }; - - void resize(const size_t size, GridBase *grid) - { - w_high.resize(size, grid); - v_high.resize(size, grid); - } - - void high_modes(Field &source, int i) - { - this->high_mode_v(action, Solver, source, v_high[i]); - this->high_mode_w(action, source, w_high[i]); - } - - void operator()(int i, Field &vout, Field &wout) - { - if (Ls > 1) - { - vout = v_high[i]; - wout = w_high[i]; - } - else - { - action.ExportPhysicalFermionSolution(v_high[i], vout); - action.ExportPhysicalFermionSolution(w_high[i], wout); - } + this->high_mode_v(action, Solver, source, vout); + this->high_mode_w(action, source, wout); } }; @@ -227,26 +219,36 @@ template class A2AVectorsReturn : public A2AModesSchurDiagTwo { private: - const std::vector &evec; - const std::vector &eval; + const std::vector *evec; + const std::vector *eval; Matrix &action; std::function &Solver; - const int Nl, Nh, Ls; - - public: + const int Nl, Nh; + const bool return_5d; std::vector w_high, v_high; - A2AVectorsReturn(const std::vector &_evec, const std::vector &_eval, + public: + A2AVectorsReturn(const std::vector *_evec, const std::vector *_eval, Matrix &_action, std::function &_Solver, - const int _Nl, const int _Nh, const int _Ls) + const int _Nl, const int _Nh, + const bool _return_5d) : evec(_evec), eval(_eval), action(_action), Solver(_Solver), - Nl(_Nl), Nh(_Nh), Ls(_Ls) + Nl(_Nl), Nh(_Nh), + return_5d(_return_5d) { - GridBase *fgrid = action.Grid(); - resize(Nh, fgrid); + GridBase *grid; + if (return_5d) + { + grid = action.Grid(); + } + else + { + grid = action.GaugeGrid(); + } + resize(Nh, grid); }; void resize(const size_t size, GridBase *grid) @@ -255,38 +257,25 @@ class A2AVectorsReturn : public A2AModesSchurDiagTwo v_high.resize(size, grid); } - void high_modes(Field &source, int i) + void high_modes(Field &source5d, Field &source4d, int i) { - this->high_mode_v(action, Solver, source, v_high[i]); - this->high_mode_w(action, source, w_high[i]); + LOG(Message) << "A2A high modes for i = " << i << std::endl; + this->high_mode_v(action, Solver, source5d, v_high[i], return_5d); + this->high_mode_w(action, source4d, w_high[i], return_5d); } void operator()(int i, Field &vout, Field &wout) { - - GridBase *fgrid = action.Grid(); - Field vtmp(fgrid); - Field wtmp(fgrid); if (i < Nl) - { - this->low_mode_v(action, evec[i], eval[i], vtmp); - this->low_mode_w(action, evec[i], eval[i], wtmp); + { + LOG(Message) << "A2A low modes for i = " << i << std::endl; + this->low_mode_v(action, evec->at(i), eval->at(i), vout, return_5d); + this->low_mode_w(action, evec->at(i), eval->at(i), wout, return_5d); } else { - vtmp = v_high[i-Nl]; - wtmp = w_high[i-Nl]; - } - - if (Ls > 1) - { - vout = vtmp; - wout = wtmp; - } - else - { - action.ExportPhysicalFermionSolution(vtmp, vout); - action.ExportPhysicalFermionSolution(wtmp, wout); + vout = v_high[i - Nl]; + wout = w_high[i - Nl]; } } }; diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index e46bf01b..f81c01da 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,52 +1,53 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include +#include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include #include #include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp index e4690b13..107d1edb 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -18,7 +18,7 @@ class A2AVectorsPar: Serializable { public: GRID_SERIALIZABLE_CLASS_MEMBERS(A2AVectorsPar, - int, Ls, + bool, return_5d, int, Nl, int, N, std::vector, sources, @@ -39,7 +39,6 @@ class TA2AVectors : public Module typedef A2AModesSchurDiagTwo A2ABase; typedef A2AVectorsReturn A2AReturn; - typedef A2AVectorsReturnHigh A2AReturnHigh; public: // constructor @@ -56,7 +55,7 @@ class TA2AVectors : public Module private: unsigned int Ls_; - std::string retName_; + std::string retName_, whighName_, vhighName_; }; MODULE_REGISTER_TMP(A2AVectors, ARG(TA2AVectors), MSolver); @@ -70,13 +69,15 @@ template TA2AVectors::TA2AVectors(const std::string name) : Module(name) , retName_ (name + "_ret") +, whighName_ (name + "_whigh") +, vhighName_ (name + "_vhigh") {} // dependencies/products /////////////////////////////////////////////////////// template std::vector TA2AVectors::getInput(void) { - std::vector in = {par().action, par().solver + "_subtract"}; + std::vector in = {par().action, par().solver, par().solver + "_subtract"}; int n = par().sources.size(); @@ -103,39 +104,57 @@ void TA2AVectors::setup(void) int N = par().N; int Nl = par().Nl; int Nh = N - Nl; - int Ls = par().Ls; + bool return_5d = par().return_5d; + int Ls, Ls_; + Ls_ = env().getObjectLs(par().solver + "_subtract"); + auto &solver = envGet(SolverFn, par().solver + "_subtract"); + if (!(Nl > 0)) + { + Ls_ = env().getObjectLs(par().solver); + auto &solver = envGet(SolverFn, par().solver); + } + + if (return_5d) + { + Ls = Ls_; + } + else + { + Ls = 1; + } auto &action = envGet(FMat, par().action); - auto &solver = envGet(SolverFn, par().solver + "_subtract"); - - GridBase *fgrid = action.Grid(); envTmpLat(FermionField, "ferm_src", Ls_); envTmpLat(FermionField, "tmp"); + std::vector *evec; + const std::vector *eval; + if (Nl > 0) { // Low modes auto &epack = envGet(EPack, par().eigenpack); - LOG(Message) << "using a2a with eigenpack '" - << par().eigenpack << "' (" - << epack.evec.size() << " modes)" << std::endl; - - envCreateDerived(A2ABase, A2AReturn, retName_, Ls, - epack.evec, epack.eval, - action, - solver, - Nl, Nh, Ls); + LOG(Message) << "Creating a2a vectors " << getName() << + " using eigenpack '" << par().eigenpack << "' (" + << epack.evec.size() << " modes)" << + " and " << Nh << " high modes." << std::endl; + evec = &epack.evec; + eval = &epack.eval; } else { - LOG(Message) << "using a2a with high modes only" << std::endl; - envCreateDerived(A2ABase, A2AReturnHigh, retName_, Ls, action, - solver, - Nh, Ls); + LOG(Message) << "Creating a2a vectors " << getName() << + " using " << Nh << " high modes only." << std::endl; } + envCreateDerived(A2ABase, A2AReturn, retName_, Ls, + evec, eval, + action, + solver, + Nl, Nh, + return_5d); } // execution /////////////////////////////////////////////////////////////////// @@ -145,30 +164,41 @@ void TA2AVectors::execute(void) auto &action = envGet(FMat, par().action); int Nt = env().getDim(Tp); - int Nl = par().Nl; // Number of low modes int Nc = FImpl::Dimension; + int Ls_; + int Nl = par().Nl; + Ls_ = env().getObjectLs(par().solver + "_subtract"); + if (!(Nl > 0)) + { + Ls_ = env().getObjectLs(par().solver); + } + + auto &a2areturn = envGetDerived(A2ABase, A2AReturn, retName_); // High modes auto sources = par().sources; + int Nsrc = par().sources.size(); envGetTmp(FermionField, ferm_src); envGetTmp(FermionField, tmp); + int N_count = 0; for (unsigned int s = 0; s < Ns; ++s) for (unsigned int c = 0; c < Nc; ++c) - for (unsigned int T = 0; T < Nt; T++) + for (unsigned int T = 0; T < Nsrc; T++) { - auto &fullSrc = envGet(PropagatorField, sources[T]); + auto &prop_src = envGet(PropagatorField, sources[T]); + LOG(Message) << "A2A src for s = " << s << " , c = " << c << ", T = " << T << std::endl; // source conversion for 4D sources if (!env().isObject5d(sources[T])) { if (Ls_ == 1) { - PropToFerm(ferm_src, fullSrc, s, c); + PropToFerm(ferm_src, prop_src, s, c); } else { - PropToFerm(tmp, fullSrc, s, c); + PropToFerm(tmp, prop_src, s, c); action.ImportPhysicalFermionSource(tmp, ferm_src); } } @@ -181,23 +211,13 @@ void TA2AVectors::execute(void) } else { - PropToFerm(ferm_src, fullSrc, s, c); + PropToFerm(ferm_src, prop_src, s, c); } } - - if (Nl > 0) - { - auto a2areturn = envGetDerived(A2ABase, A2AReturn, retName_); - a2areturn.high_modes(ferm_src, N_count); - } - else - { - auto a2areturnhigh = envGetDerived(A2ABase, A2AReturnHigh, retName_); - a2areturnhigh.high_modes(ferm_src, N_count); - } + LOG(Message) << "a2areturn.high_modes Ncount = " << N_count << std::endl; + a2areturn.high_modes(ferm_src, tmp, N_count); N_count++; } - } END_MODULE_NAMESPACE diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index aecfdd5a..9bdb48cc 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -1,105 +1,107 @@ modules_cc =\ - Modules/MContraction/WeakHamiltonianEye.cc \ - Modules/MContraction/Baryon.cc \ - Modules/MContraction/WeakNeutral4ptDisc.cc \ - Modules/MContraction/DiscLoop.cc \ - Modules/MContraction/WeakHamiltonianNonEye.cc \ - Modules/MContraction/Meson.cc \ - Modules/MContraction/WardIdentity.cc \ - Modules/MContraction/Gamma3pt.cc \ - Modules/MGauge/Unit.cc \ - Modules/MGauge/FundtoHirep.cc \ - Modules/MGauge/StochEm.cc \ - Modules/MGauge/Random.cc \ - Modules/MSource/Wall.cc \ Modules/MSource/SeqConserved.cc \ - Modules/MSource/Z2.cc \ Modules/MSource/SeqGamma.cc \ Modules/MSource/Point.cc \ - Modules/MUtilities/TestSeqConserved.cc \ - Modules/MUtilities/TestSeqGamma.cc \ - Modules/MLoop/NoiseLoop.cc \ - Modules/MScalarSUN/TrPhi.cc \ - Modules/MScalarSUN/TrMag.cc \ - Modules/MScalarSUN/Grad.cc \ - Modules/MScalarSUN/TransProj.cc \ - Modules/MScalarSUN/StochFreeField.cc \ - Modules/MScalarSUN/TwoPoint.cc \ - Modules/MScalarSUN/TwoPointNPR.cc \ - Modules/MScalarSUN/EMT.cc \ - Modules/MScalarSUN/ShiftProbe.cc \ - Modules/MScalarSUN/TrKinetic.cc \ - Modules/MScalarSUN/Div.cc \ - Modules/MScalarSUN/TimeMomProbe.cc \ - Modules/MScalar/FreeProp.cc \ - Modules/MScalar/ChargedProp.cc \ - Modules/MIO/LoadCoarseEigenPack.cc \ + Modules/MSource/Z2.cc \ + Modules/MSource/Wall.cc \ + Modules/MSink/Point.cc \ + Modules/MSink/Smear.cc \ Modules/MIO/LoadNersc.cc \ Modules/MIO/LoadEigenPack.cc \ + Modules/MIO/LoadCoarseEigenPack.cc \ Modules/MIO/LoadBinary.cc \ - Modules/MFermion/FreeProp.cc \ - Modules/MFermion/GaugeProp.cc \ - Modules/MSolver/LocalCoherenceLanczos.cc \ - Modules/MSolver/A2AVectors.cc \ - Modules/MSolver/RBPrecCG.cc \ - Modules/MAction/WilsonClover.cc \ - Modules/MAction/Wilson.cc \ + Modules/MScalarSUN/TwoPointNPR.cc \ + Modules/MScalarSUN/TrPhi.cc \ + Modules/MScalarSUN/StochFreeField.cc \ + Modules/MScalarSUN/TrMag.cc \ + Modules/MScalarSUN/Div.cc \ + Modules/MScalarSUN/ShiftProbe.cc \ + Modules/MScalarSUN/Grad.cc \ + Modules/MScalarSUN/TwoPoint.cc \ + Modules/MScalarSUN/TimeMomProbe.cc \ + Modules/MScalarSUN/EMT.cc \ + Modules/MScalarSUN/TransProj.cc \ + Modules/MScalarSUN/TrKinetic.cc \ Modules/MAction/DWF.cc \ Modules/MAction/ZMobiusDWF.cc \ - Modules/MSink/Point.cc \ - Modules/MSink/Smear.cc + Modules/MAction/Wilson.cc \ + Modules/MAction/WilsonClover.cc \ + Modules/MContraction/WeakHamiltonianNonEye.cc \ + Modules/MContraction/WardIdentity.cc \ + Modules/MContraction/WeakHamiltonianEye.cc \ + Modules/MContraction/DiscLoop.cc \ + Modules/MContraction/A2AMeson.cc \ + Modules/MContraction/Baryon.cc \ + Modules/MContraction/Gamma3pt.cc \ + Modules/MContraction/WeakNeutral4ptDisc.cc \ + Modules/MContraction/Meson.cc \ + Modules/MScalar/ChargedProp.cc \ + Modules/MScalar/FreeProp.cc \ + Modules/MUtilities/TestSeqGamma.cc \ + Modules/MUtilities/TestSeqConserved.cc \ + Modules/MFermion/FreeProp.cc \ + Modules/MFermion/GaugeProp.cc \ + Modules/MSolver/RBPrecCG.cc \ + Modules/MSolver/LocalCoherenceLanczos.cc \ + Modules/MSolver/A2AVectors.cc \ + Modules/MLoop/NoiseLoop.cc \ + Modules/MGauge/Unit.cc \ + Modules/MGauge/Random.cc \ + Modules/MGauge/StochEm.cc \ + Modules/MGauge/FundtoHirep.cc modules_hpp =\ - Modules/MContraction/WeakNeutral4ptDisc.hpp \ - Modules/MContraction/WeakHamiltonianEye.hpp \ - Modules/MContraction/DiscLoop.hpp \ - Modules/MContraction/WeakHamiltonianNonEye.hpp \ - Modules/MContraction/WeakHamiltonian.hpp \ - Modules/MContraction/WardIdentity.hpp \ - Modules/MContraction/Gamma3pt.hpp \ - Modules/MContraction/Baryon.hpp \ - Modules/MContraction/Meson.hpp \ - Modules/MGauge/Random.hpp \ - Modules/MGauge/FundtoHirep.hpp \ - Modules/MGauge/StochEm.hpp \ - Modules/MGauge/Unit.hpp \ - Modules/MSource/Wall.hpp \ - Modules/MSource/Point.hpp \ - Modules/MSource/Z2.hpp \ Modules/MSource/SeqConserved.hpp \ Modules/MSource/SeqGamma.hpp \ - Modules/MUtilities/TestSeqGamma.hpp \ - Modules/MUtilities/TestSeqConserved.hpp \ - Modules/MLoop/NoiseLoop.hpp \ - Modules/MScalarSUN/TwoPointNPR.hpp \ - Modules/MScalarSUN/TrMag.hpp \ - Modules/MScalarSUN/Grad.hpp \ - Modules/MScalarSUN/EMT.hpp \ - Modules/MScalarSUN/TwoPoint.hpp \ - Modules/MScalarSUN/TimeMomProbe.hpp \ - Modules/MScalarSUN/TrKinetic.hpp \ - Modules/MScalarSUN/Div.hpp \ - Modules/MScalarSUN/ShiftProbe.hpp \ - Modules/MScalarSUN/StochFreeField.hpp \ - Modules/MScalarSUN/TrPhi.hpp \ - Modules/MScalarSUN/Utils.hpp \ - Modules/MScalarSUN/TransProj.hpp \ - Modules/MScalar/ChargedProp.hpp \ - Modules/MScalar/Scalar.hpp \ - Modules/MScalar/FreeProp.hpp \ - Modules/MIO/LoadNersc.hpp \ - Modules/MIO/LoadEigenPack.hpp \ + Modules/MSource/Z2.hpp \ + Modules/MSource/Point.hpp \ + Modules/MSource/Wall.hpp \ + Modules/MSink/Smear.hpp \ + Modules/MSink/Point.hpp \ Modules/MIO/LoadBinary.hpp \ + Modules/MIO/LoadEigenPack.hpp \ Modules/MIO/LoadCoarseEigenPack.hpp \ - Modules/MFermion/GaugeProp.hpp \ - Modules/MFermion/FreeProp.hpp \ - Modules/MSolver/LocalCoherenceLanczos.hpp \ - Modules/MSolver/RBPrecCG.hpp \ - Modules/MSolver/A2AVectors.hpp \ - Modules/MAction/Wilson.hpp \ + Modules/MIO/LoadNersc.hpp \ + Modules/MScalarSUN/Utils.hpp \ + Modules/MScalarSUN/Grad.hpp \ + Modules/MScalarSUN/TrPhi.hpp \ + Modules/MScalarSUN/TwoPointNPR.hpp \ + Modules/MScalarSUN/TwoPoint.hpp \ + Modules/MScalarSUN/TransProj.hpp \ + Modules/MScalarSUN/TrKinetic.hpp \ + Modules/MScalarSUN/StochFreeField.hpp \ + Modules/MScalarSUN/ShiftProbe.hpp \ + Modules/MScalarSUN/TimeMomProbe.hpp \ + Modules/MScalarSUN/Div.hpp \ + Modules/MScalarSUN/TrMag.hpp \ + Modules/MScalarSUN/EMT.hpp \ Modules/MAction/ZMobiusDWF.hpp \ + Modules/MAction/Wilson.hpp \ Modules/MAction/WilsonClover.hpp \ Modules/MAction/DWF.hpp \ - Modules/MSink/Point.hpp \ - Modules/MSink/Smear.hpp + Modules/MContraction/WeakHamiltonian.hpp \ + Modules/MContraction/DiscLoop.hpp \ + Modules/MContraction/Meson.hpp \ + Modules/MContraction/WardIdentity.hpp \ + Modules/MContraction/WeakHamiltonianEye.hpp \ + Modules/MContraction/Gamma3pt.hpp \ + Modules/MContraction/WeakHamiltonianNonEye.hpp \ + Modules/MContraction/Baryon.hpp \ + Modules/MContraction/WeakNeutral4ptDisc.hpp \ + Modules/MContraction/A2AMeson.hpp \ + Modules/MScalar/Scalar.hpp \ + Modules/MScalar/FreeProp.hpp \ + Modules/MScalar/ChargedProp.hpp \ + Modules/MUtilities/TestSeqConserved.hpp \ + Modules/MUtilities/TestSeqGamma.hpp \ + Modules/MFermion/FreeProp.hpp \ + Modules/MFermion/GaugeProp.hpp \ + Modules/MSolver/A2AVectors.hpp \ + Modules/MSolver/RBPrecCG.hpp \ + Modules/MSolver/LocalCoherenceLanczos.hpp \ + Modules/MLoop/NoiseLoop.hpp \ + Modules/MGauge/StochEm.hpp \ + Modules/MGauge/FundtoHirep.hpp \ + Modules/MGauge/Unit.hpp \ + Modules/MGauge/Random.hpp From ae37fda699037fa7fc483e9092dfaedbe338f598 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Wed, 20 Jun 2018 16:07:40 +0100 Subject: [PATCH 175/267] A more elegant way to subtract guesses from solve and a bool check before verifying residual --- lib/algorithms/iterative/SchurRedBlack.h | 112 ++++++++++------------- 1 file changed, 46 insertions(+), 66 deletions(-) diff --git a/lib/algorithms/iterative/SchurRedBlack.h b/lib/algorithms/iterative/SchurRedBlack.h index ae751074..465f331c 100644 --- a/lib/algorithms/iterative/SchurRedBlack.h +++ b/lib/algorithms/iterative/SchurRedBlack.h @@ -160,19 +160,12 @@ namespace Grid { // Call the red-black solver ////////////////////////////////////////////////////////////// std::cout< using SchurRedBlackStagSolve = SchurRedBlackStaggeredSolve; @@ -266,17 +261,10 @@ namespace Grid { ////////////////////////////////////////////////////////////// std::cout< Date: Thu, 21 Jun 2018 16:36:06 +0100 Subject: [PATCH 176/267] Restructured the class that computes and returns the A2A vectors. --- extras/Hadrons/AllToAllVectors.hpp | 196 +++++++++++++---------------- 1 file changed, 88 insertions(+), 108 deletions(-) diff --git a/extras/Hadrons/AllToAllVectors.hpp b/extras/Hadrons/AllToAllVectors.hpp index de97051f..516a425f 100644 --- a/extras/Hadrons/AllToAllVectors.hpp +++ b/extras/Hadrons/AllToAllVectors.hpp @@ -13,9 +13,79 @@ BEGIN_HADRONS_NAMESPACE template class A2AModesSchurDiagTwo { + private: + const std::vector *evec; + const std::vector *eval; + Matrix &action; + std::function &Solver; + const int Nl, Nh; + const bool return_5d; + std::vector w_high_5d, v_high_5d, w_high_4d, v_high_4d; + public: - A2AModesSchurDiagTwo(void) = default; - virtual ~A2AModesSchurDiagTwo(void) = default; + A2AModesSchurDiagTwo(const std::vector *_evec, const std::vector *_eval, + Matrix &_action, + std::function &_Solver, + const int _Nl, const int _Nh, + const bool _return_5d) + : evec(_evec), eval(_eval), + action(_action), + Solver(_Solver), + Nl(_Nl), Nh(_Nh), + return_5d(_return_5d) + { + init_resize(1, Nh); + if (return_5d) init_resize(Nh, Nh); + }; + + void init_resize(const size_t size_5d, const size_t size_4d) + { + GridBase *grid_5d = action.Grid(); + GridBase *grid_4d = action.GaugeGrid(); + + w_high_5d.resize(size_5d, grid_5d); + v_high_5d.resize(size_5d, grid_5d); + + w_high_4d.resize(size_4d, grid_4d); + v_high_4d.resize(size_4d, grid_4d); + } + + void high_modes(Field &source_5d, Field &source_4d, int i) + { + int i5d; + LOG(Message) << "A2A high modes for i = " << i << std::endl; + i5d = 0; + if (return_5d) i5d = i; + this->high_mode_v(action, Solver, source_5d, v_high_5d[i5d], v_high_4d[i]); + this->high_mode_w(source_5d, source_4d, w_high_5d[i5d], w_high_4d[i]); + } + + void return_v(int i, Field &vout_5d, Field &vout_4d) + { + if (i < Nl) + { + this->low_mode_v(action, evec->at(i), eval->at(i), vout_5d, vout_4d); + } + else + { + vout_4d = v_high_4d[i - Nl]; + if (!(return_5d)) i = Nl; + vout_5d = v_high_5d[i - Nl]; + } + } + void return_w(int i, Field &wout_5d, Field &wout_4d) + { + if (i < Nl) + { + this->low_mode_w(action, evec->at(i), eval->at(i), wout_5d, wout_5d); + } + else + { + wout_4d = w_high_4d[i - Nl]; + if (!(return_5d)) i = Nl; + wout_5d = w_high_5d[i - Nl]; + } + } void Doo(Matrix &action, const Field &in, Field &out) { @@ -26,10 +96,10 @@ class A2AModesSchurDiagTwo action.MooeeInv(tmp, out); action.Meooe(out, tmp); - axpy(out, -1.0, tmp, in); + axpy(out,-1.0, tmp, in); } - void low_mode_v(Matrix &action, const Field &evec, const RealD &eval, Field &vout, bool return_5d = true) + void low_mode_v(Matrix &action, const Field &evec, const RealD &eval, Field &vout_5d, Field &vout_4d) { GridBase *grid = action.RedBlackGrid(); @@ -38,13 +108,10 @@ class A2AModesSchurDiagTwo Field sol_o(grid); Field tmp(grid); - GridBase *fgrid = action.Grid(); - Field tmp_out(fgrid); - src_o = evec; src_o.checkerboard = Odd; - pickCheckerboard(Even, sol_e, tmp_out); - pickCheckerboard(Odd, sol_o, tmp_out); + pickCheckerboard(Even, sol_e, vout_5d); + pickCheckerboard(Odd, sol_o, vout_5d); ///////////////////////////////////////////////////// // v_ie = -(1/eval_i) * MeeInv Meo MooInv evec_i @@ -66,15 +133,15 @@ class A2AModesSchurDiagTwo sol_o = (1.0 / eval) * tmp; assert(sol_o.checkerboard == Odd); - setCheckerboard(tmp_out, sol_e); + setCheckerboard(vout_5d, sol_e); assert(sol_e.checkerboard == Even); - setCheckerboard(tmp_out, sol_o); + setCheckerboard(vout_5d, sol_o); assert(sol_o.checkerboard == Odd); - this->return_dim(action, tmp_out, vout, return_5d); + action.ExportPhysicalFermionSolution(vout_5d, vout_4d); } - void low_mode_w(Matrix &action, const Field &evec, const RealD &eval, Field &wout, bool return_5d = true) + void low_mode_w(Matrix &action, const Field &evec, const RealD &eval, Field &wout_5d, Field &wout_4d) { GridBase *grid = action.RedBlackGrid(); SchurDiagTwoOperator _HermOpEO(action); @@ -85,7 +152,6 @@ class A2AModesSchurDiagTwo Field tmp(grid); GridBase *fgrid = action.Grid(); - Field tmp_out(fgrid); Field tmp_wout(fgrid); src_o = evec; @@ -115,41 +181,24 @@ class A2AModesSchurDiagTwo setCheckerboard(tmp_wout, sol_o); assert(sol_o.checkerboard == Odd); - action.DminusDag(tmp_wout, tmp_out); - this->return_dim(action, tmp_out, wout, return_5d); + action.DminusDag(tmp_wout, wout_5d); + action.ExportPhysicalFermionSolution(wout_5d, wout_4d); } - void high_mode_v(Matrix &action, std::function &Solver, const Field &source, Field &vout, bool return_5d = true) + void high_mode_v(Matrix &action, std::function &Solver, const Field &source, Field &vout_5d, Field &vout_4d) { GridBase *fgrid = action.Grid(); Field tmp(fgrid); - Field tmp_out(fgrid); action.Dminus(source, tmp); - Solver(tmp_out, source); // Note: Solver is Solver(out, in) - this->return_dim(action, tmp_out, vout, return_5d); + Solver(vout_5d, source); // Note: Solver is Solver(out, in) + action.ExportPhysicalFermionSolution(vout_5d, vout_4d); } - void high_mode_w(Matrix &action, const Field &source4d, Field &wout, bool return_5d = true) + void high_mode_w(const Field &source_5d, const Field &source_4d, Field &wout_5d, Field &wout_4d) { - // GridBase *fgrid = action.Grid(); - // Field tmp_out(fgrid); - - // tmp_out = source; - // this->return_dim(action, tmp_out, wout, return_5d); - wout = source4d; - } - - void return_dim(Matrix &action, const Field &in, Field &out, bool return_5d) - { - if (return_5d) - { - out = in; - } - else - { - action.ExportPhysicalFermionSolution(in, out); - } + wout_5d = source_5d; + wout_4d = source_4d; } }; @@ -211,75 +260,6 @@ class A2AHMSchurDiagTwo : virtual public A2AModesSchurDiagTwo } }; -//////////////////////////////// -// Both Modes -//////////////////////////////// - -template -class A2AVectorsReturn : public A2AModesSchurDiagTwo -{ - private: - const std::vector *evec; - const std::vector *eval; - Matrix &action; - std::function &Solver; - const int Nl, Nh; - const bool return_5d; - std::vector w_high, v_high; - - public: - A2AVectorsReturn(const std::vector *_evec, const std::vector *_eval, - Matrix &_action, - std::function &_Solver, - const int _Nl, const int _Nh, - const bool _return_5d) - : evec(_evec), eval(_eval), - action(_action), - Solver(_Solver), - Nl(_Nl), Nh(_Nh), - return_5d(_return_5d) - { - GridBase *grid; - if (return_5d) - { - grid = action.Grid(); - } - else - { - grid = action.GaugeGrid(); - } - resize(Nh, grid); - }; - - void resize(const size_t size, GridBase *grid) - { - w_high.resize(size, grid); - v_high.resize(size, grid); - } - - void high_modes(Field &source5d, Field &source4d, int i) - { - LOG(Message) << "A2A high modes for i = " << i << std::endl; - this->high_mode_v(action, Solver, source5d, v_high[i], return_5d); - this->high_mode_w(action, source4d, w_high[i], return_5d); - } - - void operator()(int i, Field &vout, Field &wout) - { - if (i < Nl) - { - LOG(Message) << "A2A low modes for i = " << i << std::endl; - this->low_mode_v(action, evec->at(i), eval->at(i), vout, return_5d); - this->low_mode_w(action, evec->at(i), eval->at(i), wout, return_5d); - } - else - { - vout = v_high[i - Nl]; - wout = w_high[i - Nl]; - } - } -}; - END_HADRONS_NAMESPACE #endif // A2A_Vectors_hpp_ \ No newline at end of file From 8fccda301a7fadcf63e05884c3a9c4e2813aedc1 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Thu, 21 Jun 2018 16:36:59 +0100 Subject: [PATCH 177/267] Fixed a bug where the guess was always subtracted after the solve and included appropriate weights for the sources in the one case we're looking at now. More work needs to be done to make the 5d/4d source logic less brittle. --- extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 44 +++++++------------ 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp index 107d1edb..5b244967 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -38,7 +38,6 @@ class TA2AVectors : public Module typedef CoarseFermionEigenPack CoarseEPack; typedef A2AModesSchurDiagTwo A2ABase; - typedef A2AVectorsReturn A2AReturn; public: // constructor @@ -55,7 +54,7 @@ class TA2AVectors : public Module private: unsigned int Ls_; - std::string retName_, whighName_, vhighName_; + std::string retName_; }; MODULE_REGISTER_TMP(A2AVectors, ARG(TA2AVectors), MSolver); @@ -69,8 +68,6 @@ template TA2AVectors::TA2AVectors(const std::string name) : Module(name) , retName_ (name + "_ret") -, whighName_ (name + "_whigh") -, vhighName_ (name + "_vhigh") {} // dependencies/products /////////////////////////////////////////////////////// @@ -107,27 +104,16 @@ void TA2AVectors::setup(void) bool return_5d = par().return_5d; int Ls, Ls_; - Ls_ = env().getObjectLs(par().solver + "_subtract"); - auto &solver = envGet(SolverFn, par().solver + "_subtract"); - if (!(Nl > 0)) - { - Ls_ = env().getObjectLs(par().solver); - auto &solver = envGet(SolverFn, par().solver); - } - - if (return_5d) - { - Ls = Ls_; - } - else - { - Ls = 1; - } + std::string sub_string = ""; + if (Nl > 0) sub_string = "_subtract"; + auto &solver = envGet(SolverFn, par().solver + sub_string); + Ls_ = env().getObjectLs(par().solver + sub_string); auto &action = envGet(FMat, par().action); envTmpLat(FermionField, "ferm_src", Ls_); envTmpLat(FermionField, "tmp"); + envTmpLat(FermionField, "tmp2"); std::vector *evec; const std::vector *eval; @@ -149,7 +135,7 @@ void TA2AVectors::setup(void) LOG(Message) << "Creating a2a vectors " << getName() << " using " << Nh << " high modes only." << std::endl; } - envCreateDerived(A2ABase, A2AReturn, retName_, Ls, + envCreate(A2ABase, retName_, Ls_, evec, eval, action, solver, @@ -167,13 +153,12 @@ void TA2AVectors::execute(void) int Nc = FImpl::Dimension; int Ls_; int Nl = par().Nl; - Ls_ = env().getObjectLs(par().solver + "_subtract"); - if (!(Nl > 0)) - { - Ls_ = env().getObjectLs(par().solver); - } - auto &a2areturn = envGetDerived(A2ABase, A2AReturn, retName_); + std::string sub_string = ""; + if (Nl > 0) sub_string = "_subtract"; + Ls_ = env().getObjectLs(par().solver + sub_string); + + auto &a2areturn = envGet(A2ABase, retName_); // High modes auto sources = par().sources; @@ -181,7 +166,9 @@ void TA2AVectors::execute(void) envGetTmp(FermionField, ferm_src); envGetTmp(FermionField, tmp); + envGetTmp(FermionField, tmp2); + double weight = 1.0 / sqrt(Ns*Nc*Nsrc); int N_count = 0; for (unsigned int s = 0; s < Ns; ++s) for (unsigned int c = 0; c < Nc; ++c) @@ -198,7 +185,8 @@ void TA2AVectors::execute(void) } else { - PropToFerm(tmp, prop_src, s, c); + PropToFerm(tmp2, prop_src, s, c); + tmp = weight*tmp2; action.ImportPhysicalFermionSource(tmp, ferm_src); } } From 91405de3f71e4eafc0dd3c7c1b490ce9c4612c48 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 22 Jun 2018 12:14:37 +0200 Subject: [PATCH 178/267] Hadrons: new solver exposing fermion matrix and generic source/solve import/export --- extras/Hadrons/Global.hpp | 8 +-- extras/Hadrons/Makefile.am | 3 +- extras/Hadrons/Modules/MAction/DWF.hpp | 2 +- extras/Hadrons/Modules/MAction/Wilson.hpp | 2 +- .../Hadrons/Modules/MAction/WilsonClover.hpp | 2 +- extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp | 2 +- extras/Hadrons/Modules/MFermion/FreeProp.hpp | 2 +- extras/Hadrons/Modules/MFermion/GaugeProp.hpp | 21 +++++-- extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 6 +- extras/Hadrons/Modules/MSource/SeqGamma.hpp | 2 +- extras/Hadrons/Solver.hpp | 62 +++++++++++++++++++ 11 files changed, 92 insertions(+), 20 deletions(-) create mode 100644 extras/Hadrons/Solver.hpp diff --git a/extras/Hadrons/Global.hpp b/extras/Hadrons/Global.hpp index 72fbdf80..bae34a8d 100644 --- a/extras/Hadrons/Global.hpp +++ b/extras/Hadrons/Global.hpp @@ -93,17 +93,15 @@ typedef typename SImpl::Field ScalarField##suffix;\ typedef typename SImpl::Field PropagatorField##suffix; #define SOLVER_TYPE_ALIASES(FImpl, suffix)\ -typedef std::function SolverFn##suffix; +typedef Solver Solver##suffix; #define SINK_TYPE_ALIASES(suffix)\ typedef std::function SinkFn##suffix; -#define FGS_TYPE_ALIASES(FImpl, suffix)\ +#define FG_TYPE_ALIASES(FImpl, suffix)\ FERM_TYPE_ALIASES(FImpl, suffix)\ -GAUGE_TYPE_ALIASES(FImpl, suffix)\ -SOLVER_TYPE_ALIASES(FImpl, suffix) +GAUGE_TYPE_ALIASES(FImpl, suffix) // logger class HadronsLogger: public Logger diff --git a/extras/Hadrons/Makefile.am b/extras/Hadrons/Makefile.am index 3b945124..eb0bc3ad 100644 --- a/extras/Hadrons/Makefile.am +++ b/extras/Hadrons/Makefile.am @@ -15,16 +15,17 @@ libHadrons_adir = $(pkgincludedir)/Hadrons nobase_libHadrons_a_HEADERS = \ $(modules_hpp) \ Application.hpp \ + EigenPack.hpp \ Environment.hpp \ Exceptions.hpp \ Factory.hpp \ GeneticScheduler.hpp \ Global.hpp \ Graph.hpp \ - EigenPack.hpp \ Module.hpp \ Modules.hpp \ ModuleFactory.hpp \ + Solver.hpp \ VirtualMachine.hpp HadronsXmlRun_SOURCES = HadronsXmlRun.cc diff --git a/extras/Hadrons/Modules/MAction/DWF.hpp b/extras/Hadrons/Modules/MAction/DWF.hpp index f0dda4b0..94a05cc8 100644 --- a/extras/Hadrons/Modules/MAction/DWF.hpp +++ b/extras/Hadrons/Modules/MAction/DWF.hpp @@ -56,7 +56,7 @@ template class TDWF: public Module { public: - FGS_TYPE_ALIASES(FImpl,); + FG_TYPE_ALIASES(FImpl,); public: // constructor TDWF(const std::string name); diff --git a/extras/Hadrons/Modules/MAction/Wilson.hpp b/extras/Hadrons/Modules/MAction/Wilson.hpp index 1a119571..a0eabd82 100644 --- a/extras/Hadrons/Modules/MAction/Wilson.hpp +++ b/extras/Hadrons/Modules/MAction/Wilson.hpp @@ -54,7 +54,7 @@ template class TWilson: public Module { public: - FGS_TYPE_ALIASES(FImpl,); + FG_TYPE_ALIASES(FImpl,); public: // constructor TWilson(const std::string name); diff --git a/extras/Hadrons/Modules/MAction/WilsonClover.hpp b/extras/Hadrons/Modules/MAction/WilsonClover.hpp index ead3accc..bb2c5b59 100644 --- a/extras/Hadrons/Modules/MAction/WilsonClover.hpp +++ b/extras/Hadrons/Modules/MAction/WilsonClover.hpp @@ -59,7 +59,7 @@ template class TWilsonClover: public Module { public: - FGS_TYPE_ALIASES(FImpl,); + FG_TYPE_ALIASES(FImpl,); public: // constructor TWilsonClover(const std::string name); diff --git a/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp b/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp index 52e65322..88e4e85c 100644 --- a/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp +++ b/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp @@ -57,7 +57,7 @@ template class TZMobiusDWF: public Module { public: - FGS_TYPE_ALIASES(FImpl,); + FG_TYPE_ALIASES(FImpl,); public: // constructor TZMobiusDWF(const std::string name); diff --git a/extras/Hadrons/Modules/MFermion/FreeProp.hpp b/extras/Hadrons/Modules/MFermion/FreeProp.hpp index b1038ddd..0786eb2b 100644 --- a/extras/Hadrons/Modules/MFermion/FreeProp.hpp +++ b/extras/Hadrons/Modules/MFermion/FreeProp.hpp @@ -57,7 +57,7 @@ template class TFreeProp: public Module { public: - FGS_TYPE_ALIASES(FImpl,); + FG_TYPE_ALIASES(FImpl,); public: // constructor TFreeProp(const std::string name); diff --git a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp index ee21cba9..fdd23766 100644 --- a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp +++ b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp @@ -35,6 +35,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include BEGIN_HADRONS_NAMESPACE @@ -76,7 +77,8 @@ template class TGaugeProp: public Module { public: - FGS_TYPE_ALIASES(FImpl,); + FG_TYPE_ALIASES(FImpl,); + SOLVER_TYPE_ALIASES(FImpl,); public: // constructor TGaugeProp(const std::string name); @@ -92,7 +94,7 @@ protected: virtual void execute(void); private: unsigned int Ls_; - SolverFn *solver_{nullptr}; + Solver *solver_{nullptr}; }; MODULE_REGISTER_TMP(GaugeProp, TGaugeProp, MFermion); @@ -147,7 +149,8 @@ void TGaugeProp::execute(void) std::string propName = (Ls_ == 1) ? getName() : (getName() + "_5d"); auto &prop = envGet(PropagatorField, propName); auto &fullSrc = envGet(PropagatorField, par().source); - auto &solver = envGet(SolverFn, par().solver); + auto &solver = envGet(Solver, par().solver); + auto &mat = solver.getFMat(); envGetTmp(FermionField, source); envGetTmp(FermionField, sol); @@ -155,11 +158,12 @@ void TGaugeProp::execute(void) LOG(Message) << "Inverting using solver '" << par().solver << "' on source '" << par().source << "'" << std::endl; for (unsigned int s = 0; s < Ns; ++s) - for (unsigned int c = 0; c < FImpl::Dimension; ++c) + for (unsigned int c = 0; c < FImpl::Dimension; ++c) { LOG(Message) << "Inversion for spin= " << s << ", color= " << c << std::endl; // source conversion for 4D sources + LOG(Message) << "Import source" << std::endl; if (!env().isObject5d(par().source)) { if (Ls_ == 1) @@ -169,7 +173,7 @@ void TGaugeProp::execute(void) else { PropToFerm(tmp, fullSrc, s, c); - make_5D(tmp, source, Ls_); + mat.ImportPhysicalFermionSource(tmp, source); } } // source conversion for 5D sources @@ -184,14 +188,19 @@ void TGaugeProp::execute(void) PropToFerm(source, fullSrc, s, c); } } + LOG(Message) << "Prepare source" << std::endl; + sol = source; + mat.Dminus(sol, source); sol = zero; + LOG(Message) << "Solve" << std::endl; solver(sol, source); + LOG(Message) << "Export solution" << std::endl; FermToProp(prop, sol, s, c); // create 4D propagators from 5D one if necessary if (Ls_ > 1) { PropagatorField &p4d = envGet(PropagatorField, getName()); - make_4D(sol, tmp, Ls_); + mat.ExportPhysicalFermionSolution(sol, tmp); FermToProp(p4d, tmp, s, c); } } diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index 206d44d1..31be621f 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -32,6 +32,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include #include BEGIN_HADRONS_NAMESPACE @@ -55,7 +56,8 @@ template class TRBPrecCG: public Module { public: - FGS_TYPE_ALIASES(FImpl,); + FG_TYPE_ALIASES(FImpl,); + SOLVER_TYPE_ALIASES(FImpl,); typedef FermionEigenPack EPack; typedef CoarseFermionEigenPack CoarseEPack; typedef std::shared_ptr> GuesserPt; @@ -175,7 +177,7 @@ void TRBPrecCG::setup(void) schurSolver(mat, source, sol, *guesser); }; - envCreate(SolverFn, getName(), Ls, solver); + envCreate(Solver, getName(), Ls, solver, mat); } diff --git a/extras/Hadrons/Modules/MSource/SeqGamma.hpp b/extras/Hadrons/Modules/MSource/SeqGamma.hpp index 4fe4dd76..2d8e1c31 100644 --- a/extras/Hadrons/Modules/MSource/SeqGamma.hpp +++ b/extras/Hadrons/Modules/MSource/SeqGamma.hpp @@ -71,7 +71,7 @@ template class TSeqGamma: public Module { public: - FGS_TYPE_ALIASES(FImpl,); + FG_TYPE_ALIASES(FImpl,); public: // constructor TSeqGamma(const std::string name); diff --git a/extras/Hadrons/Solver.hpp b/extras/Hadrons/Solver.hpp new file mode 100644 index 00000000..08867634 --- /dev/null +++ b/extras/Hadrons/Solver.hpp @@ -0,0 +1,62 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/EigenPack.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ +#ifndef Hadrons_Solver_hpp_ +#define Hadrons_Solver_hpp_ + +#include + +BEGIN_HADRONS_NAMESPACE + +template +class Solver +{ +public: + typedef typename FImpl::FermionField FermionField; + typedef FermionOperator FMat; + typedef std::function SolverFn; +public: + Solver(SolverFn fn, FMat &mat): mat_(mat), fn_(fn) {} + + void operator()(FermionField &sol, const FermionField &src) + { + fn_(sol, src); + } + + FMat & getFMat(void) + { + return mat_; + } +private: + FMat &mat_; + SolverFn fn_; +}; + +END_HADRONS_NAMESPACE + +#endif // Hadrons_Solver_hpp_ From 0de090ee741d1e8e67f57b7d8823f5989260f966 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Fri, 22 Jun 2018 12:28:41 +0100 Subject: [PATCH 179/267] Temporarily added in the contraction code that produced the working 2-pt function. This is commited for reference only and will be removed in the next push. --- .../Hadrons/Modules/MContraction/A2AMeson.cc | 7 + .../Hadrons/Modules/MContraction/A2AMeson.hpp | 214 ++++++++++++++++++ 2 files changed, 221 insertions(+) create mode 100644 extras/Hadrons/Modules/MContraction/A2AMeson.cc create mode 100644 extras/Hadrons/Modules/MContraction/A2AMeson.hpp diff --git a/extras/Hadrons/Modules/MContraction/A2AMeson.cc b/extras/Hadrons/Modules/MContraction/A2AMeson.cc new file mode 100644 index 00000000..3ce5fe83 --- /dev/null +++ b/extras/Hadrons/Modules/MContraction/A2AMeson.cc @@ -0,0 +1,7 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MContraction; + +template class Grid::Hadrons::MContraction::TA2AMeson; \ No newline at end of file diff --git a/extras/Hadrons/Modules/MContraction/A2AMeson.hpp b/extras/Hadrons/Modules/MContraction/A2AMeson.hpp new file mode 100644 index 00000000..bfea87e4 --- /dev/null +++ b/extras/Hadrons/Modules/MContraction/A2AMeson.hpp @@ -0,0 +1,214 @@ +#ifndef Hadrons_MContraction_A2AMeson_hpp_ +#define Hadrons_MContraction_A2AMeson_hpp_ + +#include +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * A2AMeson * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MContraction) + +typedef std::pair GammaPair; + +class A2AMesonPar : Serializable +{ + public: + GRID_SERIALIZABLE_CLASS_MEMBERS(A2AMesonPar, + int, Nl, + int, N, + std::string, A2A1, + std::string, A2A2, + std::string, action, + std::string, epack1, + std::string, epack2, + std::string, gammas, + std::string, output); +}; + +template +class TA2AMeson : public Module +{ + public: + FERM_TYPE_ALIASES(FImpl, ); + + typedef A2AModesSchurDiagTwo A2ABase; + + class Result : Serializable + { + public: + GRID_SERIALIZABLE_CLASS_MEMBERS(Result, + Gamma::Algebra, gamma_snk, + Gamma::Algebra, gamma_src, + std::vector, corr); + }; + + public: + // constructor + TA2AMeson(const std::string name); + // destructor + virtual ~TA2AMeson(void){}; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + virtual void parseGammaString(std::vector &gammaList); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER(A2AMeson, ARG(TA2AMeson), MContraction); + +/****************************************************************************** +* TA2AMeson implementation * +******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TA2AMeson::TA2AMeson(const std::string name) + : Module(name) +{ +} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TA2AMeson::getInput(void) +{ + std::vector in = {par().A2A1, par().A2A2, par().action}; + in.push_back(par().A2A1 + "_ret"); + in.push_back(par().A2A2 + "_ret"); + int Nl = par().Nl; + if (Nl > 0) + { + in.push_back(par().epack1); + in.push_back(par().epack2); + } + + return in; +} + +template +std::vector TA2AMeson::getOutput(void) +{ + std::vector out = {}; + + return out; +} + +template +void TA2AMeson::parseGammaString(std::vector &gammaList) +{ + gammaList.clear(); + // Parse individual contractions from input string. + gammaList = strToVec(par().gammas); +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TA2AMeson::setup(void) +{ + int nt = env().getDim(Tp); + int N = par().N; + + int Ls_ = env().getObjectLs(par().A2A1 + "_ret"); + + envTmp(std::vector, "w1", 1, N, FermionField(env().getGrid(1))); + envTmp(std::vector, "v1", 1, N, FermionField(env().getGrid(1))); + envTmpLat(FermionField, "tmpv_5d", Ls_); + envTmpLat(FermionField, "tmpw_5d", Ls_); + + envTmp(std::vector, "MF_x", 1, nt); + envTmp(std::vector, "MF_y", 1, nt); + envTmp(std::vector, "tmp", 1, nt); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TA2AMeson::execute(void) +{ + LOG(Message) << "Computing A2A meson contractions" << std::endl; + + Result result; + Gamma g5(Gamma::Algebra::Gamma5); + std::vector gammaList; + int nt = env().getDim(Tp); + + parseGammaString(gammaList); + + result.gamma_snk = gammaList[0].first; + result.gamma_src = gammaList[0].second; + result.corr.resize(nt); + + int Nl = par().Nl; + int N = par().N; + LOG(Message) << "N for A2A cont: " << N << std::endl; + + envGetTmp(std::vector, MF_x); + envGetTmp(std::vector, MF_y); + envGetTmp(std::vector, tmp); + + for (unsigned int t = 0; t < nt; ++t) + { + tmp[t] = TensorRemove(MF_x[t] * MF_y[t] * 0.0); + } + + Gamma gSnk(gammaList[0].first); + Gamma gSrc(gammaList[0].second); + + auto &a2a1_fn = envGet(A2ABase, par().A2A1 + "_ret"); + + envGetTmp(std::vector, w1); + envGetTmp(std::vector, v1); + envGetTmp(FermionField, tmpv_5d); + envGetTmp(FermionField, tmpw_5d); + + LOG(Message) << "Finding v and w vectors for N = " << N << std::endl; + for (int i = 0; i < N; i++) + { + a2a1_fn.return_v(i, tmpv_5d, v1[i]); + a2a1_fn.return_w(i, tmpw_5d, w1[i]); + } + LOG(Message) << "Found v and w vectors for N = " << N << std::endl; + for (unsigned int i = 0; i < N; i++) + { + v1[i] = gSnk * v1[i]; + } + int ty; + for (unsigned int i = 0; i < N; i++) + { + for (unsigned int j = 0; j < N; j++) + { + sliceInnerProductVector(MF_x, w1[i], v1[j], Tp); + sliceInnerProductVector(MF_y, w1[j], v1[i], Tp); + for (unsigned int t = 0; t < nt; ++t) + { + for (unsigned int tx = 0; tx < nt; tx++) + { + ty = (tx + t) % nt; + tmp[t] += TensorRemove((MF_x[tx]) * (MF_y[ty])); + } + } + } + if (i % 10 == 0) + { + LOG(Message) << "MF for i = " << i << " of " << N << std::endl; + } + } + double NTinv = 1.0 / static_cast(nt); + for (unsigned int t = 0; t < nt; ++t) + { + result.corr[t] = NTinv*tmp[t]; + } + + saveResult(par().output, "meson", result); +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MContraction_A2AMeson_hpp_ From 1ac3526f3303b215378111b589dd7274c0d75d84 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Fri, 22 Jun 2018 12:29:42 +0100 Subject: [PATCH 180/267] Small changes to the A2A header and module --- extras/Hadrons/AllToAllVectors.hpp | 2 +- extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/extras/Hadrons/AllToAllVectors.hpp b/extras/Hadrons/AllToAllVectors.hpp index 516a425f..436f18b8 100644 --- a/extras/Hadrons/AllToAllVectors.hpp +++ b/extras/Hadrons/AllToAllVectors.hpp @@ -77,7 +77,7 @@ class A2AModesSchurDiagTwo { if (i < Nl) { - this->low_mode_w(action, evec->at(i), eval->at(i), wout_5d, wout_5d); + this->low_mode_w(action, evec->at(i), eval->at(i), wout_5d, wout_4d); } else { diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp index 5b244967..4db90eef 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -168,6 +168,8 @@ void TA2AVectors::execute(void) envGetTmp(FermionField, tmp); envGetTmp(FermionField, tmp2); + // TODO: At the moment weighting only applies to the 4d->5d source path + // similar to how the 5d and 4d srcs are passed in, this needs more work to be less brittle double weight = 1.0 / sqrt(Ns*Nc*Nsrc); int N_count = 0; for (unsigned int s = 0; s < Ns; ++s) From c84eeedec3fe975186f95d122ea6ee66bc613f47 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 22 Jun 2018 15:53:22 +0200 Subject: [PATCH 181/267] Hadrons: GaugeProp module for z-Wilson actions --- extras/Hadrons/Modules/MFermion/GaugeProp.cc | 2 +- extras/Hadrons/Modules/MFermion/GaugeProp.hpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/extras/Hadrons/Modules/MFermion/GaugeProp.cc b/extras/Hadrons/Modules/MFermion/GaugeProp.cc index 8db69495..f03bf2be 100644 --- a/extras/Hadrons/Modules/MFermion/GaugeProp.cc +++ b/extras/Hadrons/Modules/MFermion/GaugeProp.cc @@ -32,4 +32,4 @@ using namespace Hadrons; using namespace MFermion; template class Grid::Hadrons::MFermion::TGaugeProp; - +template class Grid::Hadrons::MFermion::TGaugeProp; diff --git a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp index fdd23766..8aafb834 100644 --- a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp +++ b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp @@ -98,6 +98,8 @@ private: }; MODULE_REGISTER_TMP(GaugeProp, TGaugeProp, MFermion); +MODULE_REGISTER_TMP(ZGaugeProp, TGaugeProp, MFermion); + /****************************************************************************** * TGaugeProp implementation * ******************************************************************************/ From c760f0a4c3910e29cd4aeff1bff588d20d25fa19 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 22 Jun 2018 16:12:46 +0200 Subject: [PATCH 182/267] Hadrons: remove make_5D/4D functions and FreeProp fix --- extras/Hadrons/Modules/MFermion/FreeProp.hpp | 6 ++---- extras/Hadrons/Modules/MFermion/GaugeProp.hpp | 21 ------------------- 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/extras/Hadrons/Modules/MFermion/FreeProp.hpp b/extras/Hadrons/Modules/MFermion/FreeProp.hpp index 0786eb2b..4e448188 100644 --- a/extras/Hadrons/Modules/MFermion/FreeProp.hpp +++ b/extras/Hadrons/Modules/MFermion/FreeProp.hpp @@ -34,8 +34,6 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include -#include - BEGIN_HADRONS_NAMESPACE /****************************************************************************** @@ -152,7 +150,7 @@ void TFreeProp::execute(void) else { PropToFerm(tmp, fullSrc, s, c); - make_5D(tmp, source, Ls_); + mat.ImportPhysicalFermionSource(tmp, source); } } // source conversion for 5D sources @@ -176,7 +174,7 @@ void TFreeProp::execute(void) if (Ls_ > 1) { PropagatorField &p4d = envGet(PropagatorField, getName()); - make_4D(sol, tmp, Ls_); + mat.ExportPhysicalFermionSolution(sol, tmp); FermToProp(p4d, tmp, s, c); } } diff --git a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp index 8aafb834..ebf8d56f 100644 --- a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp +++ b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp @@ -39,27 +39,6 @@ See the full license in the file "LICENSE" in the top level distribution directo BEGIN_HADRONS_NAMESPACE -/****************************************************************************** - * 5D -> 4D and 4D -> 5D conversions. * - ******************************************************************************/ -template // Note that 5D object is modified. -inline void make_4D(Lattice &in_5d, Lattice &out_4d, int Ls) -{ - axpby_ssp_pminus(in_5d, 0., in_5d, 1., in_5d, 0, 0); - axpby_ssp_pplus(in_5d, 1., in_5d, 1., in_5d, 0, Ls-1); - ExtractSlice(out_4d, in_5d, 0, 0); -} - -template -inline void make_5D(Lattice &in_4d, Lattice &out_5d, int Ls) -{ - out_5d = zero; - InsertSlice(in_4d, out_5d, 0, 0); - InsertSlice(in_4d, out_5d, Ls-1, 0); - axpby_ssp_pplus(out_5d, 0., out_5d, 1., out_5d, 0, 0); - axpby_ssp_pminus(out_5d, 0., out_5d, 1., out_5d, Ls-1, Ls-1); -} - /****************************************************************************** * GaugeProp * ******************************************************************************/ From e0ed7e300f7096b4dbc92820fc0d0a911f444598 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 22 Jun 2018 16:33:43 +0200 Subject: [PATCH 183/267] Hadrons: spurious Dminus removed --- extras/Hadrons/Modules/MFermion/GaugeProp.hpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp index ebf8d56f..d2c9df05 100644 --- a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp +++ b/extras/Hadrons/Modules/MFermion/GaugeProp.hpp @@ -169,11 +169,8 @@ void TGaugeProp::execute(void) PropToFerm(source, fullSrc, s, c); } } - LOG(Message) << "Prepare source" << std::endl; - sol = source; - mat.Dminus(sol, source); - sol = zero; LOG(Message) << "Solve" << std::endl; + sol = zero; solver(sol, source); LOG(Message) << "Export solution" << std::endl; FermToProp(prop, sol, s, c); From 2f121c41c900b82d9e875378f6acbb504d5cddf0 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Mon, 25 Jun 2018 12:20:46 +0100 Subject: [PATCH 184/267] Commiting reation of meson field code before a merge with the upstream branch feature/hadrons --- extras/Hadrons/Modules.hpp | 3 +- .../Hadrons/Modules/MContraction/A2AMeson.cc | 7 - .../Modules/MContraction/MesonFieldGmu.cc | 7 + .../{A2AMeson.hpp => MesonFieldGmu.hpp} | 123 ++++++------------ extras/Hadrons/modules.inc | 4 +- 5 files changed, 48 insertions(+), 96 deletions(-) delete mode 100644 extras/Hadrons/Modules/MContraction/A2AMeson.cc create mode 100644 extras/Hadrons/Modules/MContraction/MesonFieldGmu.cc rename extras/Hadrons/Modules/MContraction/{A2AMeson.hpp => MesonFieldGmu.hpp} (50%) diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index f81c01da..0f6390a2 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -29,13 +29,14 @@ #include #include #include +#include #include #include #include #include +#include #include #include -#include #include #include #include diff --git a/extras/Hadrons/Modules/MContraction/A2AMeson.cc b/extras/Hadrons/Modules/MContraction/A2AMeson.cc deleted file mode 100644 index 3ce5fe83..00000000 --- a/extras/Hadrons/Modules/MContraction/A2AMeson.cc +++ /dev/null @@ -1,7 +0,0 @@ -#include - -using namespace Grid; -using namespace Hadrons; -using namespace MContraction; - -template class Grid::Hadrons::MContraction::TA2AMeson; \ No newline at end of file diff --git a/extras/Hadrons/Modules/MContraction/MesonFieldGmu.cc b/extras/Hadrons/Modules/MContraction/MesonFieldGmu.cc new file mode 100644 index 00000000..dc8a3c40 --- /dev/null +++ b/extras/Hadrons/Modules/MContraction/MesonFieldGmu.cc @@ -0,0 +1,7 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MContraction; + +template class Grid::Hadrons::MContraction::TMesonFieldGmu; \ No newline at end of file diff --git a/extras/Hadrons/Modules/MContraction/A2AMeson.hpp b/extras/Hadrons/Modules/MContraction/MesonFieldGmu.hpp similarity index 50% rename from extras/Hadrons/Modules/MContraction/A2AMeson.hpp rename to extras/Hadrons/Modules/MContraction/MesonFieldGmu.hpp index bfea87e4..2841ae04 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMeson.hpp +++ b/extras/Hadrons/Modules/MContraction/MesonFieldGmu.hpp @@ -13,12 +13,10 @@ BEGIN_HADRONS_NAMESPACE ******************************************************************************/ BEGIN_MODULE_NAMESPACE(MContraction) -typedef std::pair GammaPair; - -class A2AMesonPar : Serializable +class MesonFieldPar : Serializable { public: - GRID_SERIALIZABLE_CLASS_MEMBERS(A2AMesonPar, + GRID_SERIALIZABLE_CLASS_MEMBERS(MesonFieldPar, int, Nl, int, N, std::string, A2A1, @@ -26,12 +24,12 @@ class A2AMesonPar : Serializable std::string, action, std::string, epack1, std::string, epack2, - std::string, gammas, + std::string, gamma, std::string, output); }; template -class TA2AMeson : public Module +class TMesonFieldGmu : public Module { public: FERM_TYPE_ALIASES(FImpl, ); @@ -42,41 +40,39 @@ class TA2AMeson : public Module { public: GRID_SERIALIZABLE_CLASS_MEMBERS(Result, - Gamma::Algebra, gamma_snk, - Gamma::Algebra, gamma_src, - std::vector, corr); + Gamma::Algebra, gamma_mu, + std::vector>>, MesonField); }; public: // constructor - TA2AMeson(const std::string name); + TMesonFieldGmu(const std::string name); // destructor - virtual ~TA2AMeson(void){}; + virtual ~TMesonFieldGmu(void){}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); - virtual void parseGammaString(std::vector &gammaList); // setup virtual void setup(void); // execution virtual void execute(void); }; -MODULE_REGISTER(A2AMeson, ARG(TA2AMeson), MContraction); +MODULE_REGISTER(A2AMeson, ARG(TMesonFieldGmu), MContraction); /****************************************************************************** -* TA2AMeson implementation * +* TMesonFieldGmu implementation * ******************************************************************************/ // constructor ///////////////////////////////////////////////////////////////// template -TA2AMeson::TA2AMeson(const std::string name) - : Module(name) +TMesonFieldGmu::TMesonFieldGmu(const std::string name) + : Module(name) { } // dependencies/products /////////////////////////////////////////////////////// template -std::vector TA2AMeson::getInput(void) +std::vector TMesonFieldGmu::getInput(void) { std::vector in = {par().A2A1, par().A2A2, par().action}; in.push_back(par().A2A1 + "_ret"); @@ -92,117 +88,72 @@ std::vector TA2AMeson::getInput(void) } template -std::vector TA2AMeson::getOutput(void) +std::vector TMesonFieldGmu::getOutput(void) { std::vector out = {}; return out; } -template -void TA2AMeson::parseGammaString(std::vector &gammaList) -{ - gammaList.clear(); - // Parse individual contractions from input string. - gammaList = strToVec(par().gammas); -} - // setup /////////////////////////////////////////////////////////////////////// template -void TA2AMeson::setup(void) +void TMesonFieldGmu::setup(void) { int nt = env().getDim(Tp); int N = par().N; int Ls_ = env().getObjectLs(par().A2A1 + "_ret"); - envTmp(std::vector, "w1", 1, N, FermionField(env().getGrid(1))); - envTmp(std::vector, "v1", 1, N, FermionField(env().getGrid(1))); + envTmpLat(FermionField, "w", Ls_); + envTmpLat(FermionField, "v", Ls_); envTmpLat(FermionField, "tmpv_5d", Ls_); envTmpLat(FermionField, "tmpw_5d", Ls_); - - envTmp(std::vector, "MF_x", 1, nt); - envTmp(std::vector, "MF_y", 1, nt); - envTmp(std::vector, "tmp", 1, nt); } // execution /////////////////////////////////////////////////////////////////// template -void TA2AMeson::execute(void) +void TMesonFieldGmu::execute(void) { - LOG(Message) << "Computing A2A meson contractions" << std::endl; + LOG(Message) << "Computing A2A meson field for gamma_mu = " << par().gamma << ", taking w from " << par().A2A1 << " and v from " << par().A2A2 << std::endl; Result result; - Gamma g5(Gamma::Algebra::Gamma5); - std::vector gammaList; - int nt = env().getDim(Tp); + std::istringstream sstr(par().gamma); + Gamma::Algebra g_mu; + sstr >> g_mu; + Gamma gamma_mu(g_mu); - parseGammaString(gammaList); - - result.gamma_snk = gammaList[0].first; - result.gamma_src = gammaList[0].second; - result.corr.resize(nt); - - int Nl = par().Nl; int N = par().N; LOG(Message) << "N for A2A cont: " << N << std::endl; + result.gamma_mu = g_mu; + result.MesonField.resize(N); - envGetTmp(std::vector, MF_x); - envGetTmp(std::vector, MF_y); - envGetTmp(std::vector, tmp); + int nt = env().getDim(Tp); + std::vector MesonField_ij; + MesonField_ij.resize(nt); - for (unsigned int t = 0; t < nt; ++t) - { - tmp[t] = TensorRemove(MF_x[t] * MF_y[t] * 0.0); - } + auto &a2a1 = envGet(A2ABase, par().A2A1 + "_ret"); + auto &a2a2 = envGet(A2ABase, par().A2A2 + "_ret"); - Gamma gSnk(gammaList[0].first); - Gamma gSrc(gammaList[0].second); - - auto &a2a1_fn = envGet(A2ABase, par().A2A1 + "_ret"); - - envGetTmp(std::vector, w1); - envGetTmp(std::vector, v1); + envGetTmp(FermionField, w); + envGetTmp(FermionField, v); envGetTmp(FermionField, tmpv_5d); envGetTmp(FermionField, tmpw_5d); - LOG(Message) << "Finding v and w vectors for N = " << N << std::endl; - for (int i = 0; i < N; i++) - { - a2a1_fn.return_v(i, tmpv_5d, v1[i]); - a2a1_fn.return_w(i, tmpw_5d, w1[i]); - } - LOG(Message) << "Found v and w vectors for N = " << N << std::endl; - for (unsigned int i = 0; i < N; i++) - { - v1[i] = gSnk * v1[i]; - } - int ty; for (unsigned int i = 0; i < N; i++) { + a2a1.return_w(i, tmpw_5d, w); for (unsigned int j = 0; j < N; j++) { - sliceInnerProductVector(MF_x, w1[i], v1[j], Tp); - sliceInnerProductVector(MF_y, w1[j], v1[i], Tp); - for (unsigned int t = 0; t < nt; ++t) - { - for (unsigned int tx = 0; tx < nt; tx++) - { - ty = (tx + t) % nt; - tmp[t] += TensorRemove((MF_x[tx]) * (MF_y[ty])); - } - } + a2a2.return_v(j, tmpv_5d, v); + v = gamma_mu*v; + sliceInnerProductVector(MesonField_ij, w, v, Tp); + result.MesonField[j][i] = MesonField_ij; } if (i % 10 == 0) { LOG(Message) << "MF for i = " << i << " of " << N << std::endl; } } - double NTinv = 1.0 / static_cast(nt); - for (unsigned int t = 0; t < nt; ++t) - { - result.corr[t] = NTinv*tmp[t]; - } saveResult(par().output, "meson", result); } diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 9bdb48cc..cafcf310 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -30,8 +30,8 @@ modules_cc =\ Modules/MContraction/WardIdentity.cc \ Modules/MContraction/WeakHamiltonianEye.cc \ Modules/MContraction/DiscLoop.cc \ - Modules/MContraction/A2AMeson.cc \ Modules/MContraction/Baryon.cc \ + Modules/MContraction/MesonFieldGmu.cc \ Modules/MContraction/Gamma3pt.cc \ Modules/MContraction/WeakNeutral4ptDisc.cc \ Modules/MContraction/Meson.cc \ @@ -86,9 +86,9 @@ modules_hpp =\ Modules/MContraction/WeakHamiltonianEye.hpp \ Modules/MContraction/Gamma3pt.hpp \ Modules/MContraction/WeakHamiltonianNonEye.hpp \ + Modules/MContraction/MesonFieldGmu.hpp \ Modules/MContraction/Baryon.hpp \ Modules/MContraction/WeakNeutral4ptDisc.hpp \ - Modules/MContraction/A2AMeson.hpp \ Modules/MScalar/Scalar.hpp \ Modules/MScalar/FreeProp.hpp \ Modules/MScalar/ChargedProp.hpp \ From adcef36189a27c8554acd11ac1f39352db56884b Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 25 Jun 2018 15:58:35 +0100 Subject: [PATCH 185/267] =?UTF-8?q?Hadrons:=20M=C3=B6bius=20DWF=20action?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extras/Hadrons/Modules.hpp | 9 +- extras/Hadrons/Modules/MAction/MobiusDWF.cc | 7 ++ extras/Hadrons/Modules/MAction/MobiusDWF.hpp | 109 ++++++++++++++++++ extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp | 4 +- extras/Hadrons/modules.inc | 14 ++- 5 files changed, 131 insertions(+), 12 deletions(-) create mode 100644 extras/Hadrons/Modules/MAction/MobiusDWF.cc create mode 100644 extras/Hadrons/Modules/MAction/MobiusDWF.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 502c14af..af4592ea 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -18,20 +18,21 @@ #include #include #include +#include #include #include #include #include -#include #include #include #include #include -#include -#include -#include #include +#include +#include +#include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MAction/MobiusDWF.cc b/extras/Hadrons/Modules/MAction/MobiusDWF.cc new file mode 100644 index 00000000..8c138bca --- /dev/null +++ b/extras/Hadrons/Modules/MAction/MobiusDWF.cc @@ -0,0 +1,7 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MAction; + +template class Grid::Hadrons::MAction::TMobiusDWF; diff --git a/extras/Hadrons/Modules/MAction/MobiusDWF.hpp b/extras/Hadrons/Modules/MAction/MobiusDWF.hpp new file mode 100644 index 00000000..a026a864 --- /dev/null +++ b/extras/Hadrons/Modules/MAction/MobiusDWF.hpp @@ -0,0 +1,109 @@ +#ifndef Hadrons_MAction_MobiusDWF_hpp_ +#define Hadrons_MAction_MobiusDWF_hpp_ + +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * Mobius domain-wall fermion action * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MAction) + +class MobiusDWFPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(MobiusDWFPar, + std::string , gauge, + unsigned int, Ls, + double , mass, + double , M5, + double , b, + double , c, + std::string , boundary); +}; + +template +class TMobiusDWF: public Module +{ +public: + FG_TYPE_ALIASES(FImpl,); +public: + // constructor + TMobiusDWF(const std::string name); + // destructor + virtual ~TMobiusDWF(void) {}; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER_TMP(MobiusDWF, TMobiusDWF, MAction); + +/****************************************************************************** + * TMobiusDWF implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TMobiusDWF::TMobiusDWF(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TMobiusDWF::getInput(void) +{ + std::vector in = {par().gauge}; + + return in; +} + +template +std::vector TMobiusDWF::getOutput(void) +{ + std::vector out = {getName()}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TMobiusDWF::setup(void) +{ + LOG(Message) << "Setting up Mobius domain wall fermion matrix with m= " + << par().mass << ", M5= " << par().M5 << ", Ls= " << par().Ls + << ", b= " << par().b << ", c= " << par().c + << " using gauge field '" << par().gauge << "'" + << std::endl; + LOG(Message) << "Fermion boundary conditions: " << par().boundary + << std::endl; + + env().createGrid(par().Ls); + auto &U = envGet(LatticeGaugeField, par().gauge); + auto &g4 = *env().getGrid(); + auto &grb4 = *env().getRbGrid(); + auto &g5 = *env().getGrid(par().Ls); + auto &grb5 = *env().getRbGrid(par().Ls); + std::vector boundary = strToVec(par().boundary); + typename MobiusFermion::ImplParams implParams(boundary); + envCreateDerived(FMat, MobiusFermion, getName(), par().Ls, U, g5, + grb5, g4, grb4, par().mass, par().M5, par().b, par().c, + implParams); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TMobiusDWF::execute(void) +{} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MAction_MobiusDWF_hpp_ diff --git a/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp b/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp index 88e4e85c..4a275dd0 100644 --- a/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp +++ b/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp @@ -35,7 +35,7 @@ See the full license in the file "LICENSE" in the top level distribution directo BEGIN_HADRONS_NAMESPACE /****************************************************************************** - * ZMobiusDWF * + * z-Mobius domain-wall fermion action * ******************************************************************************/ BEGIN_MODULE_NAMESPACE(MAction) @@ -75,7 +75,7 @@ public: MODULE_REGISTER_TMP(ZMobiusDWF, TZMobiusDWF, MAction); /****************************************************************************** - * TZMobiusDWF implementation * + * TZMobiusDWF implementation * ******************************************************************************/ // constructor ///////////////////////////////////////////////////////////////// template diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 0e44176b..ebf5c9cb 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -27,10 +27,11 @@ modules_cc =\ Modules/MUtilities/TestSeqConserved.cc \ Modules/MLoop/NoiseLoop.cc \ Modules/MScalar/FreeProp.cc \ + Modules/MScalar/VPCounterTerms.cc \ Modules/MScalar/ChargedProp.cc \ Modules/MScalar/ScalarVP.cc \ - Modules/MScalar/VPCounterTerms.cc \ Modules/MAction/Wilson.cc \ + Modules/MAction/MobiusDWF.cc \ Modules/MAction/ZMobiusDWF.cc \ Modules/MAction/WilsonClover.cc \ Modules/MAction/DWF.cc \ @@ -72,20 +73,21 @@ modules_hpp =\ Modules/MSink/Point.hpp \ Modules/MSolver/LocalCoherenceLanczos.hpp \ Modules/MSolver/RBPrecCG.hpp \ + Modules/MGauge/UnitEm.hpp \ + Modules/MGauge/Unit.hpp \ Modules/MGauge/Random.hpp \ Modules/MGauge/FundtoHirep.hpp \ Modules/MGauge/StochEm.hpp \ - Modules/MGauge/Unit.hpp \ - Modules/MGauge/UnitEm.hpp \ Modules/MUtilities/TestSeqGamma.hpp \ Modules/MUtilities/TestSeqConserved.hpp \ Modules/MLoop/NoiseLoop.hpp \ - Modules/MScalar/ChargedProp.hpp \ Modules/MScalar/FreeProp.hpp \ - Modules/MScalar/Scalar.hpp \ - Modules/MScalar/ScalarVP.hpp \ Modules/MScalar/VPCounterTerms.hpp \ + Modules/MScalar/ScalarVP.hpp \ + Modules/MScalar/Scalar.hpp \ + Modules/MScalar/ChargedProp.hpp \ Modules/MAction/DWF.hpp \ + Modules/MAction/MobiusDWF.hpp \ Modules/MAction/Wilson.hpp \ Modules/MAction/WilsonClover.hpp \ Modules/MAction/ZMobiusDWF.hpp \ From 2e1c66897f1be8de6bdea92b90d0c0630c3f5b9a Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 25 Jun 2018 19:08:22 +0100 Subject: [PATCH 186/267] Hadrons: introduction message --- extras/Hadrons/Application.cc | 24 +++++++++++++++++++++--- extras/Hadrons/Global.hpp | 12 ++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/extras/Hadrons/Application.cc b/extras/Hadrons/Application.cc index f409d8eb..c746fa7e 100644 --- a/extras/Hadrons/Application.cc +++ b/extras/Hadrons/Application.cc @@ -51,9 +51,27 @@ Application::Application(void) loc[d] /= mpi[d]; locVol_ *= loc[d]; } - LOG(Message) << "Global lattice: " << dim << std::endl; - LOG(Message) << "MPI partition : " << mpi << std::endl; - LOG(Message) << "Local lattice : " << loc << std::endl; + LOG(Message) << "====== HADRONS APPLICATION STARTING ======" << std::endl; + LOG(Message) << "** Dimensions" << std::endl; + LOG(Message) << "Global lattice : " << dim << std::endl; + LOG(Message) << "MPI partition : " << mpi << std::endl; + LOG(Message) << "Local lattice : " << loc << std::endl; + LOG(Message) << std::endl; + LOG(Message) << "** Default parameters (associated C macro)" << std::endl; + LOG(Message) << "ASCII output precision (DEFAULT_ASCII_PREC) : " + << DEFAULT_ASCII_PREC << std::endl; + LOG(Message) << "Fermion implementation (FIMPL) : " + << HADRONS_STR(FIMPL) << std::endl; + LOG(Message) << "Fermion complex implementation (ZFIMPL) : " + << HADRONS_STR(ZFIMPL) << std::endl; + LOG(Message) << "Scalar implementation (SIMPL) : " + << HADRONS_STR(SIMPL) << std::endl; + LOG(Message) << "Gauge implementation (GIMPL) : " + << HADRONS_STR(GIMPL) << std::endl; + LOG(Message) << "Eigenvector base size (HADRONS_DEFAULT_LANCZOS_NBASIS): " + << HADRONS_DEFAULT_LANCZOS_NBASIS << std::endl; + LOG(Message) << "Schur decomposition (HADRONS_DEFAULT_SCHUR) : " + << HADRONS_STR(HADRONS_DEFAULT_SCHUR) << std::endl; } Application::Application(const Application::GlobalPar &par) diff --git a/extras/Hadrons/Global.hpp b/extras/Hadrons/Global.hpp index bae34a8d..fdacb799 100644 --- a/extras/Hadrons/Global.hpp +++ b/extras/Hadrons/Global.hpp @@ -43,6 +43,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #define DEFAULT_ASCII_PREC 16 #endif +/* the 'using Grid::operator<<;' statement prevents a very nasty compilation + * error with GCC 5 (clang & GCC 6 compile fine without it). + */ + #define BEGIN_HADRONS_NAMESPACE \ namespace Grid {\ using namespace QCD;\ @@ -58,10 +62,6 @@ using Grid::operator>>; #define END_MODULE_NAMESPACE } -/* the 'using Grid::operator<<;' statement prevents a very nasty compilation - * error with GCC 5 (clang & GCC 6 compile fine without it). - */ - #ifndef FIMPL #define FIMPL WilsonImplR #endif @@ -207,6 +207,10 @@ void makeFileDir(const std::string filename, GridBase *g); #define HADRONS_SCHUR_SOLVE(conv) _HADRONS_SCHUR_SOLVE_(conv) #define HADRONS_DEFAULT_SCHUR_SOLVE HADRONS_SCHUR_SOLVE(HADRONS_DEFAULT_SCHUR) +// stringify macro +#define _HADRONS_STR(x) #x +#define HADRONS_STR(x) _HADRONS_STR(x) + END_HADRONS_NAMESPACE #include From 049cc518f470fb409b151b7b9f0e293e954311b3 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 25 Jun 2018 19:08:39 +0100 Subject: [PATCH 187/267] Hadrons: introduction message 2 --- extras/Hadrons/Application.cc | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/extras/Hadrons/Application.cc b/extras/Hadrons/Application.cc index c746fa7e..0490c222 100644 --- a/extras/Hadrons/Application.cc +++ b/extras/Hadrons/Application.cc @@ -41,6 +41,9 @@ using namespace Hadrons; * Application implementation * ******************************************************************************/ // constructors //////////////////////////////////////////////////////////////// +#define MACOUT(macro) macro << " (" << #macro << ")" +#define MACOUTS(macro) HADRONS_STR(macro) << " (" << #macro << ")" + Application::Application(void) { initLogger(); @@ -57,21 +60,16 @@ Application::Application(void) LOG(Message) << "MPI partition : " << mpi << std::endl; LOG(Message) << "Local lattice : " << loc << std::endl; LOG(Message) << std::endl; - LOG(Message) << "** Default parameters (associated C macro)" << std::endl; - LOG(Message) << "ASCII output precision (DEFAULT_ASCII_PREC) : " - << DEFAULT_ASCII_PREC << std::endl; - LOG(Message) << "Fermion implementation (FIMPL) : " - << HADRONS_STR(FIMPL) << std::endl; - LOG(Message) << "Fermion complex implementation (ZFIMPL) : " - << HADRONS_STR(ZFIMPL) << std::endl; - LOG(Message) << "Scalar implementation (SIMPL) : " - << HADRONS_STR(SIMPL) << std::endl; - LOG(Message) << "Gauge implementation (GIMPL) : " - << HADRONS_STR(GIMPL) << std::endl; - LOG(Message) << "Eigenvector base size (HADRONS_DEFAULT_LANCZOS_NBASIS): " - << HADRONS_DEFAULT_LANCZOS_NBASIS << std::endl; - LOG(Message) << "Schur decomposition (HADRONS_DEFAULT_SCHUR) : " - << HADRONS_STR(HADRONS_DEFAULT_SCHUR) << std::endl; + LOG(Message) << "** Default parameters (and associated C macro)" << std::endl; + LOG(Message) << "ASCII output precision : " << MACOUT(DEFAULT_ASCII_PREC) << std::endl; + LOG(Message) << "Fermion implementation : " << MACOUTS(FIMPL) << std::endl; + LOG(Message) << "z-Fermion implementation: " << MACOUTS(ZFIMPL) << std::endl; + LOG(Message) << "Scalar implementation : " << MACOUTS(SIMPL) << std::endl; + LOG(Message) << "Gauge implementation : " << MACOUTS(GIMPL) << std::endl; + LOG(Message) << "Eigenvector base size : " + << MACOUT(HADRONS_DEFAULT_LANCZOS_NBASIS) << std::endl; + LOG(Message) << "Schur decomposition : " << MACOUTS(HADRONS_DEFAULT_SCHUR) << std::endl; + LOG(Message) << std::endl; } Application::Application(const Application::GlobalPar &par) From d2c42e6f4200f0f0efd524c448a9a6b2e515403c Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 26 Jun 2018 14:59:33 +0100 Subject: [PATCH 188/267] Hadrons: scaled DWF action --- extras/Hadrons/Modules.hpp | 1 + extras/Hadrons/Modules/MAction/ScaledDWF.cc | 7 ++ extras/Hadrons/Modules/MAction/ScaledDWF.hpp | 108 +++++++++++++++++++ extras/Hadrons/modules.inc | 2 + 4 files changed, 118 insertions(+) create mode 100644 extras/Hadrons/Modules/MAction/ScaledDWF.cc create mode 100644 extras/Hadrons/Modules/MAction/ScaledDWF.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index af4592ea..f882d86c 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MAction/ScaledDWF.cc b/extras/Hadrons/Modules/MAction/ScaledDWF.cc new file mode 100644 index 00000000..19e7cf4c --- /dev/null +++ b/extras/Hadrons/Modules/MAction/ScaledDWF.cc @@ -0,0 +1,7 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MAction; + +template class Grid::Hadrons::MAction::TScaledDWF; diff --git a/extras/Hadrons/Modules/MAction/ScaledDWF.hpp b/extras/Hadrons/Modules/MAction/ScaledDWF.hpp new file mode 100644 index 00000000..78127f6f --- /dev/null +++ b/extras/Hadrons/Modules/MAction/ScaledDWF.hpp @@ -0,0 +1,108 @@ +#ifndef Hadrons_MAction_ScaledDWF_hpp_ +#define Hadrons_MAction_ScaledDWF_hpp_ + +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * Scaled domain wall fermion * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MAction) + +class ScaledDWFPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(ScaledDWFPar, + std::string , gauge, + unsigned int, Ls, + double , mass, + double , M5, + double , scale, + std::string , boundary); +}; + +template +class TScaledDWF: public Module +{ +public: + FG_TYPE_ALIASES(FImpl,); +public: + // constructor + TScaledDWF(const std::string name); + // destructor + virtual ~TScaledDWF(void) {}; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER_TMP(ScaledDWF, TScaledDWF, MAction); + +/****************************************************************************** + * TScaledDWF implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TScaledDWF::TScaledDWF(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TScaledDWF::getInput(void) +{ + std::vector in = {par().gauge}; + + return in; +} + +template +std::vector TScaledDWF::getOutput(void) +{ + std::vector out = {getName()}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TScaledDWF::setup(void) +{ + LOG(Message) << "Setting up scaled domain wall fermion matrix with m= " + << par().mass << ", M5= " << par().M5 << ", Ls= " << par().Ls + << ", scale= " << par().scale + << " using gauge field '" << par().gauge << "'" + << std::endl; + LOG(Message) << "Fermion boundary conditions: " << par().boundary + << std::endl; + + env().createGrid(par().Ls); + auto &U = envGet(LatticeGaugeField, par().gauge); + auto &g4 = *env().getGrid(); + auto &grb4 = *env().getRbGrid(); + auto &g5 = *env().getGrid(par().Ls); + auto &grb5 = *env().getRbGrid(par().Ls); + std::vector boundary = strToVec(par().boundary); + typename MobiusFermion::ImplParams implParams(boundary); + envCreateDerived(FMat, ScaledShamirFermion, getName(), par().Ls, U, g5, + grb5, g4, grb4, par().mass, par().M5, par().scale, + implParams); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TScaledDWF::execute(void) +{} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MAction_ScaledDWF_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index ebf5c9cb..37477d79 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -35,6 +35,7 @@ modules_cc =\ Modules/MAction/ZMobiusDWF.cc \ Modules/MAction/WilsonClover.cc \ Modules/MAction/DWF.cc \ + Modules/MAction/ScaledDWF.cc \ Modules/MScalarSUN/TrPhi.cc \ Modules/MScalarSUN/Grad.cc \ Modules/MScalarSUN/TimeMomProbe.cc \ @@ -91,6 +92,7 @@ modules_hpp =\ Modules/MAction/Wilson.hpp \ Modules/MAction/WilsonClover.hpp \ Modules/MAction/ZMobiusDWF.hpp \ + Modules/MAction/ScaledDWF.hpp \ Modules/MScalarSUN/StochFreeField.hpp \ Modules/MScalarSUN/TwoPointNPR.hpp \ Modules/MScalarSUN/ShiftProbe.hpp \ From f7e86f81a00774a94fe0b3afd4bd0f3a27e3a2bb Mon Sep 17 00:00:00 2001 From: fionnoh Date: Thu, 28 Jun 2018 16:14:16 +0100 Subject: [PATCH 189/267] Changes A2A class to make use of the new Solver class --- extras/Hadrons/AllToAllVectors.hpp | 89 ++++++++++-------------------- 1 file changed, 28 insertions(+), 61 deletions(-) diff --git a/extras/Hadrons/AllToAllVectors.hpp b/extras/Hadrons/AllToAllVectors.hpp index 436f18b8..d9f3c281 100644 --- a/extras/Hadrons/AllToAllVectors.hpp +++ b/extras/Hadrons/AllToAllVectors.hpp @@ -3,6 +3,7 @@ #include #include +#include BEGIN_HADRONS_NAMESPACE @@ -10,14 +11,14 @@ BEGIN_HADRONS_NAMESPACE // A2A Modes //////////////////////////////// -template +template class A2AModesSchurDiagTwo { private: const std::vector *evec; const std::vector *eval; Matrix &action; - std::function &Solver; + Solver &solver; const int Nl, Nh; const bool return_5d; std::vector w_high_5d, v_high_5d, w_high_4d, v_high_4d; @@ -25,12 +26,12 @@ class A2AModesSchurDiagTwo public: A2AModesSchurDiagTwo(const std::vector *_evec, const std::vector *_eval, Matrix &_action, - std::function &_Solver, + Solver &_solver, const int _Nl, const int _Nh, const bool _return_5d) : evec(_evec), eval(_eval), action(_action), - Solver(_Solver), + solver(_solver), Nl(_Nl), Nh(_Nh), return_5d(_return_5d) { @@ -56,7 +57,7 @@ class A2AModesSchurDiagTwo LOG(Message) << "A2A high modes for i = " << i << std::endl; i5d = 0; if (return_5d) i5d = i; - this->high_mode_v(action, Solver, source_5d, v_high_5d[i5d], v_high_4d[i]); + this->high_mode_v(action, solver, source_5d, v_high_5d[i5d], v_high_4d[i]); this->high_mode_w(source_5d, source_4d, w_high_5d[i5d], w_high_4d[i]); } @@ -185,13 +186,13 @@ class A2AModesSchurDiagTwo action.ExportPhysicalFermionSolution(wout_5d, wout_4d); } - void high_mode_v(Matrix &action, std::function &Solver, const Field &source, Field &vout_5d, Field &vout_4d) + void high_mode_v(Matrix &action, Solver &solver, const Field &source, Field &vout_5d, Field &vout_4d) { GridBase *fgrid = action.Grid(); Field tmp(fgrid); action.Dminus(source, tmp); - Solver(vout_5d, source); // Note: Solver is Solver(out, in) + solver(vout_5d, source); // Note: solver is solver(out, in) action.ExportPhysicalFermionSolution(vout_5d, vout_4d); } @@ -202,63 +203,29 @@ class A2AModesSchurDiagTwo } }; -//////////////////////////////// -// Low Modes -//////////////////////////////// +// TODO: A2A for coarse eigenvectors -template -class A2ALMSchurDiagTwo : public A2AModesSchurDiagTwo -{ - private: - const std::vector &evec; - const std::vector &eval; - Matrix &action; +// template +// class A2ALMSchurDiagTwoCoarse : public A2AModesSchurDiagTwo +// { +// private: +// const std::vector &subspace; +// const std::vector &evec_coarse; +// const std::vector &eval_coarse; +// Matrix &action; - public: - A2ALMSchurDiagTwo(const std::vector &_evec, const std::vector &_eval, Matrix &_action) : evec(_evec), eval(_eval), action(_action){}; - void operator()(int i, Field &vout, Field &wout) - { - this->low_mode_v(action, evec[i], eval[i], vout); - this->low_mode_w(action, evec[i], eval[i], wout); - } -}; +// public: +// A2ALMSchurDiagTwoCoarse(const std::vector &_subspace, const std::vector &_evec_coarse, const std::vector &_eval_coarse, Matrix &_action) +// : subspace(_subspace), evec_coarse(_evec_coarse), eval_coarse(_eval_coarse), action(_action){}; -template -class A2ALMSchurDiagTwoCoarse : public A2AModesSchurDiagTwo -{ - private: - const std::vector &subspace; - const std::vector &evec_coarse; - const std::vector &eval_coarse; - Matrix &action; - - public: - A2ALMSchurDiagTwoCoarse(const std::vector &_subspace, const std::vector &_evec_coarse, const std::vector &_eval_coarse, Matrix &_action) - : subspace(_subspace), evec_coarse(_evec_coarse), eval_coarse(_eval_coarse), action(_action){}; - - void operator()(int i, FineField &vout, FineField &wout) - { - FineField prom_evec(subspace[0]._grid); - blockPromote(evec_coarse[i], prom_evec, subspace); - this->low_mode_v(action, prom_evec, eval_coarse[i], vout); - this->low_mode_w(action, prom_evec, eval_coarse[i], wout); - } -}; - -//////////////////////////////// -// High Modes -//////////////////////////////// - -template -class A2AHMSchurDiagTwo : virtual public A2AModesSchurDiagTwo -{ - public: - void operator()(Matrix &action, std::function &Solver, const Field &source, Field &vout, Field &wout) - { - this->high_mode_v(action, Solver, source, vout); - this->high_mode_w(action, source, wout); - } -}; +// void operator()(int i, FineField &vout, FineField &wout) +// { +// FineField prom_evec(subspace[0]._grid); +// blockPromote(evec_coarse[i], prom_evec, subspace); +// this->low_mode_v(action, prom_evec, eval_coarse[i], vout); +// this->low_mode_w(action, prom_evec, eval_coarse[i], wout); +// } +// }; END_HADRONS_NAMESPACE From 7fe3974c0ae856b45a21ba1fcf63270b91953992 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Thu, 28 Jun 2018 16:14:49 +0100 Subject: [PATCH 190/267] Included eigenPacks and action as references, not inputs, of A2A module. They now now longer need to be parameters in the meson field modules. --- extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 50 +++++++++++++------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp index 4db90eef..c98243e6 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include @@ -23,7 +24,7 @@ public: int, N, std::vector, sources, std::string, action, - std::string, eigenpack, + std::string, eigenPack, std::string, solver); }; @@ -37,7 +38,7 @@ class TA2AVectors : public Module typedef FermionEigenPack EPack; typedef CoarseFermionEigenPack CoarseEPack; - typedef A2AModesSchurDiagTwo A2ABase; + typedef A2AModesSchurDiagTwo A2ABase; public: // constructor @@ -46,6 +47,7 @@ class TA2AVectors : public Module virtual ~TA2AVectors(void) {}; // dependency relation virtual std::vector getInput(void); + virtual std::vector getReference(void); virtual std::vector getOutput(void); // setup virtual void setup(void); @@ -54,7 +56,7 @@ class TA2AVectors : public Module private: unsigned int Ls_; - std::string retName_; + std::string className_; }; MODULE_REGISTER_TMP(A2AVectors, ARG(TA2AVectors), MSolver); @@ -67,14 +69,17 @@ MODULE_REGISTER_TMP(ZA2AVectors, ARG(TA2AVectors TA2AVectors::TA2AVectors(const std::string name) : Module(name) -, retName_ (name + "_ret") +, className_ (name + "_class") {} // dependencies/products /////////////////////////////////////////////////////// template std::vector TA2AVectors::getInput(void) { - std::vector in = {par().action, par().solver, par().solver + "_subtract"}; + int Nl = par().Nl; + std::string sub_string = ""; + if (Nl > 0) sub_string = "_subtract"; + std::vector in = {par().solver + sub_string}; int n = par().sources.size(); @@ -86,10 +91,23 @@ std::vector TA2AVectors::getInput(void) return in; } +template +std::vector TA2AVectors::getReference(void) +{ + std::vector ref = {par().action}; + + if (!par().eigenPack.empty()) + { + ref.push_back(par().eigenPack); + } + + return ref; +} + template std::vector TA2AVectors::getOutput(void) { - std::vector out = {getName(), retName_}; + std::vector out = {getName(), className_}; return out; } @@ -106,7 +124,7 @@ void TA2AVectors::setup(void) std::string sub_string = ""; if (Nl > 0) sub_string = "_subtract"; - auto &solver = envGet(SolverFn, par().solver + sub_string); + auto &solver = envGet(Solver, par().solver + sub_string); Ls_ = env().getObjectLs(par().solver + sub_string); auto &action = envGet(FMat, par().action); @@ -121,10 +139,10 @@ void TA2AVectors::setup(void) if (Nl > 0) { // Low modes - auto &epack = envGet(EPack, par().eigenpack); + auto &epack = envGet(EPack, par().eigenPack); LOG(Message) << "Creating a2a vectors " << getName() << - " using eigenpack '" << par().eigenpack << "' (" + " using eigenpack '" << par().eigenPack << "' (" << epack.evec.size() << " modes)" << " and " << Nh << " high modes." << std::endl; evec = &epack.evec; @@ -135,7 +153,7 @@ void TA2AVectors::setup(void) LOG(Message) << "Creating a2a vectors " << getName() << " using " << Nh << " high modes only." << std::endl; } - envCreate(A2ABase, retName_, Ls_, + envCreate(A2ABase, className_, Ls_, evec, eval, action, solver, @@ -158,7 +176,7 @@ void TA2AVectors::execute(void) if (Nl > 0) sub_string = "_subtract"; Ls_ = env().getObjectLs(par().solver + sub_string); - auto &a2areturn = envGet(A2ABase, retName_); + auto &a2areturn = envGet(A2ABase, className_); // High modes auto sources = par().sources; @@ -168,8 +186,6 @@ void TA2AVectors::execute(void) envGetTmp(FermionField, tmp); envGetTmp(FermionField, tmp2); - // TODO: At the moment weighting only applies to the 4d->5d source path - // similar to how the 5d and 4d srcs are passed in, this needs more work to be less brittle double weight = 1.0 / sqrt(Ns*Nc*Nsrc); int N_count = 0; for (unsigned int s = 0; s < Ns; ++s) @@ -184,11 +200,13 @@ void TA2AVectors::execute(void) if (Ls_ == 1) { PropToFerm(ferm_src, prop_src, s, c); + ferm_src = weight*ferm_src; + tmp = ferm_src; } else { - PropToFerm(tmp2, prop_src, s, c); - tmp = weight*tmp2; + PropToFerm(tmp, prop_src, s, c); + tmp = weight*tmp; action.ImportPhysicalFermionSource(tmp, ferm_src); } } @@ -202,6 +220,8 @@ void TA2AVectors::execute(void) else { PropToFerm(ferm_src, prop_src, s, c); + ferm_src = weight*ferm_src; + action.ExportPhysicalFermionSolution(ferm_src, tmp); } } LOG(Message) << "a2areturn.high_modes Ncount = " << N_count << std::endl; From a2929f43843fb42907dadaeb27ef69ab5a50b395 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Thu, 28 Jun 2018 16:17:26 +0100 Subject: [PATCH 191/267] Removed A2A contraction module and replaced it with the beginnings of a meson field module --- .../Modules/MContraction/MesonFieldGamma.cc | 7 ++ ...{MesonFieldGmu.hpp => MesonFieldGamma.hpp} | 117 +++++++++++------- .../Modules/MContraction/MesonFieldGmu.cc | 7 -- 3 files changed, 77 insertions(+), 54 deletions(-) create mode 100644 extras/Hadrons/Modules/MContraction/MesonFieldGamma.cc rename extras/Hadrons/Modules/MContraction/{MesonFieldGmu.hpp => MesonFieldGamma.hpp} (51%) delete mode 100644 extras/Hadrons/Modules/MContraction/MesonFieldGmu.cc diff --git a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.cc b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.cc new file mode 100644 index 00000000..70c2657d --- /dev/null +++ b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.cc @@ -0,0 +1,7 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MContraction; + +template class Grid::Hadrons::MContraction::TMesonFieldGamma; \ No newline at end of file diff --git a/extras/Hadrons/Modules/MContraction/MesonFieldGmu.hpp b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp similarity index 51% rename from extras/Hadrons/Modules/MContraction/MesonFieldGmu.hpp rename to extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp index 2841ae04..6a67f87b 100644 --- a/extras/Hadrons/Modules/MContraction/MesonFieldGmu.hpp +++ b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp @@ -1,5 +1,5 @@ -#ifndef Hadrons_MContraction_A2AMeson_hpp_ -#define Hadrons_MContraction_A2AMeson_hpp_ +#ifndef Hadrons_MContraction_MesonFieldGamma_hpp_ +#define Hadrons_MContraction_MesonFieldGamma_hpp_ #include #include @@ -9,7 +9,7 @@ BEGIN_HADRONS_NAMESPACE /****************************************************************************** - * A2AMeson * + * MesonFieldGamma * ******************************************************************************/ BEGIN_MODULE_NAMESPACE(MContraction) @@ -21,88 +21,98 @@ class MesonFieldPar : Serializable int, N, std::string, A2A1, std::string, A2A2, - std::string, action, - std::string, epack1, - std::string, epack2, - std::string, gamma, + std::string, gammas, std::string, output); }; template -class TMesonFieldGmu : public Module +class TMesonFieldGamma : public Module { public: FERM_TYPE_ALIASES(FImpl, ); + SOLVER_TYPE_ALIASES(FImpl, ); - typedef A2AModesSchurDiagTwo A2ABase; + typedef A2AModesSchurDiagTwo A2ABase; class Result : Serializable { public: GRID_SERIALIZABLE_CLASS_MEMBERS(Result, - Gamma::Algebra, gamma_mu, + Gamma::Algebra, gamma, std::vector>>, MesonField); }; public: // constructor - TMesonFieldGmu(const std::string name); + TMesonFieldGamma(const std::string name); // destructor - virtual ~TMesonFieldGmu(void){}; + virtual ~TMesonFieldGamma(void){}; // dependency relation virtual std::vector getInput(void); virtual std::vector getOutput(void); + virtual void parseGammaString(std::vector &gammaList); // setup virtual void setup(void); // execution virtual void execute(void); }; -MODULE_REGISTER(A2AMeson, ARG(TMesonFieldGmu), MContraction); +MODULE_REGISTER(MesonFieldGamma, ARG(TMesonFieldGamma), MContraction); /****************************************************************************** -* TMesonFieldGmu implementation * +* TMesonFieldGamma implementation * ******************************************************************************/ // constructor ///////////////////////////////////////////////////////////////// template -TMesonFieldGmu::TMesonFieldGmu(const std::string name) +TMesonFieldGamma::TMesonFieldGamma(const std::string name) : Module(name) { } // dependencies/products /////////////////////////////////////////////////////// template -std::vector TMesonFieldGmu::getInput(void) +std::vector TMesonFieldGamma::getInput(void) { - std::vector in = {par().A2A1, par().A2A2, par().action}; - in.push_back(par().A2A1 + "_ret"); - in.push_back(par().A2A2 + "_ret"); - int Nl = par().Nl; - if (Nl > 0) - { - in.push_back(par().epack1); - in.push_back(par().epack2); - } - + std::vector in = {par().A2A1 + "_class", par().A2A2 + "_class"}; return in; } template -std::vector TMesonFieldGmu::getOutput(void) +std::vector TMesonFieldGamma::getOutput(void) { std::vector out = {}; return out; } +template +void TMesonFieldGamma::parseGammaString(std::vector &gammaList) +{ + gammaList.clear(); + // Determine gamma matrices to insert at source/sink. + if (par().gammas.compare("all") == 0) + { + // Do all contractions. + for (unsigned int i = 1; i < Gamma::nGamma; i += 2) + { + gammaList.push_back(((Gamma::Algebra)i)); + } + } + else + { + // Parse individual contractions from input string. + gammaList = strToVec(par().gammas); + } +} + // setup /////////////////////////////////////////////////////////////////////// template -void TMesonFieldGmu::setup(void) +void TMesonFieldGamma::setup(void) { int nt = env().getDim(Tp); int N = par().N; - int Ls_ = env().getObjectLs(par().A2A1 + "_ret"); + int Ls_ = env().getObjectLs(par().A2A1 + "_class"); envTmpLat(FermionField, "w", Ls_); envTmpLat(FermionField, "v", Ls_); @@ -112,27 +122,37 @@ void TMesonFieldGmu::setup(void) // execution /////////////////////////////////////////////////////////////////// template -void TMesonFieldGmu::execute(void) +void TMesonFieldGamma::execute(void) { - LOG(Message) << "Computing A2A meson field for gamma_mu = " << par().gamma << ", taking w from " << par().A2A1 << " and v from " << par().A2A2 << std::endl; - - Result result; - std::istringstream sstr(par().gamma); - Gamma::Algebra g_mu; - sstr >> g_mu; - Gamma gamma_mu(g_mu); + LOG(Message) << "Computing A2A meson field for gamma = " << par().gammas << ", taking w from " << par().A2A1 << " and v from " << par().A2A2 << std::endl; int N = par().N; - LOG(Message) << "N for A2A cont: " << N << std::endl; - result.gamma_mu = g_mu; - result.MesonField.resize(N); - int nt = env().getDim(Tp); + + std::vector result; + std::vector gammaResultList; + std::vector gammaList; + + parseGammaString(gammaResultList); + result.resize(gammaResultList.size()); + + Gamma g5(Gamma::Algebra::Gamma5); + gammaList.resize(gammaResultList.size(), g5); + + for (unsigned int i = 0; i < result.size(); ++i) + { + result[i].gamma = gammaResultList[i]; + result[i].MesonField.resize(N, std::vector>(N, std::vector(nt))); + + Gamma gamma(gammaResultList[i]); + gammaList[i] = gamma; + } + std::vector MesonField_ij; MesonField_ij.resize(nt); - auto &a2a1 = envGet(A2ABase, par().A2A1 + "_ret"); - auto &a2a2 = envGet(A2ABase, par().A2A2 + "_ret"); + auto &a2a1 = envGet(A2ABase, par().A2A1 + "_class"); + auto &a2a2 = envGet(A2ABase, par().A2A2 + "_class"); envGetTmp(FermionField, w); envGetTmp(FermionField, v); @@ -145,9 +165,12 @@ void TMesonFieldGmu::execute(void) for (unsigned int j = 0; j < N; j++) { a2a2.return_v(j, tmpv_5d, v); - v = gamma_mu*v; - sliceInnerProductVector(MesonField_ij, w, v, Tp); - result.MesonField[j][i] = MesonField_ij; + for (unsigned int k = 0; k < result.size(); k++) + { + v = gammaList[k]*v; + sliceInnerProductVector(MesonField_ij, w, v, Tp); + result[k].MesonField[i][j] = MesonField_ij; + } } if (i % 10 == 0) { @@ -162,4 +185,4 @@ END_MODULE_NAMESPACE END_HADRONS_NAMESPACE -#endif // Hadrons_MContraction_A2AMeson_hpp_ +#endif // Hadrons_MContraction_MesonFieldGm_hpp_ diff --git a/extras/Hadrons/Modules/MContraction/MesonFieldGmu.cc b/extras/Hadrons/Modules/MContraction/MesonFieldGmu.cc deleted file mode 100644 index dc8a3c40..00000000 --- a/extras/Hadrons/Modules/MContraction/MesonFieldGmu.cc +++ /dev/null @@ -1,7 +0,0 @@ -#include - -using namespace Grid; -using namespace Hadrons; -using namespace MContraction; - -template class Grid::Hadrons::MContraction::TMesonFieldGmu; \ No newline at end of file From daa0977d0176e60f30f3217ded7bd93db384932f Mon Sep 17 00:00:00 2001 From: fionnoh Date: Thu, 28 Jun 2018 16:34:56 +0100 Subject: [PATCH 192/267] Included a print statement that indicates that the guess is being subtracted from the solve. --- lib/algorithms/iterative/SchurRedBlack.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/algorithms/iterative/SchurRedBlack.h b/lib/algorithms/iterative/SchurRedBlack.h index 465f331c..5abc4d9f 100644 --- a/lib/algorithms/iterative/SchurRedBlack.h +++ b/lib/algorithms/iterative/SchurRedBlack.h @@ -186,6 +186,8 @@ namespace Grid { RealD ns = norm2(in); RealD nr = norm2(resid); std::cout< Date: Mon, 2 Jul 2018 17:52:04 +0100 Subject: [PATCH 193/267] Hadrons: stout smearing module --- extras/Hadrons/Global.hpp | 2 +- extras/Hadrons/Modules.hpp | 1 + .../Hadrons/Modules/MGauge/StoutSmearing.cc | 7 ++ .../Hadrons/Modules/MGauge/StoutSmearing.hpp | 103 ++++++++++++++++++ extras/Hadrons/modules.inc | 2 + 5 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 extras/Hadrons/Modules/MGauge/StoutSmearing.cc create mode 100644 extras/Hadrons/Modules/MGauge/StoutSmearing.hpp diff --git a/extras/Hadrons/Global.hpp b/extras/Hadrons/Global.hpp index fdacb799..cf96ad9b 100644 --- a/extras/Hadrons/Global.hpp +++ b/extras/Hadrons/Global.hpp @@ -72,7 +72,7 @@ using Grid::operator>>; #define SIMPL ScalarImplCR #endif #ifndef GIMPL -#define GIMPL GimplTypesR +#define GIMPL PeriodicGimplR #endif BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index f882d86c..6bf5d3ed 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MGauge/StoutSmearing.cc b/extras/Hadrons/Modules/MGauge/StoutSmearing.cc new file mode 100644 index 00000000..161e74aa --- /dev/null +++ b/extras/Hadrons/Modules/MGauge/StoutSmearing.cc @@ -0,0 +1,7 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MGauge; + +template class Grid::Hadrons::MGauge::TStoutSmearing; diff --git a/extras/Hadrons/Modules/MGauge/StoutSmearing.hpp b/extras/Hadrons/Modules/MGauge/StoutSmearing.hpp new file mode 100644 index 00000000..d84b1c6f --- /dev/null +++ b/extras/Hadrons/Modules/MGauge/StoutSmearing.hpp @@ -0,0 +1,103 @@ +#ifndef Hadrons_MGauge_StoutSmearing_hpp_ +#define Hadrons_MGauge_StoutSmearing_hpp_ + +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * Stout smearing * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MGauge) + +class StoutSmearingPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(StoutSmearingPar, + std::string, gauge, + unsigned int, steps, + double, rho); +}; + +template +class TStoutSmearing: public Module +{ +public: + typedef typename GImpl::Field GaugeField; +public: + // constructor + TStoutSmearing(const std::string name); + // destructor + virtual ~TStoutSmearing(void) {}; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER_TMP(StoutSmearing, TStoutSmearing, MGauge); + +/****************************************************************************** + * TStoutSmearing implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TStoutSmearing::TStoutSmearing(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TStoutSmearing::getInput(void) +{ + std::vector in = {par().gauge}; + + return in; +} + +template +std::vector TStoutSmearing::getOutput(void) +{ + std::vector out = {getName()}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TStoutSmearing::setup(void) +{ + envCreateLat(GaugeField, getName()); + envTmpLat(GaugeField, "buf"); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TStoutSmearing::execute(void) +{ + LOG(Message) << "Smearing '" << par().gauge << "' with " << par().steps + << " of stout smearing and rho= " << par().rho << std::endl; + + Smear_Stout smearer(par().rho); + auto &U = envGet(GaugeField, par().gauge); + auto &Usmr = envGet(GaugeField, getName()); + + envGetTmp(GaugeField, buf); + buf = U; + for (unsigned int n = 0; n < par().steps; ++n) + { + smearer.smear(Usmr, buf); + buf = Usmr; + } +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MGauge_StoutSmearing_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 37477d79..58b082d0 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -18,6 +18,7 @@ modules_cc =\ Modules/MSink/Smear.cc \ Modules/MSolver/RBPrecCG.cc \ Modules/MSolver/LocalCoherenceLanczos.cc \ + Modules/MGauge/StoutSmearing.cc \ Modules/MGauge/Unit.cc \ Modules/MGauge/UnitEm.cc \ Modules/MGauge/StochEm.cc \ @@ -75,6 +76,7 @@ modules_hpp =\ Modules/MSolver/LocalCoherenceLanczos.hpp \ Modules/MSolver/RBPrecCG.hpp \ Modules/MGauge/UnitEm.hpp \ + Modules/MGauge/StoutSmearing.hpp \ Modules/MGauge/Unit.hpp \ Modules/MGauge/Random.hpp \ Modules/MGauge/FundtoHirep.hpp \ From a8a15dd9d00b08a09641a4b5067fc2d22c08c9d9 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 2 Jul 2018 17:52:39 +0100 Subject: [PATCH 194/267] Hadrons: code cleaning --- extras/Hadrons/Modules/MAction/Wilson.hpp | 2 +- .../Hadrons/Modules/MAction/WilsonClover.hpp | 23 +++---------------- .../Hadrons/Modules/MGauge/StoutSmearing.hpp | 1 + 3 files changed, 5 insertions(+), 21 deletions(-) diff --git a/extras/Hadrons/Modules/MAction/Wilson.hpp b/extras/Hadrons/Modules/MAction/Wilson.hpp index a0eabd82..70e0acf1 100644 --- a/extras/Hadrons/Modules/MAction/Wilson.hpp +++ b/extras/Hadrons/Modules/MAction/Wilson.hpp @@ -102,7 +102,7 @@ std::vector TWilson::getOutput(void) template void TWilson::setup(void) { - LOG(Message) << "Setting up TWilson fermion matrix with m= " << par().mass + LOG(Message) << "Setting up Wilson fermion matrix with m= " << par().mass << " using gauge field '" << par().gauge << "'" << std::endl; LOG(Message) << "Fermion boundary conditions: " << par().boundary << std::endl; diff --git a/extras/Hadrons/Modules/MAction/WilsonClover.hpp b/extras/Hadrons/Modules/MAction/WilsonClover.hpp index bb2c5b59..0fb3b442 100644 --- a/extras/Hadrons/Modules/MAction/WilsonClover.hpp +++ b/extras/Hadrons/Modules/MAction/WilsonClover.hpp @@ -38,7 +38,7 @@ See the full license in the file "LICENSE" in the top level distribution directo BEGIN_HADRONS_NAMESPACE /****************************************************************************** - * TWilson quark action * + * Wilson clover quark action * ******************************************************************************/ BEGIN_MODULE_NAMESPACE(MAction) @@ -106,13 +106,7 @@ std::vector TWilsonClover::getOutput(void) template void TWilsonClover::setup(void) { - //unsigned int size; - - // size = 2*env().template lattice4dSize(); - // env().registerObject(getName(), size); - - - LOG(Message) << "Setting up TWilsonClover fermion matrix with m= " << par().mass + LOG(Message) << "Setting up Wilson clover fermion matrix with m= " << par().mass << " using gauge field '" << par().gauge << "'" << std::endl; LOG(Message) << "Fermion boundary conditions: " << par().boundary << std::endl; @@ -129,23 +123,12 @@ void TWilsonClover::setup(void) par().csw_t, par().clover_anisotropy, implParams); - - - //FMat *fMatPt = new WilsonCloverFermion(U, grid, gridRb, par().mass, - // par().csw_r, - // par().csw_t, - // par().clover_anisotropy, - // implParams); - //env().setObject(getName(), fMatPt); - } // execution /////////////////////////////////////////////////////////////////// template void TWilsonClover::execute() -{ - -} +{} END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MGauge/StoutSmearing.hpp b/extras/Hadrons/Modules/MGauge/StoutSmearing.hpp index d84b1c6f..66406f5b 100644 --- a/extras/Hadrons/Modules/MGauge/StoutSmearing.hpp +++ b/extras/Hadrons/Modules/MGauge/StoutSmearing.hpp @@ -81,6 +81,7 @@ template void TStoutSmearing::execute(void) { LOG(Message) << "Smearing '" << par().gauge << "' with " << par().steps + << " step" << ((par().steps > 1) ? "s" : "") << " of stout smearing and rho= " << par().rho << std::endl; Smear_Stout smearer(par().rho); From f74617c124b7eef542c25da96f1bda7cb464e32b Mon Sep 17 00:00:00 2001 From: fionnoh Date: Tue, 3 Jul 2018 14:04:53 +0100 Subject: [PATCH 195/267] Added ZFIMPL to meson field module --- extras/Hadrons/Modules/MContraction/MesonFieldGamma.cc | 3 ++- extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.cc b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.cc index 70c2657d..9218d587 100644 --- a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.cc +++ b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.cc @@ -4,4 +4,5 @@ using namespace Grid; using namespace Hadrons; using namespace MContraction; -template class Grid::Hadrons::MContraction::TMesonFieldGamma; \ No newline at end of file +template class Grid::Hadrons::MContraction::TMesonFieldGamma; +template class Grid::Hadrons::MContraction::TMesonFieldGamma; \ No newline at end of file diff --git a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp index 6a67f87b..59c90c08 100644 --- a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp +++ b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp @@ -58,6 +58,7 @@ class TMesonFieldGamma : public Module }; MODULE_REGISTER(MesonFieldGamma, ARG(TMesonFieldGamma), MContraction); +MODULE_REGISTER(ZMesonFieldGamma, ARG(TMesonFieldGamma), MContraction); /****************************************************************************** * TMesonFieldGamma implementation * From db86cdd7bd9ac6e6d355fc6239daf5939ed3cda1 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Tue, 10 Jul 2018 13:30:45 +0100 Subject: [PATCH 196/267] Possible trash commit --- extras/Hadrons/AllToAllVectors.hpp | 1 - .../Modules/MContraction/MesonFieldGamma.hpp | 5 +- lib/lattice/Lattice_reduction.h | 121 +++++++++++++++++- lib/tensors/Tensor_inner.h | 26 ++++ 4 files changed, 148 insertions(+), 5 deletions(-) diff --git a/extras/Hadrons/AllToAllVectors.hpp b/extras/Hadrons/AllToAllVectors.hpp index d9f3c281..a514beac 100644 --- a/extras/Hadrons/AllToAllVectors.hpp +++ b/extras/Hadrons/AllToAllVectors.hpp @@ -102,7 +102,6 @@ class A2AModesSchurDiagTwo void low_mode_v(Matrix &action, const Field &evec, const RealD &eval, Field &vout_5d, Field &vout_4d) { - GridBase *grid = action.RedBlackGrid(); Field src_o(grid); Field sol_e(grid); diff --git a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp index 59c90c08..0b81f607 100644 --- a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp +++ b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp @@ -39,7 +39,8 @@ class TMesonFieldGamma : public Module public: GRID_SERIALIZABLE_CLASS_MEMBERS(Result, Gamma::Algebra, gamma, - std::vector>>, MesonField); + std::vector>>, MesonField, + ComplexD, last); }; public: @@ -178,7 +179,7 @@ void TMesonFieldGamma::execute(void) LOG(Message) << "MF for i = " << i << " of " << N << std::endl; } } - + result[0].last = MesonField_ij[7]; saveResult(par().output, "meson", result); } diff --git a/lib/lattice/Lattice_reduction.h b/lib/lattice/Lattice_reduction.h index 3be4b6cb..12bfebed 100644 --- a/lib/lattice/Lattice_reduction.h +++ b/lib/lattice/Lattice_reduction.h @@ -39,8 +39,9 @@ template inline RealD norm2(const Lattice &arg){ // Double inner product template -inline ComplexD innerProduct(const Lattice &left,const Lattice &right) +inline ComplexD innerProduct(const Lattice &left,const Lattice &right) { + std::cout << GridLogMessage << "Start alloc innerProduct" << std::endl; typedef typename vobj::scalar_type scalar_type; typedef typename vobj::vector_typeD vector_type; GridBase *grid = left._grid; @@ -49,6 +50,8 @@ inline ComplexD innerProduct(const Lattice &left,const Lattice &righ ComplexD inner; Vector sumarray(grid->SumArraySize()*pad); + std::cout << GridLogMessage << "End alloc innerProduct" << std::endl; + std::cout << GridLogMessage << "Start parallel for innerProduct" << std::endl; parallel_for(int thr=0;thrSumArraySize();thr++){ int nwork, mywork, myoff; GridThread::GetWork(left._grid->oSites(),thr,mywork,myoff); @@ -62,13 +65,18 @@ inline ComplexD innerProduct(const Lattice &left,const Lattice &righ ComplexD tmp = Reduce(TensorRemove(vinner)) ; vstream(sumarray[thr*pad],tmp); } - + std::cout << GridLogMessage << "End parallel for innerProduct" << std::endl; + + std::cout << GridLogMessage << "Start inner sum innerProduct" << std::endl; inner=0.0; for(int i=0;iSumArraySize();i++){ inner = inner+sumarray[i*pad]; } right._grid->GlobalSum(inner); return inner; + std::cout << GridLogMessage << "End inner sum innerProduct" << std::endl; + + std::cout << GridLogMessage << "End innerProduct" << std::endl; } ///////////////////////// @@ -274,6 +282,115 @@ template inline void sliceSum(const Lattice &Data,std::vector< } } +template +static void mySliceInnerProductVector( std::vector & result, const Lattice &lhs,const Lattice &rhs,int orthogdim) +{ + std::cout << GridLogMessage << "Start mySsliceInnerProductVector" << std::endl; + + typedef typename vobj::scalar_type scalar_type; + std::vector lsSum; + localSliceInnerProductVector(result, lhs, rhs, lsSum, orthogdim); + globalSliceInnerProductVector(result, lhs, lsSum, orthogdim); + std::cout << GridLogMessage << "End mySliceInnerProductVector" << std::endl; +} + +template +static void localSliceInnerProductVector(std::vector &result, const Lattice &lhs, const Lattice &rhs, std::vector &lsSum, int orthogdim) +{ + std::cout << GridLogMessage << "Start prep" << std::endl; + typedef typename vobj::vector_type vector_type; + typedef typename vobj::scalar_type scalar_type; + GridBase *grid = lhs._grid; + assert(grid!=NULL); + conformable(grid,rhs._grid); + + const int Nd = grid->_ndimension; + const int Nsimd = grid->Nsimd(); + + assert(orthogdim >= 0); + assert(orthogdim < Nd); + + int fd=grid->_fdimensions[orthogdim]; + int ld=grid->_ldimensions[orthogdim]; + int rd=grid->_rdimensions[orthogdim]; + std::cout << GridLogMessage << "Start alloc" << std::endl; + + std::vector > lvSum(rd); // will locally sum vectors first + lsSum.resize(ld,scalar_type(0.0)); // sum across these down to scalars + std::vector> extracted(Nsimd); // splitting the SIMD + std::cout << GridLogMessage << "End alloc" << std::endl; + + result.resize(fd); // And then global sum to return the same vector to every node for IO to file + for(int r=0;r_slice_nblock[orthogdim]; + int e2= grid->_slice_block [orthogdim]; + int stride=grid->_slice_stride[orthogdim]; + std::cout << GridLogMessage << "End prep" << std::endl; + std::cout << GridLogMessage << "Start parallel inner product, _rd = " << rd << std::endl; + vector_type vv; + parallel_for(int r=0;r_ostride[orthogdim]; // base offset for start of plane + + for(int n=0;n icoor(Nd); + for(int rt=0;rt temp; + temp._internal = lvSum[rt]; + extract(temp,extracted); + + for(int idx=0;idxiCoorFromIindex(icoor,idx); + + int ldx =rt+icoor[orthogdim]*rd; + + lsSum[ldx]=lsSum[ldx]+extracted[idx]._internal; + + } + } + std::cout << GridLogMessage << "End sum over simd lanes" << std::endl; +} +template +static void globalSliceInnerProductVector(std::vector &result, const Lattice &lhs, std::vector &lsSum, int orthogdim) +{ + typedef typename vobj::scalar_type scalar_type; + GridBase *grid = lhs._grid; + int fd = result.size(); + int ld = lsSum.size(); + // sum over nodes. + std::vector gsum; + gsum.resize(fd, scalar_type(0.0)); + std::cout << GridLogMessage << "Start of gsum[t] creation:" << std::endl; + for(int t=0;t_processor_coor[orthogdim] ) { + gsum[t]=lsSum[lt]; + } + } + std::cout << GridLogMessage << "End of gsum[t] creation:" << std::endl; + std::cout << GridLogMessage << "Start of GlobalSumVector:" << std::endl; + grid->GlobalSumVector(&gsum[0], fd); + std::cout << GridLogMessage << "End of GlobalSumVector:" << std::endl; + + result = gsum; +} template static void sliceInnerProductVector( std::vector & result, const Lattice &lhs,const Lattice &rhs,int orthogdim) { diff --git a/lib/tensors/Tensor_inner.h b/lib/tensors/Tensor_inner.h index 46185652..b7a8417d 100644 --- a/lib/tensors/Tensor_inner.h +++ b/lib/tensors/Tensor_inner.h @@ -106,6 +106,7 @@ inline vRealD innerProductD(const vRealF &l,const vRealF &r){ typedef decltype(innerProduct(lhs._internal[0],rhs._internal[0])) ret_t; iScalar ret; ret=zero; + // std::cout << GridLogMessage << "innerProduct iVector" << std::endl; for(int c1=0;c1 ret; + // std::cout << GridLogMessage << "innerProduct iScalar" << std::endl; + ret._internal = innerProduct(lhs._internal,rhs._internal); return ret; } + template inline + auto myInnerProduct (const iVector& lhs,const iVector& rhs) -> iScalar + { + typedef decltype(innerProduct(lhs._internal[0],rhs._internal[0])) ret_t; + iScalar ret; + ret=zero; + std::cout << GridLogMessage << "myInnerProduct iVector, N = " << N << std::endl; + for(int c1=0;c1 inline + auto myInnerProduct (const iScalar& lhs,const iScalar& rhs) -> iScalar + { + typedef decltype(innerProduct(lhs._internal,rhs._internal)) ret_t; + iScalar ret; + std::cout << GridLogMessage << "myInnerProduct iScalar" << std::endl; + + ret._internal = myInnerProduct(lhs._internal,rhs._internal); + return ret; + } } #endif From 9deae8c96274016ff86746536d559e48bb09b087 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Mon, 16 Jul 2018 14:18:45 +0100 Subject: [PATCH 197/267] A2A meson field contraction code --- extras/Hadrons/Modules.hpp | 99 ++++----- .../Hadrons/Modules/MContraction/A2AMeson.cc | 7 + .../Hadrons/Modules/MContraction/A2AMeson.hpp | 206 ++++++++++++++++++ extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 4 - extras/Hadrons/modules.inc | 196 ++++++++--------- 5 files changed, 362 insertions(+), 150 deletions(-) create mode 100644 extras/Hadrons/Modules/MContraction/A2AMeson.cc create mode 100644 extras/Hadrons/Modules/MContraction/A2AMeson.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 9d6ef49a..58e9fec3 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,59 +1,60 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include #include +#include #include #include -#include -#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include #include -#include #include +#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include \ No newline at end of file +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/extras/Hadrons/Modules/MContraction/A2AMeson.cc b/extras/Hadrons/Modules/MContraction/A2AMeson.cc new file mode 100644 index 00000000..3ce5fe83 --- /dev/null +++ b/extras/Hadrons/Modules/MContraction/A2AMeson.cc @@ -0,0 +1,7 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MContraction; + +template class Grid::Hadrons::MContraction::TA2AMeson; \ No newline at end of file diff --git a/extras/Hadrons/Modules/MContraction/A2AMeson.hpp b/extras/Hadrons/Modules/MContraction/A2AMeson.hpp new file mode 100644 index 00000000..fa1cb82e --- /dev/null +++ b/extras/Hadrons/Modules/MContraction/A2AMeson.hpp @@ -0,0 +1,206 @@ +#ifndef Hadrons_MContraction_A2AMeson_hpp_ +#define Hadrons_MContraction_A2AMeson_hpp_ + +#include +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * A2AMeson * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MContraction) + +typedef std::pair GammaPair; + +class A2AMesonPar : Serializable +{ + public: + GRID_SERIALIZABLE_CLASS_MEMBERS(A2AMesonPar, + int, Nl, + int, N, + std::string, A2A1, + std::string, A2A2, + std::string, gammas, + std::string, output); +}; + +template +class TA2AMeson : public Module +{ + public: + FERM_TYPE_ALIASES(FImpl, ); + SOLVER_TYPE_ALIASES(FImpl, ); + + typedef A2AModesSchurDiagTwo A2ABase; + + class Result : Serializable + { + public: + GRID_SERIALIZABLE_CLASS_MEMBERS(Result, + Gamma::Algebra, gamma_snk, + Gamma::Algebra, gamma_src, + std::vector, corr); + }; + + public: + // constructor + TA2AMeson(const std::string name); + // destructor + virtual ~TA2AMeson(void){}; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + virtual void parseGammaString(std::vector &gammaList); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER(A2AMeson, ARG(TA2AMeson), MContraction); + +/****************************************************************************** +* TA2AMeson implementation * +******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TA2AMeson::TA2AMeson(const std::string name) + : Module(name) +{ +} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TA2AMeson::getInput(void) +{ + std::vector in = {par().A2A1, par().A2A2}; + in.push_back(par().A2A1 + "_class"); + in.push_back(par().A2A2 + "_class"); + + return in; +} + +template +std::vector TA2AMeson::getOutput(void) +{ + std::vector out = {}; + + return out; +} + +template +void TA2AMeson::parseGammaString(std::vector &gammaList) +{ + gammaList.clear(); + // Parse individual contractions from input string. + gammaList = strToVec(par().gammas); +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TA2AMeson::setup(void) +{ + int nt = env().getDim(Tp); + int N = par().N; + + int Ls_ = env().getObjectLs(par().A2A1 + "_class"); + + envTmp(std::vector, "w1", 1, N, FermionField(env().getGrid(1))); + envTmp(std::vector, "v1", 1, N, FermionField(env().getGrid(1))); + envTmpLat(FermionField, "tmpv_5d", Ls_); + envTmpLat(FermionField, "tmpw_5d", Ls_); + + envTmp(std::vector, "MF_x", 1, nt); + envTmp(std::vector, "MF_y", 1, nt); + envTmp(std::vector, "tmp", 1, nt); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TA2AMeson::execute(void) +{ + LOG(Message) << "Computing A2A meson contractions" << std::endl; + + Result result; + Gamma g5(Gamma::Algebra::Gamma5); + std::vector gammaList; + int nt = env().getDim(Tp); + + parseGammaString(gammaList); + + result.gamma_snk = gammaList[0].first; + result.gamma_src = gammaList[0].second; + result.corr.resize(nt); + + int Nl = par().Nl; + int N = par().N; + LOG(Message) << "N for A2A cont: " << N << std::endl; + + envGetTmp(std::vector, MF_x); + envGetTmp(std::vector, MF_y); + envGetTmp(std::vector, tmp); + + for (unsigned int t = 0; t < nt; ++t) + { + tmp[t] = TensorRemove(MF_x[t] * MF_y[t] * 0.0); + } + + Gamma gSnk(gammaList[0].first); + Gamma gSrc(gammaList[0].second); + + auto &a2a1_fn = envGet(A2ABase, par().A2A1 + "_class"); + + envGetTmp(std::vector, w1); + envGetTmp(std::vector, v1); + envGetTmp(FermionField, tmpv_5d); + envGetTmp(FermionField, tmpw_5d); + + LOG(Message) << "Finding v and w vectors for N = " << N << std::endl; + for (int i = 0; i < N; i++) + { + a2a1_fn.return_v(i, tmpv_5d, v1[i]); + a2a1_fn.return_w(i, tmpw_5d, w1[i]); + } + LOG(Message) << "Found v and w vectors for N = " << N << std::endl; + for (unsigned int i = 0; i < N; i++) + { + v1[i] = gSnk * v1[i]; + } + int ty; + for (unsigned int i = 0; i < N; i++) + { + for (unsigned int j = 0; j < N; j++) + { + sliceInnerProductVector(MF_x, w1[i], v1[j], Tp); + sliceInnerProductVector(MF_y, w1[j], v1[i], Tp); + for (unsigned int t = 0; t < nt; ++t) + { + for (unsigned int tx = 0; tx < nt; tx++) + { + ty = (tx + t) % nt; + tmp[t] += TensorRemove((MF_x[tx]) * (MF_y[ty])); + } + } + } + if (i % 10 == 0) + { + LOG(Message) << "MF for i = " << i << " of " << N << std::endl; + } + } + double NTinv = 1.0 / static_cast(nt); + for (unsigned int t = 0; t < nt; ++t) + { + result.corr[t] = NTinv * tmp[t]; + } + + saveResult(par().output, "meson", result); +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MContraction_A2AMeson_hpp_ diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp index c98243e6..5c6d9d01 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -186,7 +186,6 @@ void TA2AVectors::execute(void) envGetTmp(FermionField, tmp); envGetTmp(FermionField, tmp2); - double weight = 1.0 / sqrt(Ns*Nc*Nsrc); int N_count = 0; for (unsigned int s = 0; s < Ns; ++s) for (unsigned int c = 0; c < Nc; ++c) @@ -200,13 +199,11 @@ void TA2AVectors::execute(void) if (Ls_ == 1) { PropToFerm(ferm_src, prop_src, s, c); - ferm_src = weight*ferm_src; tmp = ferm_src; } else { PropToFerm(tmp, prop_src, s, c); - tmp = weight*tmp; action.ImportPhysicalFermionSource(tmp, ferm_src); } } @@ -220,7 +217,6 @@ void TA2AVectors::execute(void) else { PropToFerm(ferm_src, prop_src, s, c); - ferm_src = weight*ferm_src; action.ExportPhysicalFermionSolution(ferm_src, tmp); } } diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 0a9f5351..b321f2b7 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -1,119 +1,121 @@ modules_cc =\ - Modules/MContraction/WeakHamiltonianEye.cc \ - Modules/MContraction/Baryon.cc \ - Modules/MContraction/MesonFieldGamma.cc \ - Modules/MContraction/Meson.cc \ - Modules/MContraction/WeakNeutral4ptDisc.cc \ - Modules/MContraction/WeakHamiltonianNonEye.cc \ - Modules/MContraction/WardIdentity.cc \ - Modules/MContraction/DiscLoop.cc \ - Modules/MContraction/Gamma3pt.cc \ - Modules/MFermion/FreeProp.cc \ - Modules/MFermion/GaugeProp.cc \ - Modules/MSource/Point.cc \ - Modules/MSource/Wall.cc \ Modules/MSource/SeqConserved.cc \ Modules/MSource/SeqGamma.cc \ + Modules/MSource/Point.cc \ Modules/MSource/Z2.cc \ + Modules/MSource/Wall.cc \ Modules/MSink/Point.cc \ Modules/MSink/Smear.cc \ - Modules/MSolver/A2AVectors.cc \ - Modules/MSolver/RBPrecCG.cc \ - Modules/MSolver/LocalCoherenceLanczos.cc \ - Modules/MGauge/StoutSmearing.cc \ - Modules/MGauge/Unit.cc \ - Modules/MGauge/UnitEm.cc \ - Modules/MGauge/StochEm.cc \ - Modules/MGauge/Random.cc \ - Modules/MGauge/FundtoHirep.cc \ - Modules/MUtilities/TestSeqGamma.cc \ - Modules/MUtilities/TestSeqConserved.cc \ - Modules/MLoop/NoiseLoop.cc \ - Modules/MScalar/FreeProp.cc \ - Modules/MScalar/VPCounterTerms.cc \ - Modules/MScalar/ChargedProp.cc \ - Modules/MScalar/ScalarVP.cc \ - Modules/MAction/Wilson.cc \ + Modules/MIO/LoadNersc.cc \ + Modules/MIO/LoadEigenPack.cc \ + Modules/MIO/LoadCoarseEigenPack.cc \ + Modules/MIO/LoadBinary.cc \ + Modules/MScalarSUN/TwoPointNPR.cc \ + Modules/MScalarSUN/TrPhi.cc \ + Modules/MScalarSUN/StochFreeField.cc \ + Modules/MScalarSUN/TrMag.cc \ + Modules/MScalarSUN/Div.cc \ + Modules/MScalarSUN/ShiftProbe.cc \ + Modules/MScalarSUN/Grad.cc \ + Modules/MScalarSUN/TwoPoint.cc \ + Modules/MScalarSUN/TimeMomProbe.cc \ + Modules/MScalarSUN/EMT.cc \ + Modules/MScalarSUN/TransProj.cc \ + Modules/MScalarSUN/TrKinetic.cc \ + Modules/MAction/DWF.cc \ Modules/MAction/MobiusDWF.cc \ Modules/MAction/ZMobiusDWF.cc \ - Modules/MAction/WilsonClover.cc \ - Modules/MAction/DWF.cc \ + Modules/MAction/Wilson.cc \ Modules/MAction/ScaledDWF.cc \ - Modules/MScalarSUN/TrPhi.cc \ - Modules/MScalarSUN/Grad.cc \ - Modules/MScalarSUN/TimeMomProbe.cc \ - Modules/MScalarSUN/TrMag.cc \ - Modules/MScalarSUN/TrKinetic.cc \ - Modules/MScalarSUN/EMT.cc \ - Modules/MScalarSUN/ShiftProbe.cc \ - Modules/MScalarSUN/TransProj.cc \ - Modules/MScalarSUN/StochFreeField.cc \ - Modules/MScalarSUN/TwoPoint.cc \ - Modules/MScalarSUN/TwoPointNPR.cc \ - Modules/MScalarSUN/Div.cc \ - Modules/MIO/LoadEigenPack.cc \ - Modules/MIO/LoadBinary.cc \ - Modules/MIO/LoadNersc.cc \ - Modules/MIO/LoadCoarseEigenPack.cc + Modules/MAction/WilsonClover.cc \ + Modules/MContraction/WeakHamiltonianNonEye.cc \ + Modules/MContraction/WardIdentity.cc \ + Modules/MContraction/WeakHamiltonianEye.cc \ + Modules/MContraction/DiscLoop.cc \ + Modules/MContraction/A2AMeson.cc \ + Modules/MContraction/Baryon.cc \ + Modules/MContraction/MesonFieldGamma.cc \ + Modules/MContraction/Gamma3pt.cc \ + Modules/MContraction/WeakNeutral4ptDisc.cc \ + Modules/MContraction/Meson.cc \ + Modules/MScalar/VPCounterTerms.cc \ + Modules/MScalar/ChargedProp.cc \ + Modules/MScalar/FreeProp.cc \ + Modules/MScalar/ScalarVP.cc \ + Modules/MUtilities/TestSeqGamma.cc \ + Modules/MUtilities/TestSeqConserved.cc \ + Modules/MFermion/FreeProp.cc \ + Modules/MFermion/GaugeProp.cc \ + Modules/MSolver/RBPrecCG.cc \ + Modules/MSolver/LocalCoherenceLanczos.cc \ + Modules/MSolver/A2AVectors.cc \ + Modules/MLoop/NoiseLoop.cc \ + Modules/MGauge/Unit.cc \ + Modules/MGauge/Random.cc \ + Modules/MGauge/UnitEm.cc \ + Modules/MGauge/StochEm.cc \ + Modules/MGauge/FundtoHirep.cc \ + Modules/MGauge/StoutSmearing.cc modules_hpp =\ - Modules/MContraction/Baryon.hpp \ - Modules/MContraction/MesonFieldGamma.hpp \ - Modules/MContraction/Meson.hpp \ - Modules/MContraction/WeakHamiltonian.hpp \ - Modules/MContraction/WeakHamiltonianNonEye.hpp \ - Modules/MContraction/DiscLoop.hpp \ - Modules/MContraction/WeakNeutral4ptDisc.hpp \ - Modules/MContraction/Gamma3pt.hpp \ - Modules/MContraction/WardIdentity.hpp \ - Modules/MContraction/WeakHamiltonianEye.hpp \ - Modules/MFermion/FreeProp.hpp \ - Modules/MFermion/GaugeProp.hpp \ + Modules/MSource/SeqConserved.hpp \ Modules/MSource/SeqGamma.hpp \ + Modules/MSource/Z2.hpp \ Modules/MSource/Point.hpp \ Modules/MSource/Wall.hpp \ - Modules/MSource/Z2.hpp \ - Modules/MSource/SeqConserved.hpp \ Modules/MSink/Smear.hpp \ Modules/MSink/Point.hpp \ - Modules/MSolver/A2AVectors.hpp \ - Modules/MSolver/LocalCoherenceLanczos.hpp \ - Modules/MSolver/RBPrecCG.hpp \ - Modules/MGauge/UnitEm.hpp \ - Modules/MGauge/StoutSmearing.hpp \ - Modules/MGauge/Unit.hpp \ - Modules/MGauge/Random.hpp \ - Modules/MGauge/FundtoHirep.hpp \ - Modules/MGauge/StochEm.hpp \ - Modules/MUtilities/TestSeqGamma.hpp \ - Modules/MUtilities/TestSeqConserved.hpp \ - Modules/MLoop/NoiseLoop.hpp \ - Modules/MScalar/FreeProp.hpp \ - Modules/MScalar/VPCounterTerms.hpp \ - Modules/MScalar/ScalarVP.hpp \ - Modules/MScalar/Scalar.hpp \ - Modules/MScalar/ChargedProp.hpp \ - Modules/MAction/DWF.hpp \ - Modules/MAction/MobiusDWF.hpp \ - Modules/MAction/Wilson.hpp \ - Modules/MAction/WilsonClover.hpp \ - Modules/MAction/ZMobiusDWF.hpp \ - Modules/MAction/ScaledDWF.hpp \ - Modules/MScalarSUN/StochFreeField.hpp \ + Modules/MIO/LoadBinary.hpp \ + Modules/MIO/LoadEigenPack.hpp \ + Modules/MIO/LoadCoarseEigenPack.hpp \ + Modules/MIO/LoadNersc.hpp \ + Modules/MScalarSUN/Utils.hpp \ + Modules/MScalarSUN/Grad.hpp \ + Modules/MScalarSUN/TrPhi.hpp \ Modules/MScalarSUN/TwoPointNPR.hpp \ + Modules/MScalarSUN/TwoPoint.hpp \ + Modules/MScalarSUN/TransProj.hpp \ + Modules/MScalarSUN/TrKinetic.hpp \ + Modules/MScalarSUN/StochFreeField.hpp \ Modules/MScalarSUN/ShiftProbe.hpp \ - Modules/MScalarSUN/Div.hpp \ Modules/MScalarSUN/TimeMomProbe.hpp \ + Modules/MScalarSUN/Div.hpp \ Modules/MScalarSUN/TrMag.hpp \ Modules/MScalarSUN/EMT.hpp \ - Modules/MScalarSUN/TwoPoint.hpp \ - Modules/MScalarSUN/TrPhi.hpp \ - Modules/MScalarSUN/Utils.hpp \ - Modules/MScalarSUN/TransProj.hpp \ - Modules/MScalarSUN/Grad.hpp \ - Modules/MScalarSUN/TrKinetic.hpp \ - Modules/MIO/LoadEigenPack.hpp \ - Modules/MIO/LoadNersc.hpp \ - Modules/MIO/LoadCoarseEigenPack.hpp \ - Modules/MIO/LoadBinary.hpp + Modules/MAction/ZMobiusDWF.hpp \ + Modules/MAction/ScaledDWF.hpp \ + Modules/MAction/Wilson.hpp \ + Modules/MAction/WilsonClover.hpp \ + Modules/MAction/MobiusDWF.hpp \ + Modules/MAction/DWF.hpp \ + Modules/MContraction/WeakHamiltonian.hpp \ + Modules/MContraction/DiscLoop.hpp \ + Modules/MContraction/Meson.hpp \ + Modules/MContraction/WardIdentity.hpp \ + Modules/MContraction/WeakHamiltonianEye.hpp \ + Modules/MContraction/Gamma3pt.hpp \ + Modules/MContraction/WeakHamiltonianNonEye.hpp \ + Modules/MContraction/MesonFieldGamma.hpp \ + Modules/MContraction/Baryon.hpp \ + Modules/MContraction/WeakNeutral4ptDisc.hpp \ + Modules/MContraction/A2AMeson.hpp \ + Modules/MScalar/ScalarVP.hpp \ + Modules/MScalar/Scalar.hpp \ + Modules/MScalar/FreeProp.hpp \ + Modules/MScalar/ChargedProp.hpp \ + Modules/MScalar/VPCounterTerms.hpp \ + Modules/MUtilities/TestSeqConserved.hpp \ + Modules/MUtilities/TestSeqGamma.hpp \ + Modules/MFermion/FreeProp.hpp \ + Modules/MFermion/GaugeProp.hpp \ + Modules/MSolver/A2AVectors.hpp \ + Modules/MSolver/RBPrecCG.hpp \ + Modules/MSolver/LocalCoherenceLanczos.hpp \ + Modules/MLoop/NoiseLoop.hpp \ + Modules/MGauge/StoutSmearing.hpp \ + Modules/MGauge/StochEm.hpp \ + Modules/MGauge/FundtoHirep.hpp \ + Modules/MGauge/Unit.hpp \ + Modules/MGauge/Random.hpp \ + Modules/MGauge/UnitEm.hpp From d868a451200659853b30ba8e1af68af3ecc0ae9e Mon Sep 17 00:00:00 2001 From: fionnoh Date: Mon, 16 Jul 2018 16:19:59 +0100 Subject: [PATCH 198/267] Cleaned up some stuff that was erroneously included in a previous "trash" commit. Leaving in the mySliceInnerProdct function for now as it speeds up mesonfield creation quite a lot for 24^3 tests --- .../Modules/MContraction/MesonFieldGamma.hpp | 4 +-- lib/lattice/Lattice_reduction.h | 10 +------ lib/tensors/Tensor_inner.h | 26 ------------------- 3 files changed, 2 insertions(+), 38 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp index 0b81f607..3c73967e 100644 --- a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp +++ b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp @@ -39,8 +39,7 @@ class TMesonFieldGamma : public Module public: GRID_SERIALIZABLE_CLASS_MEMBERS(Result, Gamma::Algebra, gamma, - std::vector>>, MesonField, - ComplexD, last); + std::vector>>, MesonField); }; public: @@ -179,7 +178,6 @@ void TMesonFieldGamma::execute(void) LOG(Message) << "MF for i = " << i << " of " << N << std::endl; } } - result[0].last = MesonField_ij[7]; saveResult(par().output, "meson", result); } diff --git a/lib/lattice/Lattice_reduction.h b/lib/lattice/Lattice_reduction.h index 12bfebed..196d6748 100644 --- a/lib/lattice/Lattice_reduction.h +++ b/lib/lattice/Lattice_reduction.h @@ -41,7 +41,6 @@ template inline RealD norm2(const Lattice &arg){ template inline ComplexD innerProduct(const Lattice &left,const Lattice &right) { - std::cout << GridLogMessage << "Start alloc innerProduct" << std::endl; typedef typename vobj::scalar_type scalar_type; typedef typename vobj::vector_typeD vector_type; GridBase *grid = left._grid; @@ -50,8 +49,6 @@ inline ComplexD innerProduct(const Lattice &left,const Lattice &righ ComplexD inner; Vector sumarray(grid->SumArraySize()*pad); - std::cout << GridLogMessage << "End alloc innerProduct" << std::endl; - std::cout << GridLogMessage << "Start parallel for innerProduct" << std::endl; parallel_for(int thr=0;thrSumArraySize();thr++){ int nwork, mywork, myoff; GridThread::GetWork(left._grid->oSites(),thr,mywork,myoff); @@ -65,18 +62,13 @@ inline ComplexD innerProduct(const Lattice &left,const Lattice &righ ComplexD tmp = Reduce(TensorRemove(vinner)) ; vstream(sumarray[thr*pad],tmp); } - std::cout << GridLogMessage << "End parallel for innerProduct" << std::endl; - std::cout << GridLogMessage << "Start inner sum innerProduct" << std::endl; inner=0.0; for(int i=0;iSumArraySize();i++){ inner = inner+sumarray[i*pad]; } right._grid->GlobalSum(inner); return inner; - std::cout << GridLogMessage << "End inner sum innerProduct" << std::endl; - - std::cout << GridLogMessage << "End innerProduct" << std::endl; } ///////////////////////// @@ -339,7 +331,7 @@ static void localSliceInnerProductVector(std::vector &result, const La for(int n=0;n ret; ret=zero; - // std::cout << GridLogMessage << "innerProduct iVector" << std::endl; for(int c1=0;c1 ret; - // std::cout << GridLogMessage << "innerProduct iScalar" << std::endl; - ret._internal = innerProduct(lhs._internal,rhs._internal); return ret; } - template inline - auto myInnerProduct (const iVector& lhs,const iVector& rhs) -> iScalar - { - typedef decltype(innerProduct(lhs._internal[0],rhs._internal[0])) ret_t; - iScalar ret; - ret=zero; - std::cout << GridLogMessage << "myInnerProduct iVector, N = " << N << std::endl; - for(int c1=0;c1 inline - auto myInnerProduct (const iScalar& lhs,const iScalar& rhs) -> iScalar - { - typedef decltype(innerProduct(lhs._internal,rhs._internal)) ret_t; - iScalar ret; - std::cout << GridLogMessage << "myInnerProduct iScalar" << std::endl; - - ret._internal = myInnerProduct(lhs._internal,rhs._internal); - return ret; - } } #endif From 2c54a536f3fa6a98b86b4602080ee4d23e8affc3 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Thu, 19 Jul 2018 15:56:52 +0100 Subject: [PATCH 199/267] Moved the meson field inner product to its own header file --- extras/Hadrons/AllToAllReduction.hpp | 146 ++++++++++++++++++ extras/Hadrons/AllToAllVectors.hpp | 1 + extras/Hadrons/Makefile.am | 1 + .../Hadrons/Modules/MContraction/A2AMeson.hpp | 4 +- .../Modules/MContraction/MesonFieldGamma.hpp | 110 +++++++++++-- lib/lattice/Lattice_reduction.h | 33 ++-- lib/tensors/Tensor_inner.h | 26 ---- 7 files changed, 257 insertions(+), 64 deletions(-) create mode 100644 extras/Hadrons/AllToAllReduction.hpp diff --git a/extras/Hadrons/AllToAllReduction.hpp b/extras/Hadrons/AllToAllReduction.hpp new file mode 100644 index 00000000..7b2d2c1a --- /dev/null +++ b/extras/Hadrons/AllToAllReduction.hpp @@ -0,0 +1,146 @@ +#ifndef A2A_Reduction_hpp_ +#define A2A_Reduction_hpp_ + +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +//////////////////////////////////////////// +// A2A Meson Field Inner Product +//////////////////////////////////////////// + +template +void sliceInnerProductMesonField(std::vector> &mat, + const std::vector> &lhs, + const std::vector> &rhs, + int orthogdim) +{ + typedef typename FermionField::scalar_type scalar_type; + typedef typename FermionField::vector_type vector_type; + + int Lblock = lhs.size(); + int Rblock = rhs.size(); + + GridBase *grid = lhs[0]._grid; + + const int Nd = grid->_ndimension; + const int Nsimd = grid->Nsimd(); + int Nt = grid->GlobalDimensions()[orthogdim]; + + assert(mat.size() == Lblock * Rblock); + for (int t = 0; t < mat.size(); t++) + { + assert(mat[t].size() == Nt); + } + + int fd = grid->_fdimensions[orthogdim]; + int ld = grid->_ldimensions[orthogdim]; + int rd = grid->_rdimensions[orthogdim]; + + // will locally sum vectors first + // sum across these down to scalars + // splitting the SIMD + std::vector> lvSum(rd * Lblock * Rblock); + for(int r=0;r lsSum(ld * Lblock * Rblock, scalar_type(0.0)); + + int e1 = grid->_slice_nblock[orthogdim]; + int e2 = grid->_slice_block[orthogdim]; + int stride = grid->_slice_stride[orthogdim]; + + // std::cout << GridLogMessage << " Entering first parallel loop " << std::endl; + // Parallelise over t-direction doesn't expose as much parallelism as needed for KNL + parallel_for(int r = 0; r < rd; r++) + { + int so = r * grid->_ostride[orthogdim]; // base offset for start of plane + for (int n = 0; n < e1; n++) + { + for (int b = 0; b < e2; b++) + { + int ss = so + n * stride + b; + for (int i = 0; i < Lblock; i++) + { + auto left = conjugate(lhs[i]._odata[ss]); + for (int j = 0; j < Rblock; j++) + { + int idx = i + Lblock * j + Lblock * Rblock * r; + auto right = rhs[j]._odata[ss]; + vector_type vv = left()(0)(0) * right()(0)(0) + + left()(0)(1) * right()(0)(1) + + left()(0)(2) * right()(0)(2) + + left()(1)(0) * right()(1)(0) + + left()(1)(1) * right()(1)(1) + + left()(1)(2) * right()(1)(2) + + left()(2)(0) * right()(2)(0) + + left()(2)(1) * right()(2)(1) + + left()(2)(2) * right()(2)(2) + + left()(3)(0) * right()(3)(0) + + left()(3)(1) * right()(3)(1) + + left()(3)(2) * right()(3)(2); + + lvSum[idx] = lvSum[idx] + vv; + } + } + } + } + } + + // std::cout << GridLogMessage << " Entering second parallel loop " << std::endl; + // Sum across simd lanes in the plane, breaking out orthog dir. + parallel_for(int rt = 0; rt < rd; rt++) + { + std::vector icoor(Nd); + for (int i = 0; i < Lblock; i++) + { + for (int j = 0; j < Rblock; j++) + { + iScalar temp; + std::vector> extracted(Nsimd); + temp._internal = lvSum[i + Lblock * j + Lblock * Rblock * rt]; + extract(temp, extracted); + for (int idx = 0; idx < Nsimd; idx++) + { + grid->iCoorFromIindex(icoor, idx); + int ldx = rt + icoor[orthogdim] * rd; + int ij_dx = i + Lblock * j + Lblock * Rblock * ldx; + lsSum[ij_dx] = lsSum[ij_dx] + extracted[idx]._internal; + } + } + } + } + + // std::cout << GridLogMessage << " Entering non parallel loop " << std::endl; + for (int t = 0; t < fd; t++) + { + int pt = t/ld; // processor plane + int lt = t%ld; + for (int i = 0; i < Lblock; i++) + { + for (int j = 0; j < Rblock; j++) + { + if (pt == grid->_processor_coor[orthogdim]) + { + int ij_dx = i + Lblock * j + Lblock * Rblock * lt; + mat[i + j * Lblock][t] = lsSum[ij_dx]; + } + else + { + mat[i + j * Lblock][t] = scalar_type(0.0); + } + + } + } + } + // std::cout << GridLogMessage << " Done " << std::endl; + // defer sum over nodes. + return; +} + +END_HADRONS_NAMESPACE + +#endif // A2A_Reduction_hpp_ \ No newline at end of file diff --git a/extras/Hadrons/AllToAllVectors.hpp b/extras/Hadrons/AllToAllVectors.hpp index a514beac..24f5397e 100644 --- a/extras/Hadrons/AllToAllVectors.hpp +++ b/extras/Hadrons/AllToAllVectors.hpp @@ -182,6 +182,7 @@ class A2AModesSchurDiagTwo assert(sol_o.checkerboard == Odd); action.DminusDag(tmp_wout, wout_5d); + action.ExportPhysicalFermionSolution(wout_5d, wout_4d); } diff --git a/extras/Hadrons/Makefile.am b/extras/Hadrons/Makefile.am index 7240be82..abfcf9a8 100644 --- a/extras/Hadrons/Makefile.am +++ b/extras/Hadrons/Makefile.am @@ -15,6 +15,7 @@ libHadrons_adir = $(pkgincludedir)/Hadrons nobase_libHadrons_a_HEADERS = \ $(modules_hpp) \ AllToAllVectors.hpp \ + AllToAllReduction.hpp \ Application.hpp \ EigenPack.hpp \ Environment.hpp \ diff --git a/extras/Hadrons/Modules/MContraction/A2AMeson.hpp b/extras/Hadrons/Modules/MContraction/A2AMeson.hpp index fa1cb82e..45fb4db9 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMeson.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMeson.hpp @@ -174,8 +174,8 @@ void TA2AMeson::execute(void) { for (unsigned int j = 0; j < N; j++) { - sliceInnerProductVector(MF_x, w1[i], v1[j], Tp); - sliceInnerProductVector(MF_y, w1[j], v1[i], Tp); + mySliceInnerProductVector(MF_x, w1[i], v1[j], Tp); + mySliceInnerProductVector(MF_y, w1[j], v1[i], Tp); for (unsigned int t = 0; t < nt; ++t) { for (unsigned int tx = 0; tx < nt; tx++) diff --git a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp index 0b81f607..eefd5e64 100644 --- a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp +++ b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp @@ -5,6 +5,9 @@ #include #include #include +#include +#include +#include BEGIN_HADRONS_NAMESPACE @@ -19,6 +22,7 @@ class MesonFieldPar : Serializable GRID_SERIALIZABLE_CLASS_MEMBERS(MesonFieldPar, int, Nl, int, N, + int, Nblock, std::string, A2A1, std::string, A2A2, std::string, gammas, @@ -40,6 +44,7 @@ class TMesonFieldGamma : public Module GRID_SERIALIZABLE_CLASS_MEMBERS(Result, Gamma::Algebra, gamma, std::vector>>, MesonField, + std::vector>, MesonFiield, ComplexD, last); }; @@ -52,6 +57,9 @@ class TMesonFieldGamma : public Module virtual std::vector getInput(void); virtual std::vector getOutput(void); virtual void parseGammaString(std::vector &gammaList); + virtual void vectorOfWs(std::vector &w, int i, int Nblock, FermionField &tmpw_5d, std::vector &vec_w); + virtual void vectorOfVs(std::vector &v, int j, int Nblock, FermionField &tmpv_5d, std::vector &vec_v); + virtual void gammaMult(std::vector &v, Gamma gamma); // setup virtual void setup(void); // execution @@ -107,19 +115,54 @@ void TMesonFieldGamma::parseGammaString(std::vector &gamm } } +template +void TMesonFieldGamma::vectorOfWs(std::vector &w, int i, int Nblock, FermionField &tmpw_5d, std::vector &vec_w) +{ + for (unsigned int ni = 0; ni < Nblock; ni++) + { + vec_w[ni] = w[i + ni]; + } +} + +template +void TMesonFieldGamma::vectorOfVs(std::vector &v, int j, int Nblock, FermionField &tmpv_5d, std::vector &vec_v) +{ + for (unsigned int nj = 0; nj < Nblock; nj++) + { + vec_v[nj] = v[j+nj]; + } +} + +template +void TMesonFieldGamma::gammaMult(std::vector &v, Gamma gamma) +{ + int Nblock = v.size(); + for (unsigned int nj = 0; nj < Nblock; nj++) + { + v[nj] = gamma * v[nj]; + } +} + // setup /////////////////////////////////////////////////////////////////////// template void TMesonFieldGamma::setup(void) { int nt = env().getDim(Tp); int N = par().N; + int Nblock = par().Nblock; int Ls_ = env().getObjectLs(par().A2A1 + "_class"); - envTmpLat(FermionField, "w", Ls_); - envTmpLat(FermionField, "v", Ls_); envTmpLat(FermionField, "tmpv_5d", Ls_); envTmpLat(FermionField, "tmpw_5d", Ls_); + + envTmp(std::vector, "w", 1, N, FermionField(env().getGrid(1))); + envTmp(std::vector, "v", 1, N, FermionField(env().getGrid(1))); + + envTmp(Eigen::MatrixXcd, "MF", 1, Eigen::MatrixXcd::Zero(nt, N * N)); + + envTmp(std::vector, "w_block", 1, Nblock, FermionField(env().getGrid(1))); + envTmp(std::vector, "v_block", 1, Nblock, FermionField(env().getGrid(1))); } // execution /////////////////////////////////////////////////////////////////// @@ -130,6 +173,7 @@ void TMesonFieldGamma::execute(void) int N = par().N; int nt = env().getDim(Tp); + int Nblock = par().Nblock; std::vector result; std::vector gammaResultList; @@ -145,33 +189,54 @@ void TMesonFieldGamma::execute(void) { result[i].gamma = gammaResultList[i]; result[i].MesonField.resize(N, std::vector>(N, std::vector(nt))); + result[i].MesonFiield.resize(N, std::vector<(nt)); Gamma gamma(gammaResultList[i]); gammaList[i] = gamma; } - std::vector MesonField_ij; - MesonField_ij.resize(nt); - auto &a2a1 = envGet(A2ABase, par().A2A1 + "_class"); auto &a2a2 = envGet(A2ABase, par().A2A2 + "_class"); - envGetTmp(FermionField, w); - envGetTmp(FermionField, v); envGetTmp(FermionField, tmpv_5d); envGetTmp(FermionField, tmpw_5d); - for (unsigned int i = 0; i < N; i++) + envGetTmp(std::vector, v); + envGetTmp(std::vector, w); + LOG(Message) << "Finding v and w vectors for N = " << N << std::endl; + for (int i = 0; i < N; i++) { - a2a1.return_w(i, tmpw_5d, w); - for (unsigned int j = 0; j < N; j++) + a2a2.return_v(i, tmpv_5d, v[i]); + a2a1.return_w(i, tmpw_5d, w[i]); + } + LOG(Message) << "Found v and w vectors for N = " << N << std::endl; + + std::vector> MesonField_ij; + LOG(Message) << "Before blocked MFs, Nblock = " << Nblock << std::endl; + envGetTmp(std::vector, v_block); + envGetTmp(std::vector, w_block); + MesonField_ij.resize(Nblock * Nblock, std::vector(nt)); + + envGetTmp(Eigen::MatrixXcd, MF); + + LOG(Message) << "Before blocked MFs, Nblock = " << Nblock << std::endl; + for (unsigned int i = 0; i < N; i += Nblock) + { + vectorOfWs(w, i, Nblock, tmpw_5d, w_block); + for (unsigned int j = 0; j < N; j += Nblock) { - a2a2.return_v(j, tmpv_5d, v); + vectorOfVs(v, j, Nblock, tmpv_5d, v_block); for (unsigned int k = 0; k < result.size(); k++) { - v = gammaList[k]*v; - sliceInnerProductVector(MesonField_ij, w, v, Tp); - result[k].MesonField[i][j] = MesonField_ij; + gammaMult(v_block, gammaList[k]); + sliceInnerProductMesonField(MesonField_ij, w_block, v_block, Tp); + for (unsigned int nj = 0; nj < Nblock; nj++) + { + for (unsigned int ni = 0; ni < Nblock; ni++) + { + MF.col((i + ni) + (j + nj) * N) = Eigen::VectorXcd::Map(&MesonField_ij[nj * Nblock + ni][0], MesonField_ij[nj * Nblock + ni].size()); + } + } } } if (i % 10 == 0) @@ -179,7 +244,22 @@ void TMesonFieldGamma::execute(void) LOG(Message) << "MF for i = " << i << " of " << N << std::endl; } } - result[0].last = MesonField_ij[7]; + LOG(Message) << "Before Global sum, Nblock = " << Nblock << std::endl; + v_block[0]._grid->GlobalSumVector(MF.data(), MF.size()); + LOG(Message) << "After Global sum, Nblock = " << Nblock << std::endl; + for (unsigned int i = 0; i < N; i++) + { + for (unsigned int j = 0; j < N; j++) + { + for (unsigned int k = 0; k < result.size(); k++) + { + for (unsigned int t = 0; t < nt; t++) + { + result[k].MesonField[i][j][t] = MF.col(i + N * j)[t]; + } + } + } + } saveResult(par().output, "meson", result); } diff --git a/lib/lattice/Lattice_reduction.h b/lib/lattice/Lattice_reduction.h index 12bfebed..b8d13b47 100644 --- a/lib/lattice/Lattice_reduction.h +++ b/lib/lattice/Lattice_reduction.h @@ -41,7 +41,6 @@ template inline RealD norm2(const Lattice &arg){ template inline ComplexD innerProduct(const Lattice &left,const Lattice &right) { - std::cout << GridLogMessage << "Start alloc innerProduct" << std::endl; typedef typename vobj::scalar_type scalar_type; typedef typename vobj::vector_typeD vector_type; GridBase *grid = left._grid; @@ -50,8 +49,6 @@ inline ComplexD innerProduct(const Lattice &left,const Lattice &righ ComplexD inner; Vector sumarray(grid->SumArraySize()*pad); - std::cout << GridLogMessage << "End alloc innerProduct" << std::endl; - std::cout << GridLogMessage << "Start parallel for innerProduct" << std::endl; parallel_for(int thr=0;thrSumArraySize();thr++){ int nwork, mywork, myoff; GridThread::GetWork(left._grid->oSites(),thr,mywork,myoff); @@ -65,18 +62,12 @@ inline ComplexD innerProduct(const Lattice &left,const Lattice &righ ComplexD tmp = Reduce(TensorRemove(vinner)) ; vstream(sumarray[thr*pad],tmp); } - std::cout << GridLogMessage << "End parallel for innerProduct" << std::endl; - - std::cout << GridLogMessage << "Start inner sum innerProduct" << std::endl; inner=0.0; for(int i=0;iSumArraySize();i++){ inner = inner+sumarray[i*pad]; } right._grid->GlobalSum(inner); return inner; - std::cout << GridLogMessage << "End inner sum innerProduct" << std::endl; - - std::cout << GridLogMessage << "End innerProduct" << std::endl; } ///////////////////////// @@ -285,7 +276,7 @@ template inline void sliceSum(const Lattice &Data,std::vector< template static void mySliceInnerProductVector( std::vector & result, const Lattice &lhs,const Lattice &rhs,int orthogdim) { - std::cout << GridLogMessage << "Start mySsliceInnerProductVector" << std::endl; + std::cout << GridLogMessage << "Start mySliceInnerProductVector" << std::endl; typedef typename vobj::scalar_type scalar_type; std::vector lsSum; @@ -313,12 +304,12 @@ static void localSliceInnerProductVector(std::vector &result, const La int fd=grid->_fdimensions[orthogdim]; int ld=grid->_ldimensions[orthogdim]; int rd=grid->_rdimensions[orthogdim]; - std::cout << GridLogMessage << "Start alloc" << std::endl; + // std::cout << GridLogMessage << "Start alloc" << std::endl; std::vector > lvSum(rd); // will locally sum vectors first lsSum.resize(ld,scalar_type(0.0)); // sum across these down to scalars std::vector> extracted(Nsimd); // splitting the SIMD - std::cout << GridLogMessage << "End alloc" << std::endl; + // std::cout << GridLogMessage << "End alloc" << std::endl; result.resize(fd); // And then global sum to return the same vector to every node for IO to file for(int r=0;r &result, const La int e1= grid->_slice_nblock[orthogdim]; int e2= grid->_slice_block [orthogdim]; int stride=grid->_slice_stride[orthogdim]; - std::cout << GridLogMessage << "End prep" << std::endl; - std::cout << GridLogMessage << "Start parallel inner product, _rd = " << rd << std::endl; + // std::cout << GridLogMessage << "End prep" << std::endl; + // std::cout << GridLogMessage << "Start parallel inner product, _rd = " << rd << std::endl; vector_type vv; parallel_for(int r=0;r &result, const La for(int n=0;n icoor(Nd); @@ -364,7 +355,7 @@ static void localSliceInnerProductVector(std::vector &result, const La } } - std::cout << GridLogMessage << "End sum over simd lanes" << std::endl; + // std::cout << GridLogMessage << "End sum over simd lanes" << std::endl; } template static void globalSliceInnerProductVector(std::vector &result, const Lattice &lhs, std::vector &lsSum, int orthogdim) @@ -376,7 +367,7 @@ static void globalSliceInnerProductVector(std::vector &result, const L // sum over nodes. std::vector gsum; gsum.resize(fd, scalar_type(0.0)); - std::cout << GridLogMessage << "Start of gsum[t] creation:" << std::endl; + // std::cout << GridLogMessage << "Start of gsum[t] creation:" << std::endl; for(int t=0;t &result, const L gsum[t]=lsSum[lt]; } } - std::cout << GridLogMessage << "End of gsum[t] creation:" << std::endl; - std::cout << GridLogMessage << "Start of GlobalSumVector:" << std::endl; + // std::cout << GridLogMessage << "End of gsum[t] creation:" << std::endl; + // std::cout << GridLogMessage << "Start of GlobalSumVector:" << std::endl; grid->GlobalSumVector(&gsum[0], fd); - std::cout << GridLogMessage << "End of GlobalSumVector:" << std::endl; + // std::cout << GridLogMessage << "End of GlobalSumVector:" << std::endl; result = gsum; } diff --git a/lib/tensors/Tensor_inner.h b/lib/tensors/Tensor_inner.h index b7a8417d..46185652 100644 --- a/lib/tensors/Tensor_inner.h +++ b/lib/tensors/Tensor_inner.h @@ -106,7 +106,6 @@ inline vRealD innerProductD(const vRealF &l,const vRealF &r){ typedef decltype(innerProduct(lhs._internal[0],rhs._internal[0])) ret_t; iScalar ret; ret=zero; - // std::cout << GridLogMessage << "innerProduct iVector" << std::endl; for(int c1=0;c1 ret; - // std::cout << GridLogMessage << "innerProduct iScalar" << std::endl; - ret._internal = innerProduct(lhs._internal,rhs._internal); return ret; } - template inline - auto myInnerProduct (const iVector& lhs,const iVector& rhs) -> iScalar - { - typedef decltype(innerProduct(lhs._internal[0],rhs._internal[0])) ret_t; - iScalar ret; - ret=zero; - std::cout << GridLogMessage << "myInnerProduct iVector, N = " << N << std::endl; - for(int c1=0;c1 inline - auto myInnerProduct (const iScalar& lhs,const iScalar& rhs) -> iScalar - { - typedef decltype(innerProduct(lhs._internal,rhs._internal)) ret_t; - iScalar ret; - std::cout << GridLogMessage << "myInnerProduct iScalar" << std::endl; - - ret._internal = myInnerProduct(lhs._internal,rhs._internal); - return ret; - } } #endif From 7dfd3cdae8abcba909f6cd13f66d2edb6c970454 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Fri, 20 Jul 2018 15:45:43 +0100 Subject: [PATCH 200/267] Inclusion of ExportPhysicalFermionSource that fixes a bug in the low mode w vectors --- extras/Hadrons/AllToAllVectors.hpp | 2 +- lib/qcd/action/fermion/CayleyFermion5D.cc | 12 ++++++++++++ lib/qcd/action/fermion/CayleyFermion5D.h | 1 + lib/qcd/action/fermion/FermionOperator.h | 4 ++++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/extras/Hadrons/AllToAllVectors.hpp b/extras/Hadrons/AllToAllVectors.hpp index 24f5397e..34058911 100644 --- a/extras/Hadrons/AllToAllVectors.hpp +++ b/extras/Hadrons/AllToAllVectors.hpp @@ -183,7 +183,7 @@ class A2AModesSchurDiagTwo action.DminusDag(tmp_wout, wout_5d); - action.ExportPhysicalFermionSolution(wout_5d, wout_4d); + action.ExportPhysicalFermionSource(wout_5d, wout_4d); } void high_mode_v(Matrix &action, Solver &solver, const Field &source, Field &vout_5d, Field &vout_4d) diff --git a/lib/qcd/action/fermion/CayleyFermion5D.cc b/lib/qcd/action/fermion/CayleyFermion5D.cc index e3b77390..289e7aae 100644 --- a/lib/qcd/action/fermion/CayleyFermion5D.cc +++ b/lib/qcd/action/fermion/CayleyFermion5D.cc @@ -68,6 +68,18 @@ void CayleyFermion5D::ExportPhysicalFermionSolution(const FermionField &so ExtractSlice(exported4d, tmp, 0, 0); } template +void CayleyFermion5D::ExportPhysicalFermionSource(const FermionField &solution5d,FermionField &exported4d) +{ + int Ls = this->Ls; + FermionField tmp(this->FermionGrid()); + tmp = solution5d; + conformable(solution5d._grid,this->FermionGrid()); + conformable(exported4d._grid,this->GaugeGrid()); + axpby_ssp_pplus (tmp, 0., solution5d, 1., solution5d, 0, 0); + axpby_ssp_pminus(tmp, 1., tmp , 1., solution5d, 0, Ls-1); + ExtractSlice(exported4d, tmp, 0, 0); +} +template void CayleyFermion5D::ImportPhysicalFermionSource(const FermionField &input4d,FermionField &imported5d) { int Ls = this->Ls; diff --git a/lib/qcd/action/fermion/CayleyFermion5D.h b/lib/qcd/action/fermion/CayleyFermion5D.h index b370b09d..897833c7 100644 --- a/lib/qcd/action/fermion/CayleyFermion5D.h +++ b/lib/qcd/action/fermion/CayleyFermion5D.h @@ -89,6 +89,7 @@ namespace Grid { virtual void Dminus(const FermionField &psi, FermionField &chi); virtual void DminusDag(const FermionField &psi, FermionField &chi); virtual void ExportPhysicalFermionSolution(const FermionField &solution5d,FermionField &exported4d); + virtual void ExportPhysicalFermionSource(const FermionField &solution5d, FermionField &exported4d); virtual void ImportPhysicalFermionSource(const FermionField &input4d,FermionField &imported5d); ///////////////////////////////////////////////////// diff --git a/lib/qcd/action/fermion/FermionOperator.h b/lib/qcd/action/fermion/FermionOperator.h index 77fdbec5..bca6f4dc 100644 --- a/lib/qcd/action/fermion/FermionOperator.h +++ b/lib/qcd/action/fermion/FermionOperator.h @@ -166,6 +166,10 @@ namespace Grid { { exported=solution; }; + virtual void ExportPhysicalFermionSource(const FermionField &solution, FermionField &exported) + { + exported = solution; + }; }; } From b78074b6a0abe5976c36db340fdacc6cde760acb Mon Sep 17 00:00:00 2001 From: fionnoh Date: Fri, 20 Jul 2018 16:55:24 +0100 Subject: [PATCH 201/267] Removed a Dminus from high mode v and removed duplication pf D_oo code --- extras/Hadrons/AllToAllVectors.hpp | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/extras/Hadrons/AllToAllVectors.hpp b/extras/Hadrons/AllToAllVectors.hpp index 34058911..b7209e83 100644 --- a/extras/Hadrons/AllToAllVectors.hpp +++ b/extras/Hadrons/AllToAllVectors.hpp @@ -88,18 +88,6 @@ class A2AModesSchurDiagTwo } } - void Doo(Matrix &action, const Field &in, Field &out) - { - Field tmp(in._grid); - - action.MooeeInv(in, out); - action.Meooe(out, tmp); - action.MooeeInv(tmp, out); - action.Meooe(out, tmp); - - axpy(out,-1.0, tmp, in); - } - void low_mode_v(Matrix &action, const Field &evec, const RealD &eval, Field &vout_5d, Field &vout_4d) { GridBase *grid = action.RedBlackGrid(); @@ -162,7 +150,7 @@ class A2AModesSchurDiagTwo ///////////////////////////////////////////////////// // w_ie = - MeeInvDag MoeDag Doo evec_i ///////////////////////////////////////////////////// - Doo(action, src_o, tmp); + _HermOpEO.Mpc(src_o, tmp); assert(tmp.checkerboard == Odd); action.MeooeDag(tmp, sol_e); assert(sol_e.checkerboard == Even); @@ -173,7 +161,7 @@ class A2AModesSchurDiagTwo ///////////////////////////////////////////////////// // w_io = Doo evec_i ///////////////////////////////////////////////////// - Doo(action, src_o, sol_o); + _HermOpEO.Mpc(src_o, sol_o); assert(sol_o.checkerboard == Odd); setCheckerboard(tmp_wout, sol_e); @@ -189,9 +177,6 @@ class A2AModesSchurDiagTwo void high_mode_v(Matrix &action, Solver &solver, const Field &source, Field &vout_5d, Field &vout_4d) { GridBase *fgrid = action.Grid(); - Field tmp(fgrid); - - action.Dminus(source, tmp); solver(vout_5d, source); // Note: solver is solver(out, in) action.ExportPhysicalFermionSolution(vout_5d, vout_4d); } From 04d86fe9f313cd505936ce6aee35ac3d26291d03 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Fri, 20 Jul 2018 21:38:19 +0100 Subject: [PATCH 202/267] Removed overly verbose print statement --- lib/lattice/Lattice_reduction.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/lattice/Lattice_reduction.h b/lib/lattice/Lattice_reduction.h index 40d1526d..41351c98 100644 --- a/lib/lattice/Lattice_reduction.h +++ b/lib/lattice/Lattice_reduction.h @@ -277,19 +277,19 @@ template inline void sliceSum(const Lattice &Data,std::vector< template static void mySliceInnerProductVector( std::vector & result, const Lattice &lhs,const Lattice &rhs,int orthogdim) { - std::cout << GridLogMessage << "Start mySliceInnerProductVector" << std::endl; + // std::cout << GridLogMessage << "Start mySliceInnerProductVector" << std::endl; typedef typename vobj::scalar_type scalar_type; std::vector lsSum; localSliceInnerProductVector(result, lhs, rhs, lsSum, orthogdim); globalSliceInnerProductVector(result, lhs, lsSum, orthogdim); - std::cout << GridLogMessage << "End mySliceInnerProductVector" << std::endl; + // std::cout << GridLogMessage << "End mySliceInnerProductVector" << std::endl; } template static void localSliceInnerProductVector(std::vector &result, const Lattice &lhs, const Lattice &rhs, std::vector &lsSum, int orthogdim) { - std::cout << GridLogMessage << "Start prep" << std::endl; + // std::cout << GridLogMessage << "Start prep" << std::endl; typedef typename vobj::vector_type vector_type; typedef typename vobj::scalar_type scalar_type; GridBase *grid = lhs._grid; From 94c71980010885522c526abb8958220096d062e4 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Fri, 20 Jul 2018 23:08:22 +0100 Subject: [PATCH 203/267] Added ZFIMPL to A2AMeson contraction --- extras/Hadrons/Modules/MContraction/A2AMeson.cc | 3 ++- extras/Hadrons/Modules/MContraction/A2AMeson.hpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMeson.cc b/extras/Hadrons/Modules/MContraction/A2AMeson.cc index 3ce5fe83..5e5c122b 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMeson.cc +++ b/extras/Hadrons/Modules/MContraction/A2AMeson.cc @@ -4,4 +4,5 @@ using namespace Grid; using namespace Hadrons; using namespace MContraction; -template class Grid::Hadrons::MContraction::TA2AMeson; \ No newline at end of file +template class Grid::Hadrons::MContraction::TA2AMeson; +template class Grid::Hadrons::MContraction::TA2AMeson; \ No newline at end of file diff --git a/extras/Hadrons/Modules/MContraction/A2AMeson.hpp b/extras/Hadrons/Modules/MContraction/A2AMeson.hpp index 45fb4db9..f8d7f74c 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMeson.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMeson.hpp @@ -61,6 +61,7 @@ class TA2AMeson : public Module }; MODULE_REGISTER(A2AMeson, ARG(TA2AMeson), MContraction); +MODULE_REGISTER(ZA2AMeson, ARG(TA2AMeson), MContraction); /****************************************************************************** * TA2AMeson implementation * From c995788259e63ad3955f1c9e7b0336180149cf95 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Sat, 21 Jul 2018 00:08:11 +0100 Subject: [PATCH 204/267] Added ImportUnphysicalFermion and included appropriate logic for 5d w vectors in A2A code --- extras/Hadrons/AllToAllVectors.hpp | 8 ++++---- extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 6 +++++- lib/qcd/action/fermion/CayleyFermion5D.cc | 15 +++++++++++++++ lib/qcd/action/fermion/CayleyFermion5D.h | 1 + lib/qcd/action/fermion/FermionOperator.h | 8 ++++++-- 5 files changed, 31 insertions(+), 7 deletions(-) diff --git a/extras/Hadrons/AllToAllVectors.hpp b/extras/Hadrons/AllToAllVectors.hpp index b7209e83..7d9aa62e 100644 --- a/extras/Hadrons/AllToAllVectors.hpp +++ b/extras/Hadrons/AllToAllVectors.hpp @@ -51,14 +51,14 @@ class A2AModesSchurDiagTwo v_high_4d.resize(size_4d, grid_4d); } - void high_modes(Field &source_5d, Field &source_4d, int i) + void high_modes(Field &source_5d, Field &w_source_5d, Field &source_4d, int i) { int i5d; LOG(Message) << "A2A high modes for i = " << i << std::endl; i5d = 0; if (return_5d) i5d = i; this->high_mode_v(action, solver, source_5d, v_high_5d[i5d], v_high_4d[i]); - this->high_mode_w(source_5d, source_4d, w_high_5d[i5d], w_high_4d[i]); + this->high_mode_w(w_source_5d, source_4d, w_high_5d[i5d], w_high_4d[i]); } void return_v(int i, Field &vout_5d, Field &vout_4d) @@ -181,9 +181,9 @@ class A2AModesSchurDiagTwo action.ExportPhysicalFermionSolution(vout_5d, vout_4d); } - void high_mode_w(const Field &source_5d, const Field &source_4d, Field &wout_5d, Field &wout_4d) + void high_mode_w(const Field &w_source_5d, const Field &source_4d, Field &wout_5d, Field &wout_4d) { - wout_5d = source_5d; + wout_5d = w_source_5d; wout_4d = source_4d; } }; diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp index 5c6d9d01..863ee04c 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -130,6 +130,7 @@ void TA2AVectors::setup(void) auto &action = envGet(FMat, par().action); envTmpLat(FermionField, "ferm_src", Ls_); + envTmpLat(FermionField, "unphys_ferm", Ls_); envTmpLat(FermionField, "tmp"); envTmpLat(FermionField, "tmp2"); @@ -183,6 +184,7 @@ void TA2AVectors::execute(void) int Nsrc = par().sources.size(); envGetTmp(FermionField, ferm_src); + envGetTmp(FermionField, unphys_ferm); envGetTmp(FermionField, tmp); envGetTmp(FermionField, tmp2); @@ -205,6 +207,7 @@ void TA2AVectors::execute(void) { PropToFerm(tmp, prop_src, s, c); action.ImportPhysicalFermionSource(tmp, ferm_src); + action.ImportUnphysicalFermion(tmp, unphys_ferm); } } // source conversion for 5D sources @@ -218,10 +221,11 @@ void TA2AVectors::execute(void) { PropToFerm(ferm_src, prop_src, s, c); action.ExportPhysicalFermionSolution(ferm_src, tmp); + unphys_ferm = ferm_src; } } LOG(Message) << "a2areturn.high_modes Ncount = " << N_count << std::endl; - a2areturn.high_modes(ferm_src, tmp, N_count); + a2areturn.high_modes(ferm_src, unphys_ferm, tmp, N_count); N_count++; } } diff --git a/lib/qcd/action/fermion/CayleyFermion5D.cc b/lib/qcd/action/fermion/CayleyFermion5D.cc index 289e7aae..d4ed5a7c 100644 --- a/lib/qcd/action/fermion/CayleyFermion5D.cc +++ b/lib/qcd/action/fermion/CayleyFermion5D.cc @@ -79,6 +79,21 @@ void CayleyFermion5D::ExportPhysicalFermionSource(const FermionField &solu axpby_ssp_pminus(tmp, 1., tmp , 1., solution5d, 0, Ls-1); ExtractSlice(exported4d, tmp, 0, 0); } +template +void CayleyFermion5D::ImportUnphysicalFermion(const FermionField &input4d,FermionField &imported5d) +{ + int Ls = this->Ls; + FermionField tmp(this->FermionGrid()); + conformable(imported5d._grid,this->FermionGrid()); + conformable(input4d._grid ,this->GaugeGrid()); + tmp = zero; + InsertSlice(input4d, tmp, 0 , 0); + InsertSlice(input4d, tmp, Ls-1, 0); + axpby_ssp_pplus (tmp, 0., tmp, 1., tmp, 0, 0); + axpby_ssp_pminus(tmp, 0., tmp, 1., tmp, Ls-1, Ls-1); + imported5d=tmp; +} + template void CayleyFermion5D::ImportPhysicalFermionSource(const FermionField &input4d,FermionField &imported5d) { diff --git a/lib/qcd/action/fermion/CayleyFermion5D.h b/lib/qcd/action/fermion/CayleyFermion5D.h index 897833c7..3bf2a8b6 100644 --- a/lib/qcd/action/fermion/CayleyFermion5D.h +++ b/lib/qcd/action/fermion/CayleyFermion5D.h @@ -91,6 +91,7 @@ namespace Grid { virtual void ExportPhysicalFermionSolution(const FermionField &solution5d,FermionField &exported4d); virtual void ExportPhysicalFermionSource(const FermionField &solution5d, FermionField &exported4d); virtual void ImportPhysicalFermionSource(const FermionField &input4d,FermionField &imported5d); + virtual void ImportUnphysicalFermion(const FermionField &solution5d, FermionField &exported4d); ///////////////////////////////////////////////////// // Instantiate different versions depending on Impl diff --git a/lib/qcd/action/fermion/FermionOperator.h b/lib/qcd/action/fermion/FermionOperator.h index bca6f4dc..dc1ab924 100644 --- a/lib/qcd/action/fermion/FermionOperator.h +++ b/lib/qcd/action/fermion/FermionOperator.h @@ -162,13 +162,17 @@ namespace Grid { { imported = input; }; + virtual void ImportUnphysicalFermion(const FermionField &input,FermionField &imported) + { + imported=input; + }; virtual void ExportPhysicalFermionSolution(const FermionField &solution,FermionField &exported) { exported=solution; }; - virtual void ExportPhysicalFermionSource(const FermionField &solution, FermionField &exported) + virtual void ExportPhysicalFermionSource(const FermionField &solution,FermionField &exported) { - exported = solution; + exported=solution; }; }; From 34e9d3f0ca8afe88866f27ddc512991e2958f7d4 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Sun, 22 Jul 2018 14:40:31 +0100 Subject: [PATCH 205/267] Moved the creation and resizing of the v and w high modes from the A2A class to the A2A module and made them an output of the module. This means that they have to be inputs of the contration modules and they will freed from memory if they are no longer needed. --- extras/Hadrons/AllToAllVectors.hpp | 24 ++++----------- .../Hadrons/Modules/MContraction/A2AMeson.hpp | 6 ++-- .../Modules/MContraction/MesonFieldGamma.hpp | 2 ++ extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 29 +++++++++++++++---- 4 files changed, 34 insertions(+), 27 deletions(-) diff --git a/extras/Hadrons/AllToAllVectors.hpp b/extras/Hadrons/AllToAllVectors.hpp index 7d9aa62e..df60b964 100644 --- a/extras/Hadrons/AllToAllVectors.hpp +++ b/extras/Hadrons/AllToAllVectors.hpp @@ -19,37 +19,25 @@ class A2AModesSchurDiagTwo const std::vector *eval; Matrix &action; Solver &solver; + std::vector w_high_5d, v_high_5d, w_high_4d, v_high_4d; const int Nl, Nh; const bool return_5d; - std::vector w_high_5d, v_high_5d, w_high_4d, v_high_4d; public: A2AModesSchurDiagTwo(const std::vector *_evec, const std::vector *_eval, Matrix &_action, Solver &_solver, + std::vector _w_high_5d, std::vector _v_high_5d, + std::vector _w_high_4d, std::vector _v_high_4d, const int _Nl, const int _Nh, const bool _return_5d) : evec(_evec), eval(_eval), action(_action), solver(_solver), + w_high_5d(_w_high_5d), v_high_5d(_v_high_5d), + w_high_4d(_w_high_4d), v_high_4d(_v_high_4d), Nl(_Nl), Nh(_Nh), - return_5d(_return_5d) - { - init_resize(1, Nh); - if (return_5d) init_resize(Nh, Nh); - }; - - void init_resize(const size_t size_5d, const size_t size_4d) - { - GridBase *grid_5d = action.Grid(); - GridBase *grid_4d = action.GaugeGrid(); - - w_high_5d.resize(size_5d, grid_5d); - v_high_5d.resize(size_5d, grid_5d); - - w_high_4d.resize(size_4d, grid_4d); - v_high_4d.resize(size_4d, grid_4d); - } + return_5d(_return_5d){}; void high_modes(Field &source_5d, Field &w_source_5d, Field &source_4d, int i) { diff --git a/extras/Hadrons/Modules/MContraction/A2AMeson.hpp b/extras/Hadrons/Modules/MContraction/A2AMeson.hpp index f8d7f74c..a13336ef 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMeson.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMeson.hpp @@ -77,9 +77,9 @@ TA2AMeson::TA2AMeson(const std::string name) template std::vector TA2AMeson::getInput(void) { - std::vector in = {par().A2A1, par().A2A2}; - in.push_back(par().A2A1 + "_class"); - in.push_back(par().A2A2 + "_class"); + std::vector in = {par().A2A1 + "_class", par().A2A2 + "_class"}; + in.push_back(par().A2A1 + "_w_high_4d"); + in.push_back(par().A2A2 + "_v_high_4d"); return in; } diff --git a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp index c7676904..6128534c 100644 --- a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp +++ b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp @@ -82,6 +82,8 @@ template std::vector TMesonFieldGamma::getInput(void) { std::vector in = {par().A2A1 + "_class", par().A2A2 + "_class"}; + in.push_back(par().A2A1 + "_w_high_4d"); + in.push_back(par().A2A2 + "_v_high_4d"); return in; } diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp index 863ee04c..9481f268 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -107,7 +107,9 @@ std::vector TA2AVectors::getReference(void) template std::vector TA2AVectors::getOutput(void) { - std::vector out = {getName(), className_}; + std::vector out = {getName(), className_, + getName() + "_w_high_5d", getName() + "_v_high_5d", + getName() + "_w_high_4d", getName() + "_v_high_4d"}; return out; } @@ -120,17 +122,17 @@ void TA2AVectors::setup(void) int Nl = par().Nl; int Nh = N - Nl; bool return_5d = par().return_5d; - int Ls, Ls_; + int Ls; std::string sub_string = ""; if (Nl > 0) sub_string = "_subtract"; auto &solver = envGet(Solver, par().solver + sub_string); - Ls_ = env().getObjectLs(par().solver + sub_string); + Ls = env().getObjectLs(par().solver + sub_string); auto &action = envGet(FMat, par().action); - envTmpLat(FermionField, "ferm_src", Ls_); - envTmpLat(FermionField, "unphys_ferm", Ls_); + envTmpLat(FermionField, "ferm_src", Ls); + envTmpLat(FermionField, "unphys_ferm", Ls); envTmpLat(FermionField, "tmp"); envTmpLat(FermionField, "tmp2"); @@ -154,10 +156,25 @@ void TA2AVectors::setup(void) LOG(Message) << "Creating a2a vectors " << getName() << " using " << Nh << " high modes only." << std::endl; } - envCreate(A2ABase, className_, Ls_, + + int size_5d = 1; + if (return_5d) size_5d = Nh; + envCreate(std::vector, getName() + "_w_high_5d", Ls, size_5d, FermionField(env().getGrid(Ls))); + envCreate(std::vector, getName() + "_v_high_5d", Ls, size_5d, FermionField(env().getGrid(Ls))); + envCreate(std::vector, getName() + "_w_high_4d", 1, Nh, FermionField(env().getGrid(1))); + envCreate(std::vector, getName() + "_v_high_4d", 1, Nh, FermionField(env().getGrid(1))); + + auto &w_high_5d = envGet(std::vector, getName() + "_w_high_5d"); + auto &v_high_5d = envGet(std::vector, getName() + "_v_high_5d"); + auto &w_high_4d = envGet(std::vector, getName() + "_w_high_4d"); + auto &v_high_4d = envGet(std::vector, getName() + "_v_high_4d"); + + envCreate(A2ABase, className_, Ls, evec, eval, action, solver, + w_high_5d, v_high_5d, + w_high_4d, v_high_4d, Nl, Nh, return_5d); } From 24128ff109938b26784c9257449a306b072eb6f3 Mon Sep 17 00:00:00 2001 From: fionnoh Date: Mon, 23 Jul 2018 15:51:37 +0100 Subject: [PATCH 206/267] Changes needed for MF benchmark to work with comms correctly --- benchmarks/Benchmark_meson_field.cc | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/benchmarks/Benchmark_meson_field.cc b/benchmarks/Benchmark_meson_field.cc index 683dfd42..442768d5 100644 --- a/benchmarks/Benchmark_meson_field.cc +++ b/benchmarks/Benchmark_meson_field.cc @@ -66,7 +66,10 @@ void sliceInnerProductMesonField(std::vector< std::vector > &mat, // will locally sum vectors first // sum across these down to scalars // splitting the SIMD - std::vector > lvSum(rd*Lblock*Rblock); + std::vector > lvSum(rd*Lblock*Rblock); + for (int r = 0; r < rd * Lblock * Rblock; r++){ + lvSum[r] = zero; + } std::vector lsSum(ld*Lblock*Rblock,scalar_type(0.0)); int e1= grid->_slice_nblock[orthogdim]; @@ -140,11 +143,19 @@ void sliceInnerProductMesonField(std::vector< std::vector > &mat, } std::cout << GridLogMessage << " Entering non parallel loop "<_processor_coor[orthogdim]){ + int ij_dx = i + Lblock * j + Lblock * Rblock * lt; + mat[i+j*Lblock][t] = lsSum[ij_dx]; + } + else{ + mat[i+j*Lblock][t] = scalar_type(0.0); + } }} } std::cout << GridLogMessage << " Done "< Date: Thu, 26 Jul 2018 09:09:29 +0100 Subject: [PATCH 207/267] Updated meson field benchmark for dirac structures --- benchmarks/Benchmark_meson_field.cc | 383 ++++++++++++++++++++++++++-- 1 file changed, 368 insertions(+), 15 deletions(-) diff --git a/benchmarks/Benchmark_meson_field.cc b/benchmarks/Benchmark_meson_field.cc index 442768d5..aa2dbd0a 100644 --- a/benchmarks/Benchmark_meson_field.cc +++ b/benchmarks/Benchmark_meson_field.cc @@ -67,9 +67,10 @@ void sliceInnerProductMesonField(std::vector< std::vector > &mat, // sum across these down to scalars // splitting the SIMD std::vector > lvSum(rd*Lblock*Rblock); - for (int r = 0; r < rd * Lblock * Rblock; r++){ + parallel_for (int r = 0; r < rd * Lblock * Rblock; r++){ lvSum[r] = zero; } + std::vector lsSum(ld*Lblock*Rblock,scalar_type(0.0)); int e1= grid->_slice_nblock[orthogdim]; @@ -90,7 +91,6 @@ void sliceInnerProductMesonField(std::vector< std::vector > &mat, for(int j=0;j > &mat, + left()(3)(0) * right()(3)(0) + left()(3)(1) * right()(3)(1) + left()(3)(2) * right()(3)(2); -#else - vector_type vv = TensorRemove(innerProduct(left,right)); -#endif lvSum[idx]=lvSum[idx]+vv; } } @@ -163,6 +160,297 @@ void sliceInnerProductMesonField(std::vector< std::vector > &mat, return; } +template +void sliceInnerProductMesonFieldGamma(std::vector< std::vector > &mat, + const std::vector > &lhs, + const std::vector > &rhs, + int orthogdim, + std::vector gammas) +{ + typedef typename vobj::scalar_object sobj; + typedef typename vobj::scalar_type scalar_type; + typedef typename vobj::vector_type vector_type; + + int Lblock = lhs.size(); + int Rblock = rhs.size(); + + GridBase *grid = lhs[0]._grid; + + const int Nd = grid->_ndimension; + const int Nsimd = grid->Nsimd(); + int Nt = grid->GlobalDimensions()[orthogdim]; + int Ngamma = gammas.size(); + // int Nmom = mom.size(); + + assert(mat.size()==Lblock*Rblock*Ngamma); + for(int t=0;t_fdimensions[orthogdim]; + int ld=grid->_ldimensions[orthogdim]; + int rd=grid->_rdimensions[orthogdim]; + + // will locally sum vectors first + // sum across these down to scalars + // splitting the SIMD + int MFrvol = rd*Lblock*Rblock*Ngamma; + int MFlvol = ld*Lblock*Rblock*Ngamma; + int MFfvol = fd*Lblock*Rblock*Ngamma; + + std::vector > lvSum(MFrvol); + parallel_for (int r = 0; r < MFrvol; r++){ + lvSum[r] = zero; + } + + std::vector lsSum(MFlvol); + parallel_for (int r = 0; r < MFlvol; r++){ + lsSum[r]=scalar_type(0.0); + } + + int e1= grid->_slice_nblock[orthogdim]; + int e2= grid->_slice_block [orthogdim]; + int stride=grid->_slice_stride[orthogdim]; + + std::cout << GridLogMessage << " Entering first parallel loop "<_ostride[orthogdim]; // base offset for start of plane + + for(int n=0;n temp; + std::vector icoor(Nd); + std::vector > extracted(Nsimd); + + for(int i=0;iiCoorFromIindex(icoor,idx); + + int ldx =rt+icoor[orthogdim]*rd; + + int ij_ldx = mu+i*Ngamma+Ngamma*Lblock*j+Ngamma*Lblock*Rblock*ldx; + lsSum[ij_ldx]=lsSum[ij_ldx]+extracted[idx]._internal; + + } + }}} + } + + std::cout << GridLogMessage << " Entering non parallel loop "<_processor_coor[orthogdim]){ + int ij_dx = i + Lblock * j + Lblock * Rblock * lt; + mat[i+j*Lblock][t] = lsSum[ij_dx]; + } + else{ + mat[i+j*Lblock][t] = scalar_type(0.0); + } + }} + } + std::cout << GridLogMessage << " Done "< +void sliceInnerProductMesonFieldGamma1(std::vector< std::vector > &mat, + const std::vector > &lhs, + const std::vector > &rhs, + int orthogdim, + std::vector gammas) +{ + + typedef typename vobj::scalar_object sobj; + typedef typename vobj::scalar_type scalar_type; + typedef typename vobj::vector_type vector_type; + typedef iSpinMatrix SpinMatrix_v; + typedef iSpinMatrix SpinMatrix_s; + + int Lblock = lhs.size(); + int Rblock = rhs.size(); + + GridBase *grid = lhs[0]._grid; + + const int Nd = grid->_ndimension; + const int Nsimd = grid->Nsimd(); + int Nt = grid->GlobalDimensions()[orthogdim]; + int Ngamma = gammas.size(); + + // int Nmom = mom.size(); + + assert(mat.size()==Lblock*Rblock*Ngamma); + for(int t=0;t_fdimensions[orthogdim]; + int ld=grid->_ldimensions[orthogdim]; + int rd=grid->_rdimensions[orthogdim]; + + // will locally sum vectors first + // sum across these down to scalars + // splitting the SIMD + int MFrvol = rd*Lblock*Rblock; + int MFlvol = ld*Lblock*Rblock; + + int MFfvol = fd*Lblock*Rblock*Ngamma; // Do to dirac matrices here + + Vector lvSum(MFrvol); + parallel_for (int r = 0; r < MFrvol; r++){ + lvSum[r] = zero; + } + + Vector lsSum(MFlvol); + parallel_for (int r = 0; r < MFlvol; r++){ + lsSum[r]=scalar_type(0.0); + } + + int e1= grid->_slice_nblock[orthogdim]; + int e2= grid->_slice_block [orthogdim]; + int stride=grid->_slice_stride[orthogdim]; + + std::cout << GridLogMessage << " Entering first parallel loop "<_ostride[orthogdim]; // base offset for start of plane + + for(int n=0;n icoor(Nd); + std::vector extracted(Nsimd); + + for(int i=0;iiCoorFromIindex(icoor,idx); + + int ldx = rt+icoor[orthogdim]*rd; + + int ij_ldx = i+Lblock*j+Lblock*Rblock*ldx; + + lsSum[ij_ldx]=lsSum[ij_ldx]+extracted[idx]; + + } + }} + } + + std::cout << GridLogMessage << " Entering third parallel loop "<_processor_coor[orthogdim]){ + int ij_dx = i + Lblock * j + Lblock * Rblock * lt; + for(int mu=0;mu(std::vector< std::vector > &mat, const std::vector > &lhs, @@ -170,6 +458,31 @@ template void sliceInnerProductMesonField(std::vector< std::ve int orthogdim) ; */ +std::vector Gmu4 ( { + Gamma::Algebra::GammaX, + Gamma::Algebra::GammaY, + Gamma::Algebra::GammaZ, + Gamma::Algebra::GammaT }); + +std::vector Gmu16 ( { + Gamma::Algebra::GammaX, + Gamma::Algebra::GammaY, + Gamma::Algebra::GammaZ, + Gamma::Algebra::GammaT, + Gamma::Algebra::GammaX, + Gamma::Algebra::GammaY, + Gamma::Algebra::GammaZ, + Gamma::Algebra::GammaT, + Gamma::Algebra::GammaX, + Gamma::Algebra::GammaY, + Gamma::Algebra::GammaZ, + Gamma::Algebra::GammaT, + Gamma::Algebra::GammaX, + Gamma::Algebra::GammaY, + Gamma::Algebra::GammaZ, + Gamma::Algebra::GammaT +}); + int main (int argc, char ** argv) { Grid_init(&argc,&argv); @@ -190,7 +503,7 @@ int main (int argc, char ** argv) pRNG.SeedFixedIntegers(seeds); - const int Nm = 32; // number of all modes (high + low) + int Nm = atoi(argv[1]); // number of all modes (high + low) std::vector v(Nm,&Grid); std::vector w(Nm,&Grid); @@ -205,13 +518,14 @@ int main (int argc, char ** argv) std::vector ip(nt); std::vector > MesonFields (Nm*Nm); + std::vector > MesonFields4 (Nm*Nm*4); + std::vector > MesonFields16 (Nm*Nm*16); std::vector > MesonFieldsRef(Nm*Nm); - for(int i=0;i Date: Thu, 26 Jul 2018 16:47:25 +0100 Subject: [PATCH 208/267] Hadrons: new exceptions which can save a integer --- extras/Hadrons/Exceptions.cc | 34 +++++++++++++++++++++------------- extras/Hadrons/Exceptions.hpp | 27 +++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 13 deletions(-) diff --git a/extras/Hadrons/Exceptions.cc b/extras/Hadrons/Exceptions.cc index e87181b2..1ff26afe 100644 --- a/extras/Hadrons/Exceptions.cc +++ b/extras/Hadrons/Exceptions.cc @@ -34,30 +34,38 @@ See the full license in the file "LICENSE" in the top level distribution directo #define ERR_SUFF " (" + loc + ")" #endif -#define CONST_EXC(name, init) \ +#define CTOR_EXC(name, init) \ name::name(std::string msg, std::string loc)\ :init\ {} +#define CTOR_EXC_REF(name, init) \ +name::name(std::string msg, std::string loc, const unsigned int address)\ +:init\ +{} + using namespace Grid; using namespace Hadrons; using namespace Exceptions; // logic errors -CONST_EXC(Logic, logic_error(msg + ERR_SUFF)) -CONST_EXC(Definition, Logic("definition error: " + msg, loc)) -CONST_EXC(Implementation, Logic("implementation error: " + msg, loc)) -CONST_EXC(Range, Logic("range error: " + msg, loc)) -CONST_EXC(Size, Logic("size error: " + msg, loc)) +CTOR_EXC(Logic, logic_error(msg + ERR_SUFF)) +CTOR_EXC(Definition, Logic("definition error: " + msg, loc)) +CTOR_EXC(Implementation, Logic("implementation error: " + msg, loc)) +CTOR_EXC(Range, Logic("range error: " + msg, loc)) +CTOR_EXC(Size, Logic("size error: " + msg, loc)) // runtime errors -CONST_EXC(Runtime, runtime_error(msg + ERR_SUFF)) -CONST_EXC(Argument, Runtime("argument error: " + msg, loc)) -CONST_EXC(Io, Runtime("IO error: " + msg, loc)) -CONST_EXC(Memory, Runtime("memory error: " + msg, loc)) -CONST_EXC(Parsing, Runtime("parsing error: " + msg, loc)) -CONST_EXC(Program, Runtime("program error: " + msg, loc)) -CONST_EXC(System, Runtime("system error: " + msg, loc)) +CTOR_EXC(Runtime, runtime_error(msg + ERR_SUFF)) +CTOR_EXC(Argument, Runtime("argument error: " + msg, loc)) +CTOR_EXC(Io, Runtime("IO error: " + msg, loc)) +CTOR_EXC(Memory, Runtime("memory error: " + msg, loc)) +CTOR_EXC(Parsing, Runtime("parsing error: " + msg, loc)) +CTOR_EXC(Program, Runtime("program error: " + msg, loc)) +CTOR_EXC(System, Runtime("system error: " + msg, loc)) + +// virtual machine errors +CTOR_EXC_REF(ObjectDefinition, RuntimeRef("object definition error: " + msg, loc, address)); // abort functions void Grid::Hadrons::Exceptions::abort(const std::exception& e) diff --git a/extras/Hadrons/Exceptions.hpp b/extras/Hadrons/Exceptions.hpp index 3eb1c25f..38bee8c1 100644 --- a/extras/Hadrons/Exceptions.hpp +++ b/extras/Hadrons/Exceptions.hpp @@ -39,6 +39,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #define HADRONS_ERROR(exc, msg)\ throw(Exceptions::exc(msg, HADRONS_SRC_LOC)); +#define HADRONS_ERROR_REF(exc, msg, address)\ +throw(Exceptions::exc(msg, HADRONS_SRC_LOC, address)); + #define DECL_EXC(name, base) \ class name: public base\ {\ @@ -46,6 +49,13 @@ public:\ name(std::string msg, std::string loc);\ } +#define DECL_EXC_REF(name, base) \ +class name: public base\ +{\ +public:\ + name(std::string msg, std::string loc, const unsigned int address);\ +} + BEGIN_HADRONS_NAMESPACE namespace Exceptions @@ -66,6 +76,23 @@ namespace Exceptions DECL_EXC(Program, Runtime); DECL_EXC(System, Runtime); + // virtual machine errors + class RuntimeRef: public Runtime + { + public: + RuntimeRef(std::string msg, std::string loc, const unsigned int address) + : Runtime(msg, loc), address_(address) + {} + unsigned int getAddress(void) const + { + return address_; + } + private: + unsigned int address_; + }; + + DECL_EXC_REF(ObjectDefinition, RuntimeRef); + // abort functions void abort(const std::exception& e); } From ef5452cddf33f1e36a049ac519fd30b2f7a799d9 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 26 Jul 2018 16:47:45 +0100 Subject: [PATCH 209/267] Hadrons: smarter memory profiler --- extras/Hadrons/Environment.cc | 5 +-- extras/Hadrons/Environment.hpp | 22 +++++++------ extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 2 +- extras/Hadrons/VirtualMachine.cc | 35 +++++++++------------ 4 files changed, 31 insertions(+), 33 deletions(-) diff --git a/extras/Hadrons/Environment.cc b/extras/Hadrons/Environment.cc index bb12a036..1b9ddb00 100644 --- a/extras/Hadrons/Environment.cc +++ b/extras/Hadrons/Environment.cc @@ -35,7 +35,7 @@ using namespace QCD; using namespace Hadrons; #define ERROR_NO_ADDRESS(address)\ -HADRONS_ERROR(Definition, "no object with address " + std::to_string(address)); +HADRONS_ERROR_REF(ObjectDefinition, "no object with address " + std::to_string(address), address); /****************************************************************************** * Environment implementation * @@ -220,7 +220,8 @@ void Environment::addObject(const std::string name, const int moduleAddress) } else { - HADRONS_ERROR(Definition, "object '" + name + "' already exists"); + HADRONS_ERROR_REF(ObjectDefinition, "object '" + name + "' already exists", + getObjectAddress(name)); } } diff --git a/extras/Hadrons/Environment.hpp b/extras/Hadrons/Environment.hpp index 13a7dfe6..af864c3d 100644 --- a/extras/Hadrons/Environment.hpp +++ b/extras/Hadrons/Environment.hpp @@ -245,7 +245,7 @@ void Environment::createDerivedObject(const std::string name, (object_[address].type != &typeid(B)) or (object_[address].derivedType != &typeid(T))) { - HADRONS_ERROR(Definition, "object '" + name + "' already allocated"); + HADRONS_ERROR_REF(ObjectDefinition, "object '" + name + "' already allocated", address); } } @@ -279,28 +279,31 @@ T * Environment::getDerivedObject(const unsigned int address) const } else { - HADRONS_ERROR(Definition, "object with address " + std::to_string(address) + + HADRONS_ERROR_REF(ObjectDefinition, "object with address " + + std::to_string(address) + " cannot be casted to '" + typeName(&typeid(T)) + - "' (has type '" + typeName(&typeid(h->get())) + "')"); + "' (has type '" + typeName(&typeid(h->get())) + "')", address); } } } else { - HADRONS_ERROR(Definition, "object with address " + std::to_string(address) + + HADRONS_ERROR_REF(ObjectDefinition, "object with address " + + std::to_string(address) + " does not have type '" + typeName(&typeid(B)) + - "' (has type '" + getObjectType(address) + "')"); + "' (has type '" + getObjectType(address) + "')", address); } } else { - HADRONS_ERROR(Definition, "object with address " + std::to_string(address) + - " is empty"); + HADRONS_ERROR_REF(ObjectDefinition, "object with address " + + std::to_string(address) + " is empty", address); } } else { - HADRONS_ERROR(Definition, "no object with address " + std::to_string(address)); + HADRONS_ERROR_REF(ObjectDefinition, "no object with address " + + std::to_string(address), address); } } @@ -338,7 +341,8 @@ bool Environment::isObjectOfType(const unsigned int address) const } else { - HADRONS_ERROR(Definition, "no object with address " + std::to_string(address)); + HADRONS_ERROR_REF(ObjectDefinition, "no object with address " + + std::to_string(address), address); } } diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index 31be621f..e9b3f00d 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -158,7 +158,7 @@ void TRBPrecCG::setup(void) guesser.reset(new CoarseGuesser(epack.evec, epack.evecCoarse, epack.evalCoarse)); } - catch (Exceptions::Definition &e) + catch (Exceptions::ObjectDefinition &) { auto &epack = envGet(EPack, par().eigenPack); diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index cc197ef8..d849ba34 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -123,10 +123,11 @@ void VirtualMachine::pushModule(VirtualMachine::ModPt &pt) else { // output already fully registered, error - HADRONS_ERROR(Definition, "object '" + out + HADRONS_ERROR_REF(ObjectDefinition, "object '" + out + "' is already produced by module '" + module_[env().getObjectModule(out)].name - + "' (while pushing module '" + name + "')"); + + "' (while pushing module '" + name + "')", + env().getObjectAddress(out)); } if (getModule(address)->getReference().size() > 0) { @@ -306,10 +307,10 @@ void VirtualMachine::makeModuleGraph(void) if (min < 0) { - HADRONS_ERROR(Definition, "dependency '" + HADRONS_ERROR_REF(ObjectDefinition, "dependency '" + env().getObjectName(in) + "' (address " + std::to_string(in) - + ") is not produced by any module"); + + ") is not produced by any module", in); } else { @@ -394,7 +395,7 @@ void VirtualMachine::makeMemoryProfile(void) if (profile_.module[a].empty()) { LOG(Debug) << "Profiling memory for module '" << module_[a].name - << "' (" << a << ")..." << std::endl; + << "' (" << a << ")" << std::endl; memoryProfile(a); env().freeAll(); } @@ -471,7 +472,7 @@ void VirtualMachine::memoryProfile(const unsigned int address) auto m = getModule(address); LOG(Debug) << "Setting up module '" << m->getName() - << "' (" << address << ")..." << std::endl; + << "' (" << address << ")" << std::endl; try { currentModule_ = address; @@ -479,25 +480,17 @@ void VirtualMachine::memoryProfile(const unsigned int address) currentModule_ = -1; updateProfile(address); } - catch (Exceptions::Definition &) + catch (Exceptions::ObjectDefinition &exc) { cleanEnvironment(); - for (auto &in: m->getInput()) + if (!env().hasCreatedObject(exc.getAddress())) { - if (!env().hasCreatedObject(in)) - { - memoryProfile(env().getObjectModule(in)); - } + LOG(Debug) << "Object '" << env().getObjectName(exc.getAddress()) + << "' missing for setup of '" << m->getName() + << "' (" << address << ")" << std::endl; + memoryProfile(env().getObjectModule(exc.getAddress())); } - for (auto &ref: m->getReference()) - { - if (!env().hasCreatedObject(ref)) - { - memoryProfile(env().getObjectModule(ref)); - } - } - m->setup(); - updateProfile(address); + memoryProfile(address); } } From bf71162b974851aea4c337e04832f367dbbbd0f4 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 26 Jul 2018 19:20:12 +0100 Subject: [PATCH 210/267] Hadrons: backtrace on abort --- extras/Hadrons/Exceptions.cc | 12 ++++++++++++ extras/Hadrons/Exceptions.hpp | 26 ++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/extras/Hadrons/Exceptions.cc b/extras/Hadrons/Exceptions.cc index 1ff26afe..6d5a3dc2 100644 --- a/extras/Hadrons/Exceptions.cc +++ b/extras/Hadrons/Exceptions.cc @@ -48,6 +48,9 @@ using namespace Grid; using namespace Hadrons; using namespace Exceptions; +// backtrace cache +std::vector Grid::Hadrons::Exceptions::backtraceStr; + // logic errors CTOR_EXC(Logic, logic_error(msg + ERR_SUFF)) CTOR_EXC(Definition, Logic("definition error: " + msg, loc)) @@ -82,6 +85,15 @@ void Grid::Hadrons::Exceptions::abort(const std::exception& e) << std::endl; } LOG(Error) << e.what() << std::endl; + if (!backtraceStr.empty()) + { + LOG(Error) << "-- BACKTRACE --------------" << std::endl; + for (auto &s: backtraceStr) + { + LOG(Error) << s << std::endl; + } + LOG(Error) << "---------------------------" << std::endl; + } LOG(Error) << "Aborting program" << std::endl; Grid_finalize(); diff --git a/extras/Hadrons/Exceptions.hpp b/extras/Hadrons/Exceptions.hpp index 38bee8c1..6893ef03 100644 --- a/extras/Hadrons/Exceptions.hpp +++ b/extras/Hadrons/Exceptions.hpp @@ -30,16 +30,39 @@ See the full license in the file "LICENSE" in the top level distribution directo #define Hadrons_Exceptions_hpp_ #include +#include #ifndef Hadrons_Global_hpp_ #include #endif #define HADRONS_SRC_LOC std::string(__FUNCTION__) + " at " \ + std::string(__FILE__) + ":" + std::to_string(__LINE__) +#define HADRONS_BACKTRACE_MAX 128 +#ifdef HAVE_EXECINFO_H +#define HADRONS_CACHE_BACKTRACE \ +{\ + void* _callstack[HADRONS_BACKTRACE_MAX];\ + int _i, _frames = backtrace(_callstack, HADRONS_BACKTRACE_MAX);\ + char** _strs = backtrace_symbols(_callstack, _frames);\ + Grid::Hadrons::Exceptions::backtraceStr.clear();\ + for (_i = 0; _i < _frames; ++_i)\ + {\ + Hadrons::Exceptions::backtraceStr.push_back(std::string(_strs[_i]));\ + }\ + free(_strs);\ +} +#else +#define HADRONS_CACHE_BACKTRACE \ +Grid::Hadrons::Exceptions::backtraceStr.clear();\ +Grid::Hadrons::Exceptions::backtraceStr.push_back(""); +#endif + #define HADRONS_ERROR(exc, msg)\ +HADRONS_CACHE_BACKTRACE \ throw(Exceptions::exc(msg, HADRONS_SRC_LOC)); #define HADRONS_ERROR_REF(exc, msg, address)\ +HADRONS_CACHE_BACKTRACE \ throw(Exceptions::exc(msg, HADRONS_SRC_LOC, address)); #define DECL_EXC(name, base) \ @@ -60,6 +83,9 @@ BEGIN_HADRONS_NAMESPACE namespace Exceptions { + // backtrace cache + extern std::vector backtraceStr; + // logic errors DECL_EXC(Logic, std::logic_error); DECL_EXC(Definition, Logic); From 2679df034fd7f0ebe60b0b359390830c300b105d Mon Sep 17 00:00:00 2001 From: fionnoh Date: Fri, 27 Jul 2018 18:31:10 +0100 Subject: [PATCH 211/267] Changes to meson field benchmark. Now includes the gammas in the final part of the naive method, both methods compute lhs^dag*Gamma*rhs (previously Gamma*lhs^dag*rhs), and checks results. --- benchmarks/Benchmark_meson_field.cc | 87 +++++++++++++++++++---------- 1 file changed, 57 insertions(+), 30 deletions(-) diff --git a/benchmarks/Benchmark_meson_field.cc b/benchmarks/Benchmark_meson_field.cc index aa2dbd0a..566c32dc 100644 --- a/benchmarks/Benchmark_meson_field.cc +++ b/benchmarks/Benchmark_meson_field.cc @@ -223,13 +223,11 @@ void sliceInnerProductMesonFieldGamma(std::vector< std::vector > &mat, for(int b=0;b > &mat, int lt = t % ld; for(int i=0;i_processor_coor[orthogdim]){ - int ij_dx = i + Lblock * j + Lblock * Rblock * lt; - mat[i+j*Lblock][t] = lsSum[ij_dx]; + int ij_dx = mu+i*Ngamma+Ngamma*Lblock*j+Ngamma*Lblock*Rblock* lt; + mat[mu+i*Ngamma+j*Lblock*Ngamma][t] = lsSum[ij_dx]; } else{ - mat[i+j*Lblock][t] = scalar_type(0.0); + mat[mu+i*Ngamma+j*Lblock*Ngamma][t] = scalar_type(0.0); } - }} + }}} } std::cout << GridLogMessage << " Done "< > &mat auto right = rhs[j]._odata[ss]; for(int s1=0;s1 > &mat lvSum[idx]=lvSum[idx]+vv; } + } } } } - } std::cout << GridLogMessage << " Entering second parallel loop "< > &mat for(int j=0;j_processor_coor[orthogdim]){ int ij_dx = i + Lblock * j + Lblock * Rblock * lt; - for(int mu=0;mu Gmu4 ( { Gamma::Algebra::GammaT }); std::vector Gmu16 ( { - Gamma::Algebra::GammaX, - Gamma::Algebra::GammaY, - Gamma::Algebra::GammaZ, + Gamma::Algebra::Gamma5, Gamma::Algebra::GammaT, + Gamma::Algebra::GammaTGamma5, Gamma::Algebra::GammaX, + Gamma::Algebra::GammaXGamma5, Gamma::Algebra::GammaY, + Gamma::Algebra::GammaYGamma5, Gamma::Algebra::GammaZ, - Gamma::Algebra::GammaT, - Gamma::Algebra::GammaX, - Gamma::Algebra::GammaY, - Gamma::Algebra::GammaZ, - Gamma::Algebra::GammaT, - Gamma::Algebra::GammaX, - Gamma::Algebra::GammaY, - Gamma::Algebra::GammaZ, - Gamma::Algebra::GammaT + Gamma::Algebra::GammaZGamma5, + Gamma::Algebra::Identity, + Gamma::Algebra::SigmaXT, + Gamma::Algebra::SigmaXY, + Gamma::Algebra::SigmaXZ, + Gamma::Algebra::SigmaYT, + Gamma::Algebra::SigmaYZ, + Gamma::Algebra::SigmaZT }); int main (int argc, char ** argv) @@ -507,6 +506,7 @@ int main (int argc, char ** argv) std::vector v(Nm,&Grid); std::vector w(Nm,&Grid); + std::vector gammaV(Nm,&Grid); for(int i=0;i > MesonFields (Nm*Nm); std::vector > MesonFields4 (Nm*Nm*4); std::vector > MesonFields16 (Nm*Nm*16); + std::vector > MesonFields161(Nm*Nm*16); std::vector > MesonFieldsRef(Nm*Nm); - for(int i=0;i Date: Fri, 27 Jul 2018 23:00:16 +0100 Subject: [PATCH 212/267] Momentum loop --- benchmarks/Benchmark_meson_field.cc | 183 ++++++++++++++++++++++++++-- 1 file changed, 176 insertions(+), 7 deletions(-) diff --git a/benchmarks/Benchmark_meson_field.cc b/benchmarks/Benchmark_meson_field.cc index aa2dbd0a..10a69525 100644 --- a/benchmarks/Benchmark_meson_field.cc +++ b/benchmarks/Benchmark_meson_field.cc @@ -180,7 +180,6 @@ void sliceInnerProductMesonFieldGamma(std::vector< std::vector > &mat, const int Nsimd = grid->Nsimd(); int Nt = grid->GlobalDimensions()[orthogdim]; int Ngamma = gammas.size(); - // int Nmom = mom.size(); assert(mat.size()==Lblock*Rblock*Ngamma); for(int t=0;t > &mat, // splitting the SIMD int MFrvol = rd*Lblock*Rblock*Ngamma; int MFlvol = ld*Lblock*Rblock*Ngamma; - int MFfvol = fd*Lblock*Rblock*Ngamma; std::vector > lvSum(MFrvol); parallel_for (int r = 0; r < MFrvol; r++){ @@ -330,8 +328,6 @@ void sliceInnerProductMesonFieldGamma1(std::vector< std::vector > &mat int Nt = grid->GlobalDimensions()[orthogdim]; int Ngamma = gammas.size(); - // int Nmom = mom.size(); - assert(mat.size()==Lblock*Rblock*Ngamma); for(int t=0;t > &mat int MFrvol = rd*Lblock*Rblock; int MFlvol = ld*Lblock*Rblock; - int MFfvol = fd*Lblock*Rblock*Ngamma; // Do to dirac matrices here - Vector lvSum(MFrvol); parallel_for (int r = 0; r < MFrvol; r++){ lvSum[r] = zero; @@ -450,6 +444,161 @@ void sliceInnerProductMesonFieldGamma1(std::vector< std::vector > &mat return; } +template +void sliceInnerProductMesonFieldGammaMom(std::vector< std::vector > &mat, + const std::vector > &lhs, + const std::vector > &rhs, + int orthogdim, + std::vector gammas, + const std::vector &mom) +{ + typedef typename vobj::scalar_object sobj; + typedef typename vobj::scalar_type scalar_type; + typedef typename vobj::vector_type vector_type; + typedef iSpinMatrix SpinMatrix_v; + typedef iSpinMatrix SpinMatrix_s; + + int Lblock = lhs.size(); + int Rblock = rhs.size(); + + GridBase *grid = lhs[0]._grid; + + const int Nd = grid->_ndimension; + const int Nsimd = grid->Nsimd(); + int Nt = grid->GlobalDimensions()[orthogdim]; + int Ngamma = gammas.size(); + int Nmom = mom.size(); + + assert(mat.size()==Lblock*Rblock*Ngamma*Nmom); + for(int t=0;t_fdimensions[orthogdim]; + int ld=grid->_ldimensions[orthogdim]; + int rd=grid->_rdimensions[orthogdim]; + + // will locally sum vectors first + // sum across these down to scalars + // splitting the SIMD + int MFrvol = rd*Lblock*Rblock*Nmom; + int MFlvol = ld*Lblock*Rblock*Nmom; + + Vector lvSum(MFrvol); + parallel_for (int r = 0; r < MFrvol; r++){ + lvSum[r] = zero; + } + + Vector lsSum(MFlvol); + parallel_for (int r = 0; r < MFlvol; r++){ + lsSum[r]=scalar_type(0.0); + } + + int e1= grid->_slice_nblock[orthogdim]; + int e2= grid->_slice_block [orthogdim]; + int stride=grid->_slice_stride[orthogdim]; + + std::cout << GridLogMessage << " Entering first parallel loop "<_ostride[orthogdim]; // base offset for start of plane + + for(int n=0;n > phase(Nmom); + for(int m=0;m icoor(Nd); + std::vector extracted(Nsimd); + + + for(int i=0;iiCoorFromIindex(icoor,idx); + + int ldx = rt+icoor[orthogdim]*rd; + + int ij_ldx = m+Nmom*i+Nmom*Lblock*j+Nmom*Lblock*Rblock*ldx; + + lsSum[ij_ldx]=lsSum[ij_ldx]+extracted[idx]; + + } + }}} + } + + std::cout << GridLogMessage << " Entering third parallel loop "<_processor_coor[orthogdim]){ + for(int m=0;m(std::vector< std::vector > &mat, @@ -491,7 +640,8 @@ int main (int argc, char ** argv) std::vector simd_layout = GridDefaultSimd(Nd,vComplex::Nsimd()); std::vector mpi_layout = GridDefaultMpi(); GridCartesian Grid(latt_size,simd_layout,mpi_layout); - + + int Nmom=9; int nt = latt_size[Tp]; uint64_t vol = 1; for(int d=0;d v(Nm,&Grid); std::vector w(Nm,&Grid); + std::vector phases(Nmom,&Grid); for(int i=0;i > MesonFields (Nm*Nm); std::vector > MesonFields4 (Nm*Nm*4); std::vector > MesonFields16 (Nm*Nm*16); + std::vector > MesonFields16mom (Nm*Nm*16*Nmom); std::vector > MesonFieldsRef(Nm*Nm); for(int i=0;i Date: Sat, 28 Jul 2018 16:17:47 +0100 Subject: [PATCH 213/267] 7 moms --- benchmarks/Benchmark_meson_field.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/Benchmark_meson_field.cc b/benchmarks/Benchmark_meson_field.cc index 0a181ac1..9d7beeec 100644 --- a/benchmarks/Benchmark_meson_field.cc +++ b/benchmarks/Benchmark_meson_field.cc @@ -640,7 +640,7 @@ int main (int argc, char ** argv) std::vector mpi_layout = GridDefaultMpi(); GridCartesian Grid(latt_size,simd_layout,mpi_layout); - int Nmom=9; + int Nmom=7; int nt = latt_size[Tp]; uint64_t vol = 1; for(int d=0;d Date: Sat, 28 Jul 2018 23:46:22 +0100 Subject: [PATCH 214/267] Optimising --- benchmarks/Benchmark_meson_field.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/benchmarks/Benchmark_meson_field.cc b/benchmarks/Benchmark_meson_field.cc index 9d7beeec..d007fc7b 100644 --- a/benchmarks/Benchmark_meson_field.cc +++ b/benchmarks/Benchmark_meson_field.cc @@ -507,8 +507,7 @@ void sliceInnerProductMesonFieldGammaMom(std::vector< std::vector > &m for(int n=0;n > phase(Nmom); - for(int m=0;m > &m }} // After getting the sitewise product do the mom phase loop + int base = Nmom*i+Nmom*Lblock*j+Nmom*Lblock*Rblock*r; + // Trigger unroll for ( int m=0;m mpi_layout = GridDefaultMpi(); GridCartesian Grid(latt_size,simd_layout,mpi_layout); - int Nmom=7; + const int Nmom=7; int nt = latt_size[Tp]; uint64_t vol = 1; for(int d=0;d Date: Mon, 30 Jul 2018 18:40:50 +0100 Subject: [PATCH 215/267] The basics of what is needed in Grid and Hadrons for the A2A class and module, with none of the contraction or MF code. --- extras/Hadrons/AllToAllVectors.hpp | 217 ++++++++++++++++ extras/Hadrons/Modules.hpp | 95 +++---- extras/Hadrons/Modules/MSolver/A2AVectors.cc | 8 + extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 235 ++++++++++++++++++ extras/Hadrons/modules.inc | 188 +++++++------- lib/algorithms/iterative/Deflation.h | 4 +- lib/algorithms/iterative/SchurRedBlack.h | 124 ++++++--- lib/qcd/action/fermion/CayleyFermion5D.cc | 27 ++ lib/qcd/action/fermion/CayleyFermion5D.h | 2 + lib/qcd/action/fermion/FermionOperator.h | 8 + 10 files changed, 739 insertions(+), 169 deletions(-) create mode 100644 extras/Hadrons/AllToAllVectors.hpp create mode 100644 extras/Hadrons/Modules/MSolver/A2AVectors.cc create mode 100644 extras/Hadrons/Modules/MSolver/A2AVectors.hpp diff --git a/extras/Hadrons/AllToAllVectors.hpp b/extras/Hadrons/AllToAllVectors.hpp new file mode 100644 index 00000000..7d9aa62e --- /dev/null +++ b/extras/Hadrons/AllToAllVectors.hpp @@ -0,0 +1,217 @@ +#ifndef A2A_Vectors_hpp_ +#define A2A_Vectors_hpp_ + +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +//////////////////////////////// +// A2A Modes +//////////////////////////////// + +template +class A2AModesSchurDiagTwo +{ + private: + const std::vector *evec; + const std::vector *eval; + Matrix &action; + Solver &solver; + const int Nl, Nh; + const bool return_5d; + std::vector w_high_5d, v_high_5d, w_high_4d, v_high_4d; + + public: + A2AModesSchurDiagTwo(const std::vector *_evec, const std::vector *_eval, + Matrix &_action, + Solver &_solver, + const int _Nl, const int _Nh, + const bool _return_5d) + : evec(_evec), eval(_eval), + action(_action), + solver(_solver), + Nl(_Nl), Nh(_Nh), + return_5d(_return_5d) + { + init_resize(1, Nh); + if (return_5d) init_resize(Nh, Nh); + }; + + void init_resize(const size_t size_5d, const size_t size_4d) + { + GridBase *grid_5d = action.Grid(); + GridBase *grid_4d = action.GaugeGrid(); + + w_high_5d.resize(size_5d, grid_5d); + v_high_5d.resize(size_5d, grid_5d); + + w_high_4d.resize(size_4d, grid_4d); + v_high_4d.resize(size_4d, grid_4d); + } + + void high_modes(Field &source_5d, Field &w_source_5d, Field &source_4d, int i) + { + int i5d; + LOG(Message) << "A2A high modes for i = " << i << std::endl; + i5d = 0; + if (return_5d) i5d = i; + this->high_mode_v(action, solver, source_5d, v_high_5d[i5d], v_high_4d[i]); + this->high_mode_w(w_source_5d, source_4d, w_high_5d[i5d], w_high_4d[i]); + } + + void return_v(int i, Field &vout_5d, Field &vout_4d) + { + if (i < Nl) + { + this->low_mode_v(action, evec->at(i), eval->at(i), vout_5d, vout_4d); + } + else + { + vout_4d = v_high_4d[i - Nl]; + if (!(return_5d)) i = Nl; + vout_5d = v_high_5d[i - Nl]; + } + } + void return_w(int i, Field &wout_5d, Field &wout_4d) + { + if (i < Nl) + { + this->low_mode_w(action, evec->at(i), eval->at(i), wout_5d, wout_4d); + } + else + { + wout_4d = w_high_4d[i - Nl]; + if (!(return_5d)) i = Nl; + wout_5d = w_high_5d[i - Nl]; + } + } + + void low_mode_v(Matrix &action, const Field &evec, const RealD &eval, Field &vout_5d, Field &vout_4d) + { + GridBase *grid = action.RedBlackGrid(); + Field src_o(grid); + Field sol_e(grid); + Field sol_o(grid); + Field tmp(grid); + + src_o = evec; + src_o.checkerboard = Odd; + pickCheckerboard(Even, sol_e, vout_5d); + pickCheckerboard(Odd, sol_o, vout_5d); + + ///////////////////////////////////////////////////// + // v_ie = -(1/eval_i) * MeeInv Meo MooInv evec_i + ///////////////////////////////////////////////////// + action.MooeeInv(src_o, tmp); + assert(tmp.checkerboard == Odd); + action.Meooe(tmp, sol_e); + assert(sol_e.checkerboard == Even); + action.MooeeInv(sol_e, tmp); + assert(tmp.checkerboard == Even); + sol_e = (-1.0 / eval) * tmp; + assert(sol_e.checkerboard == Even); + + ///////////////////////////////////////////////////// + // v_io = (1/eval_i) * MooInv evec_i + ///////////////////////////////////////////////////// + action.MooeeInv(src_o, tmp); + assert(tmp.checkerboard == Odd); + sol_o = (1.0 / eval) * tmp; + assert(sol_o.checkerboard == Odd); + + setCheckerboard(vout_5d, sol_e); + assert(sol_e.checkerboard == Even); + setCheckerboard(vout_5d, sol_o); + assert(sol_o.checkerboard == Odd); + + action.ExportPhysicalFermionSolution(vout_5d, vout_4d); + } + + void low_mode_w(Matrix &action, const Field &evec, const RealD &eval, Field &wout_5d, Field &wout_4d) + { + GridBase *grid = action.RedBlackGrid(); + SchurDiagTwoOperator _HermOpEO(action); + + Field src_o(grid); + Field sol_e(grid); + Field sol_o(grid); + Field tmp(grid); + + GridBase *fgrid = action.Grid(); + Field tmp_wout(fgrid); + + src_o = evec; + src_o.checkerboard = Odd; + pickCheckerboard(Even, sol_e, tmp_wout); + pickCheckerboard(Odd, sol_o, tmp_wout); + + ///////////////////////////////////////////////////// + // w_ie = - MeeInvDag MoeDag Doo evec_i + ///////////////////////////////////////////////////// + _HermOpEO.Mpc(src_o, tmp); + assert(tmp.checkerboard == Odd); + action.MeooeDag(tmp, sol_e); + assert(sol_e.checkerboard == Even); + action.MooeeInvDag(sol_e, tmp); + assert(tmp.checkerboard == Even); + sol_e = (-1.0) * tmp; + + ///////////////////////////////////////////////////// + // w_io = Doo evec_i + ///////////////////////////////////////////////////// + _HermOpEO.Mpc(src_o, sol_o); + assert(sol_o.checkerboard == Odd); + + setCheckerboard(tmp_wout, sol_e); + assert(sol_e.checkerboard == Even); + setCheckerboard(tmp_wout, sol_o); + assert(sol_o.checkerboard == Odd); + + action.DminusDag(tmp_wout, wout_5d); + + action.ExportPhysicalFermionSource(wout_5d, wout_4d); + } + + void high_mode_v(Matrix &action, Solver &solver, const Field &source, Field &vout_5d, Field &vout_4d) + { + GridBase *fgrid = action.Grid(); + solver(vout_5d, source); // Note: solver is solver(out, in) + action.ExportPhysicalFermionSolution(vout_5d, vout_4d); + } + + void high_mode_w(const Field &w_source_5d, const Field &source_4d, Field &wout_5d, Field &wout_4d) + { + wout_5d = w_source_5d; + wout_4d = source_4d; + } +}; + +// TODO: A2A for coarse eigenvectors + +// template +// class A2ALMSchurDiagTwoCoarse : public A2AModesSchurDiagTwo +// { +// private: +// const std::vector &subspace; +// const std::vector &evec_coarse; +// const std::vector &eval_coarse; +// Matrix &action; + +// public: +// A2ALMSchurDiagTwoCoarse(const std::vector &_subspace, const std::vector &_evec_coarse, const std::vector &_eval_coarse, Matrix &_action) +// : subspace(_subspace), evec_coarse(_evec_coarse), eval_coarse(_eval_coarse), action(_action){}; + +// void operator()(int i, FineField &vout, FineField &wout) +// { +// FineField prom_evec(subspace[0]._grid); +// blockPromote(evec_coarse[i], prom_evec, subspace); +// this->low_mode_v(action, prom_evec, eval_coarse[i], vout); +// this->low_mode_w(action, prom_evec, eval_coarse[i], wout); +// } +// }; + +END_HADRONS_NAMESPACE + +#endif // A2A_Vectors_hpp_ \ No newline at end of file diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 6bf5d3ed..06cd804a 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,57 +1,58 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include #include +#include #include #include -#include -#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include #include -#include #include +#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.cc b/extras/Hadrons/Modules/MSolver/A2AVectors.cc new file mode 100644 index 00000000..f72f405d --- /dev/null +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MSolver; + +template class Grid::Hadrons::MSolver::TA2AVectors; +template class Grid::Hadrons::MSolver::TA2AVectors; diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp new file mode 100644 index 00000000..d7e4cfe4 --- /dev/null +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -0,0 +1,235 @@ +#ifndef Hadrons_MSolver_A2AVectors_hpp_ +#define Hadrons_MSolver_A2AVectors_hpp_ + +#include +#include +#include +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * A2AVectors * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MSolver) + +class A2AVectorsPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(A2AVectorsPar, + bool, return_5d, + int, Nl, + int, N, + std::vector, sources, + std::string, action, + std::string, eigenPack, + std::string, solver); +}; + +template +class TA2AVectors : public Module +{ + public: + FERM_TYPE_ALIASES(FImpl,); + SOLVER_TYPE_ALIASES(FImpl,); + + typedef FermionEigenPack EPack; + typedef CoarseFermionEigenPack CoarseEPack; + + typedef A2AModesSchurDiagTwo A2ABase; + + public: + // constructor + TA2AVectors(const std::string name); + // destructor + virtual ~TA2AVectors(void) {}; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getReference(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); + + private: + unsigned int Ls_; + std::string className_; +}; + +MODULE_REGISTER_TMP(A2AVectors, ARG(TA2AVectors), MSolver); +MODULE_REGISTER_TMP(ZA2AVectors, ARG(TA2AVectors), MSolver); + +/****************************************************************************** + * TA2AVectors implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TA2AVectors::TA2AVectors(const std::string name) +: Module(name) +, className_ (name + "_class") +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TA2AVectors::getInput(void) +{ + int Nl = par().Nl; + std::string sub_string = ""; + if (Nl > 0) sub_string = "_subtract"; + std::vector in = {par().solver + sub_string}; + + int n = par().sources.size(); + + for (unsigned int t = 0; t < n; t += 1) + { + in.push_back(par().sources[t]); + } + + return in; +} + +template +std::vector TA2AVectors::getReference(void) +{ + std::vector ref = {par().action}; + + if (!par().eigenPack.empty()) + { + ref.push_back(par().eigenPack); + } + + return ref; +} + +template +std::vector TA2AVectors::getOutput(void) +{ + std::vector out = {getName(), className_}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TA2AVectors::setup(void) +{ + int N = par().N; + int Nl = par().Nl; + int Nh = N - Nl; + bool return_5d = par().return_5d; + int Ls; + + std::string sub_string = ""; + if (Nl > 0) sub_string = "_subtract"; + auto &solver = envGet(Solver, par().solver + sub_string); + Ls = env().getObjectLs(par().solver + sub_string); + + auto &action = envGet(FMat, par().action); + + envTmpLat(FermionField, "ferm_src", Ls); + envTmpLat(FermionField, "unphys_ferm", Ls); + envTmpLat(FermionField, "tmp"); + + std::vector *evec; + const std::vector *eval; + + if (Nl > 0) + { + // Low modes + auto &epack = envGet(EPack, par().eigenPack); + + LOG(Message) << "Creating a2a vectors " << getName() << + " using eigenpack '" << par().eigenPack << "' (" + << epack.evec.size() << " modes)" << + " and " << Nh << " high modes." << std::endl; + evec = &epack.evec; + eval = &epack.eval; + } + else + { + LOG(Message) << "Creating a2a vectors " << getName() << + " using " << Nh << " high modes only." << std::endl; + } + + envCreate(A2ABase, className_, Ls, + evec, eval, + action, + solver, + Nl, Nh, + return_5d); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TA2AVectors::execute(void) +{ + auto &action = envGet(FMat, par().action); + + int Nt = env().getDim(Tp); + int Nc = FImpl::Dimension; + int Ls_; + int Nl = par().Nl; + + std::string sub_string = ""; + if (Nl > 0) sub_string = "_subtract"; + Ls_ = env().getObjectLs(par().solver + sub_string); + + auto &a2areturn = envGet(A2ABase, className_); + + // High modes + auto sources = par().sources; + int Nsrc = par().sources.size(); + + envGetTmp(FermionField, ferm_src); + envGetTmp(FermionField, unphys_ferm); + envGetTmp(FermionField, tmp); + + int N_count = 0; + for (unsigned int s = 0; s < Ns; ++s) + for (unsigned int c = 0; c < Nc; ++c) + for (unsigned int T = 0; T < Nsrc; T++) + { + auto &prop_src = envGet(PropagatorField, sources[T]); + LOG(Message) << "A2A src for s = " << s << " , c = " << c << ", T = " << T << std::endl; + // source conversion for 4D sources + if (!env().isObject5d(sources[T])) + { + if (Ls_ == 1) + { + PropToFerm(ferm_src, prop_src, s, c); + tmp = ferm_src; + } + else + { + PropToFerm(tmp, prop_src, s, c); + action.ImportPhysicalFermionSource(tmp, ferm_src); + action.ImportUnphysicalFermion(tmp, unphys_ferm); + } + } + // source conversion for 5D sources + else + { + if (Ls_ != env().getObjectLs(sources[T])) + { + HADRONS_ERROR(Size, "Ls mismatch between quark action and source"); + } + else + { + PropToFerm(ferm_src, prop_src, s, c); + action.ExportPhysicalFermionSolution(ferm_src, tmp); + unphys_ferm = ferm_src; + } + } + LOG(Message) << "a2areturn.high_modes Ncount = " << N_count << std::endl; + a2areturn.high_modes(ferm_src, unphys_ferm, tmp, N_count); + N_count++; + } +} +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MSolver_A2AVectors_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 58b082d0..ca454086 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -1,115 +1,117 @@ modules_cc =\ - Modules/MContraction/WeakHamiltonianEye.cc \ - Modules/MContraction/Baryon.cc \ - Modules/MContraction/Meson.cc \ - Modules/MContraction/WeakNeutral4ptDisc.cc \ - Modules/MContraction/WeakHamiltonianNonEye.cc \ - Modules/MContraction/WardIdentity.cc \ - Modules/MContraction/DiscLoop.cc \ - Modules/MContraction/Gamma3pt.cc \ - Modules/MFermion/FreeProp.cc \ - Modules/MFermion/GaugeProp.cc \ - Modules/MSource/Point.cc \ - Modules/MSource/Wall.cc \ Modules/MSource/SeqConserved.cc \ Modules/MSource/SeqGamma.cc \ + Modules/MSource/Point.cc \ Modules/MSource/Z2.cc \ + Modules/MSource/Wall.cc \ Modules/MSink/Point.cc \ Modules/MSink/Smear.cc \ - Modules/MSolver/RBPrecCG.cc \ - Modules/MSolver/LocalCoherenceLanczos.cc \ - Modules/MGauge/StoutSmearing.cc \ - Modules/MGauge/Unit.cc \ - Modules/MGauge/UnitEm.cc \ - Modules/MGauge/StochEm.cc \ - Modules/MGauge/Random.cc \ - Modules/MGauge/FundtoHirep.cc \ - Modules/MUtilities/TestSeqGamma.cc \ - Modules/MUtilities/TestSeqConserved.cc \ - Modules/MLoop/NoiseLoop.cc \ - Modules/MScalar/FreeProp.cc \ - Modules/MScalar/VPCounterTerms.cc \ - Modules/MScalar/ChargedProp.cc \ - Modules/MScalar/ScalarVP.cc \ - Modules/MAction/Wilson.cc \ + Modules/MIO/LoadNersc.cc \ + Modules/MIO/LoadEigenPack.cc \ + Modules/MIO/LoadCoarseEigenPack.cc \ + Modules/MIO/LoadBinary.cc \ + Modules/MScalarSUN/TwoPointNPR.cc \ + Modules/MScalarSUN/TrPhi.cc \ + Modules/MScalarSUN/StochFreeField.cc \ + Modules/MScalarSUN/TrMag.cc \ + Modules/MScalarSUN/Div.cc \ + Modules/MScalarSUN/ShiftProbe.cc \ + Modules/MScalarSUN/Grad.cc \ + Modules/MScalarSUN/TwoPoint.cc \ + Modules/MScalarSUN/TimeMomProbe.cc \ + Modules/MScalarSUN/EMT.cc \ + Modules/MScalarSUN/TransProj.cc \ + Modules/MScalarSUN/TrKinetic.cc \ + Modules/MAction/DWF.cc \ Modules/MAction/MobiusDWF.cc \ Modules/MAction/ZMobiusDWF.cc \ - Modules/MAction/WilsonClover.cc \ - Modules/MAction/DWF.cc \ + Modules/MAction/Wilson.cc \ Modules/MAction/ScaledDWF.cc \ - Modules/MScalarSUN/TrPhi.cc \ - Modules/MScalarSUN/Grad.cc \ - Modules/MScalarSUN/TimeMomProbe.cc \ - Modules/MScalarSUN/TrMag.cc \ - Modules/MScalarSUN/TrKinetic.cc \ - Modules/MScalarSUN/EMT.cc \ - Modules/MScalarSUN/ShiftProbe.cc \ - Modules/MScalarSUN/TransProj.cc \ - Modules/MScalarSUN/StochFreeField.cc \ - Modules/MScalarSUN/TwoPoint.cc \ - Modules/MScalarSUN/TwoPointNPR.cc \ - Modules/MScalarSUN/Div.cc \ - Modules/MIO/LoadEigenPack.cc \ - Modules/MIO/LoadBinary.cc \ - Modules/MIO/LoadNersc.cc \ - Modules/MIO/LoadCoarseEigenPack.cc + Modules/MAction/WilsonClover.cc \ + Modules/MContraction/WeakHamiltonianNonEye.cc \ + Modules/MContraction/WardIdentity.cc \ + Modules/MContraction/WeakHamiltonianEye.cc \ + Modules/MContraction/DiscLoop.cc \ + Modules/MContraction/Baryon.cc \ + Modules/MContraction/Gamma3pt.cc \ + Modules/MContraction/WeakNeutral4ptDisc.cc \ + Modules/MContraction/Meson.cc \ + Modules/MScalar/VPCounterTerms.cc \ + Modules/MScalar/ChargedProp.cc \ + Modules/MScalar/FreeProp.cc \ + Modules/MScalar/ScalarVP.cc \ + Modules/MUtilities/TestSeqGamma.cc \ + Modules/MUtilities/TestSeqConserved.cc \ + Modules/MFermion/FreeProp.cc \ + Modules/MFermion/GaugeProp.cc \ + Modules/MSolver/RBPrecCG.cc \ + Modules/MSolver/LocalCoherenceLanczos.cc \ + Modules/MSolver/A2AVectors.cc \ + Modules/MLoop/NoiseLoop.cc \ + Modules/MGauge/Unit.cc \ + Modules/MGauge/Random.cc \ + Modules/MGauge/UnitEm.cc \ + Modules/MGauge/StochEm.cc \ + Modules/MGauge/FundtoHirep.cc \ + Modules/MGauge/StoutSmearing.cc modules_hpp =\ - Modules/MContraction/Baryon.hpp \ - Modules/MContraction/Meson.hpp \ - Modules/MContraction/WeakHamiltonian.hpp \ - Modules/MContraction/WeakHamiltonianNonEye.hpp \ - Modules/MContraction/DiscLoop.hpp \ - Modules/MContraction/WeakNeutral4ptDisc.hpp \ - Modules/MContraction/Gamma3pt.hpp \ - Modules/MContraction/WardIdentity.hpp \ - Modules/MContraction/WeakHamiltonianEye.hpp \ - Modules/MFermion/FreeProp.hpp \ - Modules/MFermion/GaugeProp.hpp \ + Modules/MSource/SeqConserved.hpp \ Modules/MSource/SeqGamma.hpp \ + Modules/MSource/Z2.hpp \ Modules/MSource/Point.hpp \ Modules/MSource/Wall.hpp \ - Modules/MSource/Z2.hpp \ - Modules/MSource/SeqConserved.hpp \ Modules/MSink/Smear.hpp \ Modules/MSink/Point.hpp \ - Modules/MSolver/LocalCoherenceLanczos.hpp \ - Modules/MSolver/RBPrecCG.hpp \ - Modules/MGauge/UnitEm.hpp \ - Modules/MGauge/StoutSmearing.hpp \ - Modules/MGauge/Unit.hpp \ - Modules/MGauge/Random.hpp \ - Modules/MGauge/FundtoHirep.hpp \ - Modules/MGauge/StochEm.hpp \ - Modules/MUtilities/TestSeqGamma.hpp \ - Modules/MUtilities/TestSeqConserved.hpp \ - Modules/MLoop/NoiseLoop.hpp \ - Modules/MScalar/FreeProp.hpp \ - Modules/MScalar/VPCounterTerms.hpp \ - Modules/MScalar/ScalarVP.hpp \ - Modules/MScalar/Scalar.hpp \ - Modules/MScalar/ChargedProp.hpp \ - Modules/MAction/DWF.hpp \ - Modules/MAction/MobiusDWF.hpp \ - Modules/MAction/Wilson.hpp \ - Modules/MAction/WilsonClover.hpp \ - Modules/MAction/ZMobiusDWF.hpp \ - Modules/MAction/ScaledDWF.hpp \ - Modules/MScalarSUN/StochFreeField.hpp \ + Modules/MIO/LoadBinary.hpp \ + Modules/MIO/LoadEigenPack.hpp \ + Modules/MIO/LoadCoarseEigenPack.hpp \ + Modules/MIO/LoadNersc.hpp \ + Modules/MScalarSUN/Utils.hpp \ + Modules/MScalarSUN/Grad.hpp \ + Modules/MScalarSUN/TrPhi.hpp \ Modules/MScalarSUN/TwoPointNPR.hpp \ + Modules/MScalarSUN/TwoPoint.hpp \ + Modules/MScalarSUN/TransProj.hpp \ + Modules/MScalarSUN/TrKinetic.hpp \ + Modules/MScalarSUN/StochFreeField.hpp \ Modules/MScalarSUN/ShiftProbe.hpp \ - Modules/MScalarSUN/Div.hpp \ Modules/MScalarSUN/TimeMomProbe.hpp \ + Modules/MScalarSUN/Div.hpp \ Modules/MScalarSUN/TrMag.hpp \ Modules/MScalarSUN/EMT.hpp \ - Modules/MScalarSUN/TwoPoint.hpp \ - Modules/MScalarSUN/TrPhi.hpp \ - Modules/MScalarSUN/Utils.hpp \ - Modules/MScalarSUN/TransProj.hpp \ - Modules/MScalarSUN/Grad.hpp \ - Modules/MScalarSUN/TrKinetic.hpp \ - Modules/MIO/LoadEigenPack.hpp \ - Modules/MIO/LoadNersc.hpp \ - Modules/MIO/LoadCoarseEigenPack.hpp \ - Modules/MIO/LoadBinary.hpp + Modules/MAction/ZMobiusDWF.hpp \ + Modules/MAction/ScaledDWF.hpp \ + Modules/MAction/Wilson.hpp \ + Modules/MAction/WilsonClover.hpp \ + Modules/MAction/MobiusDWF.hpp \ + Modules/MAction/DWF.hpp \ + Modules/MContraction/WeakHamiltonian.hpp \ + Modules/MContraction/DiscLoop.hpp \ + Modules/MContraction/Meson.hpp \ + Modules/MContraction/WardIdentity.hpp \ + Modules/MContraction/WeakHamiltonianEye.hpp \ + Modules/MContraction/Gamma3pt.hpp \ + Modules/MContraction/WeakHamiltonianNonEye.hpp \ + Modules/MContraction/Baryon.hpp \ + Modules/MContraction/WeakNeutral4ptDisc.hpp \ + Modules/MScalar/ScalarVP.hpp \ + Modules/MScalar/Scalar.hpp \ + Modules/MScalar/FreeProp.hpp \ + Modules/MScalar/ChargedProp.hpp \ + Modules/MScalar/VPCounterTerms.hpp \ + Modules/MUtilities/TestSeqConserved.hpp \ + Modules/MUtilities/TestSeqGamma.hpp \ + Modules/MFermion/FreeProp.hpp \ + Modules/MFermion/GaugeProp.hpp \ + Modules/MSolver/A2AVectors.hpp \ + Modules/MSolver/RBPrecCG.hpp \ + Modules/MSolver/LocalCoherenceLanczos.hpp \ + Modules/MLoop/NoiseLoop.hpp \ + Modules/MGauge/StoutSmearing.hpp \ + Modules/MGauge/StochEm.hpp \ + Modules/MGauge/FundtoHirep.hpp \ + Modules/MGauge/Unit.hpp \ + Modules/MGauge/Random.hpp \ + Modules/MGauge/UnitEm.hpp diff --git a/lib/algorithms/iterative/Deflation.h b/lib/algorithms/iterative/Deflation.h index 316afe90..7c3e8e57 100644 --- a/lib/algorithms/iterative/Deflation.h +++ b/lib/algorithms/iterative/Deflation.h @@ -63,7 +63,7 @@ public: DeflatedGuesser(const std::vector & _evec,const std::vector & _eval) : evec(_evec), eval(_eval) {}; - virtual void operator()(const Field &src,Field &guess) { + virtual void operator()(const Field &src,Field &guess) { guess = zero; assert(evec.size()==eval.size()); auto N = evec.size(); @@ -71,6 +71,7 @@ public: const Field& tmp = evec[i]; axpy(guess,TensorRemove(innerProduct(tmp,src)) / eval[i],tmp,guess); } + guess.checkerboard = src.checkerboard; } }; @@ -101,6 +102,7 @@ public: axpy(guess_coarse,TensorRemove(innerProduct(tmp,src_coarse)) / eval_coarse[i],tmp,guess_coarse); } blockPromote(guess_coarse,guess,subspace); + guess.checkerboard = src.checkerboard; }; }; diff --git a/lib/algorithms/iterative/SchurRedBlack.h b/lib/algorithms/iterative/SchurRedBlack.h index 091330b2..5abc4d9f 100644 --- a/lib/algorithms/iterative/SchurRedBlack.h +++ b/lib/algorithms/iterative/SchurRedBlack.h @@ -95,16 +95,26 @@ namespace Grid { private: OperatorFunction & _HermitianRBSolver; int CBfactorise; + bool subGuess; public: ///////////////////////////////////////////////////// // Wrap the usual normal equations Schur trick ///////////////////////////////////////////////////// - SchurRedBlackStaggeredSolve(OperatorFunction &HermitianRBSolver) : + SchurRedBlackStaggeredSolve(OperatorFunction &HermitianRBSolver, const bool initSubGuess = false) : _HermitianRBSolver(HermitianRBSolver) { CBfactorise=0; + subtractGuess(initSubGuess); }; + void subtractGuess(const bool initSubGuess) + { + subGuess = initSubGuess; + } + bool isSubtractGuess(void) + { + return subGuess; + } template void operator() (Matrix & _Matrix,const Field &in, Field &out){ @@ -150,9 +160,12 @@ namespace Grid { // Call the red-black solver ////////////////////////////////////////////////////////////// std::cout< using SchurRedBlackStagSolve = SchurRedBlackStaggeredSolve; @@ -184,15 +201,25 @@ namespace Grid { private: OperatorFunction & _HermitianRBSolver; int CBfactorise; + bool subGuess; public: ///////////////////////////////////////////////////// // Wrap the usual normal equations Schur trick ///////////////////////////////////////////////////// - SchurRedBlackDiagMooeeSolve(OperatorFunction &HermitianRBSolver,int cb=0) : _HermitianRBSolver(HermitianRBSolver) + SchurRedBlackDiagMooeeSolve(OperatorFunction &HermitianRBSolver,int cb=0, const bool initSubGuess = false) : _HermitianRBSolver(HermitianRBSolver) { CBfactorise=cb; + subtractGuess(initSubGuess); }; + void subtractGuess(const bool initSubGuess) + { + subGuess = initSubGuess; + } + bool isSubtractGuess(void) + { + return subGuess; + } template void operator() (Matrix & _Matrix,const Field &in, Field &out){ ZeroGuesser guess; @@ -236,7 +263,10 @@ namespace Grid { ////////////////////////////////////////////////////////////// std::cout< & _HermitianRBSolver; int CBfactorise; + bool subGuess; public: ///////////////////////////////////////////////////// // Wrap the usual normal equations Schur trick ///////////////////////////////////////////////////// - SchurRedBlackDiagTwoSolve(OperatorFunction &HermitianRBSolver) : + SchurRedBlackDiagTwoSolve(OperatorFunction &HermitianRBSolver, const bool initSubGuess = false) : _HermitianRBSolver(HermitianRBSolver) { - CBfactorise=0; + CBfactorise = 0; + subtractGuess(initSubGuess); }; + void subtractGuess(const bool initSubGuess) + { + subGuess = initSubGuess; + } + bool isSubtractGuess(void) + { + return subGuess; + } template void operator() (Matrix & _Matrix,const Field &in, Field &out){ @@ -322,8 +366,11 @@ namespace Grid { std::cout< & _HermitianRBSolver; int CBfactorise; + bool subGuess; public: ///////////////////////////////////////////////////// // Wrap the usual normal equations Schur trick ///////////////////////////////////////////////////// - SchurRedBlackDiagTwoMixed(LinearFunction &HermitianRBSolver) : + SchurRedBlackDiagTwoMixed(LinearFunction &HermitianRBSolver, const bool initSubGuess = false) : _HermitianRBSolver(HermitianRBSolver) { CBfactorise=0; + subtractGuess(initSubGuess); }; + void subtractGuess(const bool initSubGuess) + { + subGuess = initSubGuess; + } + bool isSubtractGuess(void) + { + return subGuess; + } template void operator() (Matrix & _Matrix,const Field &in, Field &out){ @@ -408,7 +469,10 @@ namespace Grid { // _HermitianRBSolver(_HermOpEO,src_o,sol_o); assert(sol_o.checkerboard==Odd); // _HermitianRBSolver(_HermOpEO,src_o,tmp); assert(tmp.checkerboard==Odd); guess(src_o,tmp); - _HermitianRBSolver(src_o,tmp); assert(tmp.checkerboard==Odd); + Mtmp = tmp; + _HermitianRBSolver(_HermOpEO,src_o,tmp); assert(tmp.checkerboard==Odd); + // Fionn A2A boolean behavioural control + if (subGuess) tmp = tmp-Mtmp; _Matrix.MooeeInv(tmp,sol_o); assert( sol_o.checkerboard ==Odd); /////////////////////////////////////////////////// @@ -422,12 +486,16 @@ namespace Grid { setCheckerboard(out,sol_o); assert( sol_o.checkerboard ==Odd ); // Verify the unprec residual - _Matrix.M(out,resid); - resid = resid-in; - RealD ns = norm2(in); - RealD nr = norm2(resid); + if ( ! subGuess ) { + _Matrix.M(out,resid); + resid = resid-in; + RealD ns = norm2(in); + RealD nr = norm2(resid); - std::cout<::ExportPhysicalFermionSolution(const FermionField &so axpby_ssp_pplus (tmp, 1., tmp , 1., solution5d, 0, Ls-1); ExtractSlice(exported4d, tmp, 0, 0); } +template +void CayleyFermion5D::ExportPhysicalFermionSource(const FermionField &solution5d,FermionField &exported4d) +{ + int Ls = this->Ls; + FermionField tmp(this->FermionGrid()); + tmp = solution5d; + conformable(solution5d._grid,this->FermionGrid()); + conformable(exported4d._grid,this->GaugeGrid()); + axpby_ssp_pplus (tmp, 0., solution5d, 1., solution5d, 0, 0); + axpby_ssp_pminus(tmp, 1., tmp , 1., solution5d, 0, Ls-1); + ExtractSlice(exported4d, tmp, 0, 0); +} +template +void CayleyFermion5D::ImportUnphysicalFermion(const FermionField &input4d,FermionField &imported5d) +{ + int Ls = this->Ls; + FermionField tmp(this->FermionGrid()); + conformable(imported5d._grid,this->FermionGrid()); + conformable(input4d._grid ,this->GaugeGrid()); + tmp = zero; + InsertSlice(input4d, tmp, 0 , 0); + InsertSlice(input4d, tmp, Ls-1, 0); + axpby_ssp_pplus (tmp, 0., tmp, 1., tmp, 0, 0); + axpby_ssp_pminus(tmp, 0., tmp, 1., tmp, Ls-1, Ls-1); + imported5d=tmp; +} + template void CayleyFermion5D::ImportPhysicalFermionSource(const FermionField &input4d,FermionField &imported5d) { diff --git a/lib/qcd/action/fermion/CayleyFermion5D.h b/lib/qcd/action/fermion/CayleyFermion5D.h index b370b09d..3bf2a8b6 100644 --- a/lib/qcd/action/fermion/CayleyFermion5D.h +++ b/lib/qcd/action/fermion/CayleyFermion5D.h @@ -89,7 +89,9 @@ namespace Grid { virtual void Dminus(const FermionField &psi, FermionField &chi); virtual void DminusDag(const FermionField &psi, FermionField &chi); virtual void ExportPhysicalFermionSolution(const FermionField &solution5d,FermionField &exported4d); + virtual void ExportPhysicalFermionSource(const FermionField &solution5d, FermionField &exported4d); virtual void ImportPhysicalFermionSource(const FermionField &input4d,FermionField &imported5d); + virtual void ImportUnphysicalFermion(const FermionField &solution5d, FermionField &exported4d); ///////////////////////////////////////////////////// // Instantiate different versions depending on Impl diff --git a/lib/qcd/action/fermion/FermionOperator.h b/lib/qcd/action/fermion/FermionOperator.h index 77fdbec5..dc1ab924 100644 --- a/lib/qcd/action/fermion/FermionOperator.h +++ b/lib/qcd/action/fermion/FermionOperator.h @@ -162,10 +162,18 @@ namespace Grid { { imported = input; }; + virtual void ImportUnphysicalFermion(const FermionField &input,FermionField &imported) + { + imported=input; + }; virtual void ExportPhysicalFermionSolution(const FermionField &solution,FermionField &exported) { exported=solution; }; + virtual void ExportPhysicalFermionSource(const FermionField &solution,FermionField &exported) + { + exported=solution; + }; }; } From e3a309a73f37cadad41b031a13faae02a6f6b915 Mon Sep 17 00:00:00 2001 From: paboyle Date: Tue, 31 Jul 2018 00:35:17 +0100 Subject: [PATCH 216/267] Eigen happiness --- bootstrap.sh | 2 +- configure.ac | 4 +- .../Hadrons/Modules/MContraction/A2AMeson.hpp | 2 +- .../Modules/MContraction/A2AMesonField.cc | 8 + .../Modules/MContraction/A2AMesonField.hpp | 375 ++++++++++++++++++ extras/Hadrons/modules.inc | 1 + lib/Grid_Eigen_Dense.h | 2 +- lib/Makefile.am | 2 +- lib/qcd/action/fermion/WilsonCloverFermion.cc | 2 +- scripts/update_eigen.sh | 45 ++- 10 files changed, 428 insertions(+), 15 deletions(-) create mode 100644 extras/Hadrons/Modules/MContraction/A2AMesonField.cc create mode 100644 extras/Hadrons/Modules/MContraction/A2AMesonField.hpp diff --git a/bootstrap.sh b/bootstrap.sh index bdf748df..12d257f1 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -EIGEN_URL='http://bitbucket.org/eigen/eigen/get/3.3.3.tar.bz2' +EIGEN_URL='http://bitbucket.org/eigen/eigen/get/3.3.5.tar.bz2' echo "-- deploying Eigen source..." wget ${EIGEN_URL} --no-check-certificate && ./scripts/update_eigen.sh `basename ${EIGEN_URL}` && rm `basename ${EIGEN_URL}` diff --git a/configure.ac b/configure.ac index 819253a0..1802033f 100644 --- a/configure.ac +++ b/configure.ac @@ -480,8 +480,8 @@ GRID_LIBS=$LIBS GRID_SHORT_SHA=`git rev-parse --short HEAD` GRID_SHA=`git rev-parse HEAD` GRID_BRANCH=`git rev-parse --abbrev-ref HEAD` -AM_CXXFLAGS="-I${abs_srcdir}/include $AM_CXXFLAGS" -AM_CFLAGS="-I${abs_srcdir}/include $AM_CFLAGS" +AM_CXXFLAGS="-I${abs_srcdir}/include -I${abs_srcdir}/EigenDist/ -I${abs_srcdir}/EigenDist/unsupported $AM_CXXFLAGS" +AM_CFLAGS="-I${abs_srcdir}/include -I${abs_srcdir}/EigenDist/ -I${abs_srcdir}/EigenDist/unsupported $AM_CFLAGS" AM_LDFLAGS="-L${cwd}/lib $AM_LDFLAGS" AC_SUBST([AM_CFLAGS]) AC_SUBST([AM_CXXFLAGS]) diff --git a/extras/Hadrons/Modules/MContraction/A2AMeson.hpp b/extras/Hadrons/Modules/MContraction/A2AMeson.hpp index a13336ef..2cfd6dcb 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMeson.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMeson.hpp @@ -137,7 +137,7 @@ void TA2AMeson::execute(void) result.corr.resize(nt); int Nl = par().Nl; - int N = par().N; + int N = par().N; LOG(Message) << "N for A2A cont: " << N << std::endl; envGetTmp(std::vector, MF_x); diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.cc b/extras/Hadrons/Modules/MContraction/A2AMesonField.cc new file mode 100644 index 00000000..5867b1dd --- /dev/null +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.cc @@ -0,0 +1,8 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MContraction; + +template class Grid::Hadrons::MContraction::TA2AMesonField; +template class Grid::Hadrons::MContraction::TA2AMesonField; diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp new file mode 100644 index 00000000..8ea7d9d7 --- /dev/null +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -0,0 +1,375 @@ +#ifndef Hadrons_MContraction_A2AMesonField_hpp_ +#define Hadrons_MContraction_A2AMesonField_hpp_ + +#include +#include +#include +#include + +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * A2AMesonField * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MContraction) + +typedef std::pair GammaPair; + + +class A2AMesonFieldPar : Serializable +{ + public: + GRID_SERIALIZABLE_CLASS_MEMBERS(A2AMesonFieldPar, + int, cacheBlock, + int, schurBlock, + int, N, + int, Nl, + std::string, A2A, + std::string, output); +}; + +template +class TA2AMesonField : public Module +{ + public: + FERM_TYPE_ALIASES(FImpl, ); + SOLVER_TYPE_ALIASES(FImpl, ); + + typedef A2AModesSchurDiagTwo A2ABase; + + public: + // constructor + TA2AMesonField(const std::string name); + // destructor + virtual ~TA2AMesonField(void){}; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); + + // Arithmetic help. Move to Grid?? + virtual void MesonField(Eigen::Tensor &mat, + const std::vector &lhs, + const std::vector &rhs, + std::vector gammas, + const std::vector &mom, + int orthogdim) ; + +}; + +MODULE_REGISTER(A2AMesonField, ARG(TA2AMesonField), MContraction); +MODULE_REGISTER(ZA2AMesonField, ARG(TA2AMesonField), MContraction); + +/****************************************************************************** +* TA2AMesonField implementation * +******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TA2AMesonField::TA2AMesonField(const std::string name) + : Module(name) +{ +} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TA2AMesonField::getInput(void) +{ + std::vector in = {par().A2A + "_class"}; + in.push_back(par().A2A + "_w_high_4d"); + in.push_back(par().A2A + "_v_high_4d"); + + return in; +} + +template +std::vector TA2AMesonField::getOutput(void) +{ + std::vector out = {}; + + return out; +} + + +// setup /////////////////////////////////////////////////////////////////////// +template +void TA2AMesonField::setup(void) +{ + auto &a2a = envGet(A2ABase, par().A2A + "_class"); + int nt = env().getDim(Tp); + int Nl = par().Nl; + int N = par().N; + int Ls_ = env().getObjectLs(par().A2A + "_class"); + + // Four D fields + envTmp(std::vector, "w", 1, par().schurBlock, FermionField(env().getGrid(1))); + envTmp(std::vector, "v", 1, par().schurBlock, FermionField(env().getGrid(1))); + + // 5D tmp + envTmpLat(FermionField, "tmp_5d", Ls_); +} + + +////////////////////////////////////////////////////////////////////////////////// +// Cache blocked arithmetic routine +// Could move to Grid ??? +////////////////////////////////////////////////////////////////////////////////// +template +void TA2AMesonField::MesonField(Eigen::Tensor &mat, + const std::vector &lhs, + const std::vector &rhs, + std::vector gammas, + const std::vector &mom, + int orthogdim) +{ + typedef typename FImpl::SiteSpinor vobj; + + typedef typename vobj::scalar_object sobj; + typedef typename vobj::scalar_type scalar_type; + typedef typename vobj::vector_type vector_type; + + typedef iSpinMatrix SpinMatrix_v; + typedef iSpinMatrix SpinMatrix_s; + + int Lblock = lhs.size(); + int Rblock = rhs.size(); + + GridBase *grid = lhs[0]._grid; + + const int Nd = grid->_ndimension; + const int Nsimd = grid->Nsimd(); + + int Nt = grid->GlobalDimensions()[orthogdim]; + int Ngamma = gammas.size(); + int Nmom = mom.size(); + + int fd=grid->_fdimensions[orthogdim]; + int ld=grid->_ldimensions[orthogdim]; + int rd=grid->_rdimensions[orthogdim]; + + // will locally sum vectors first + // sum across these down to scalars + // splitting the SIMD + int MFrvol = rd*Lblock*Rblock*Nmom; + int MFlvol = ld*Lblock*Rblock*Nmom; + + Vector lvSum(MFrvol); + parallel_for (int r = 0; r < MFrvol; r++){ + lvSum[r] = zero; + } + + Vector lsSum(MFlvol); + parallel_for (int r = 0; r < MFlvol; r++){ + lsSum[r]=scalar_type(0.0); + } + + int e1= grid->_slice_nblock[orthogdim]; + int e2= grid->_slice_block [orthogdim]; + int stride=grid->_slice_stride[orthogdim]; + + std::cout << GridLogMessage << " Entering first parallel loop "<_ostride[orthogdim]; // base offset for start of plane + + for(int n=0;n > phase(Nmom); + + for(int m=0;m icoor(Nd); + std::vector extracted(Nsimd); + + + for(int i=0;iiCoorFromIindex(icoor,idx); + + int ldx = rt+icoor[orthogdim]*rd; + + int ij_ldx = m+Nmom*i+Nmom*Lblock*j+Nmom*Lblock*Rblock*ldx; + + lsSum[ij_ldx]=lsSum[ij_ldx]+extracted[idx]; + + } + }}} + } + + assert(mat.dimension(0) == Nt); + assert(mat.dimension(1) == Nmom); + assert(mat.dimension(2) == Ngamma); + assert(mat.dimension(3) == Lblock); + assert(mat.dimension(4) == Rblock); + mat.setZero(); + parallel_for(int t=0;t_processor_coor[orthogdim]){ + for(int i=0;iGlobalSumVector(&mat(0,0,0,0,0),Nmom*Rblock*Lblock*Nt*Ngamma); + + return; +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TA2AMesonField::execute(void) +{ + LOG(Message) << "Computing A2A meson field" << std::endl; + + auto &a2a = envGet(A2ABase, par().A2A + "_class"); + + // 2+6+4+4 = 16 gammas + // Ordering defined here + std::vector gammas ( { + Gamma::Algebra::Identity, + Gamma::Algebra::Gamma5, + Gamma::Algebra::GammaX, + Gamma::Algebra::GammaY, + Gamma::Algebra::GammaZ, + Gamma::Algebra::GammaT, + Gamma::Algebra::GammaXGamma5, + Gamma::Algebra::GammaYGamma5, + Gamma::Algebra::GammaZGamma5, + Gamma::Algebra::GammaTGamma5, + Gamma::Algebra::SigmaXY, + Gamma::Algebra::SigmaXZ, + Gamma::Algebra::SigmaXT, + Gamma::Algebra::SigmaYZ, + Gamma::Algebra::SigmaYT, + Gamma::Algebra::SigmaZT + }); + + /////////////////////////////////////////////// + // Square assumption for now Nl = Nr = N + /////////////////////////////////////////////// + int nt = env().getDim(Tp); + int N = par().N; + int Nl = par().Nl; + int ngamma = gammas.size(); + + /////////////////////////////////////////////// + // Momentum setup + /////////////////////////////////////////////// + std::vector phases(1,env().getGrid(1)); + int nmom = phases.size(); + phases[0] = Complex(1.0); + + Eigen::Tensor mesonField (nmom,ngamma,nt,N,N); + + LOG(Message) << "N = Nh+Nl for A2A MesonField is " << N << std::endl; + + envGetTmp(std::vector, w); + envGetTmp(std::vector, v); + envGetTmp(FermionField, tmp_5d); + + LOG(Message) << "Finding v and w vectors for N = " << N << std::endl; + + int schurBlock = par().schurBlock; + int cacheBlock = par().cacheBlock; + for(int i_base=0;i_base mesonFieldBlocked(nmom,ngamma,nt,N_i,N_j); + + MesonField(mesonFieldBlocked, w, v, gammas, phases,Tp); + + /////////////////////////////////////////////////////////////// + // Copy out to full meson field tensor + /////////////////////////////////////////////////////////////// + for(int ii =0;ii< N_i;ii++) { + for(int jj =0;jj< N_j;jj++) { + for(int m =0;m< nmom;m++) { + for(int g =0;g< ngamma;g++) { + for(int t =0;t< nt;t++) { + mesonField(m,g,t,i_base+ii,j_base+jj) = mesonFieldBlocked(m,g,t,ii,jj); + }}}}} + + LOG(Message) << "Contracted MesonFields " < +#include #if defined __GNUC__ #pragma GCC diagnostic pop #endif diff --git a/lib/Makefile.am b/lib/Makefile.am index dc33e7cf..6c94e2d6 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -34,4 +34,4 @@ HFILES += $(extra_headers) libGrid_a_SOURCES = $(CCFILES) libGrid_adir = $(pkgincludedir) -nobase_dist_pkginclude_HEADERS = $(HFILES) $(eigen_files) Config.h +nobase_dist_pkginclude_HEADERS = $(HFILES) $(eigen_files) $(eigen_unsupp_files) Config.h diff --git a/lib/qcd/action/fermion/WilsonCloverFermion.cc b/lib/qcd/action/fermion/WilsonCloverFermion.cc index 3c082446..ed06c673 100644 --- a/lib/qcd/action/fermion/WilsonCloverFermion.cc +++ b/lib/qcd/action/fermion/WilsonCloverFermion.cc @@ -27,7 +27,7 @@ *************************************************************************************/ /* END LEGAL */ #include -#include +//#include #include namespace Grid diff --git a/scripts/update_eigen.sh b/scripts/update_eigen.sh index d1338e4d..442a2477 100755 --- a/scripts/update_eigen.sh +++ b/scripts/update_eigen.sh @@ -7,13 +7,42 @@ fi ARC=$1 INITDIR=`pwd` -rm -rf lib/Eigen -ARCDIR=`tar -tf ${ARC} | head -n1 | sed -e 's@/.*@@'` + +################## +#untar +################## + tar -xf ${ARC} -cd ${ARCDIR} -(tar -cf - Eigen --exclude='*.txt' 2>/dev/null) | tar -xf - -C ../lib/ -cd ../lib -echo 'eigen_files =\' > Eigen.inc -find Eigen -type f -print | sed 's/^/ /;$q;s/$/ \\/' >> Eigen.inc +ARCDIR=`tar -tf ${ARC} | head -n1 | sed -e 's@/.*@@'` +rm -f ${ARC} + +############################### +# Link to a deterministic name +############################### + +mv ${ARCDIR} Eigen + +# Eigen source headers +cd ${INITDIR}/Eigen + +echo 'eigen_files =\' > ${INITDIR}/lib/Eigen.inc +find Eigen -name "*.h" -print | sed 's/^/ /;$q;s/$/ \\/' >> ${INITDIR}/lib/Eigen.inc + cd ${INITDIR} -rm -rf ${ARCDIR} +echo 'eigen_unsupp_files =\' >> ${INITDIR}/lib/Eigen.inc +find Eigen/unsupported/Eigen -name "*.h" -print | sed 's/^/ /;$q;s/$/ \\/' >> ${INITDIR}/lib/Eigen.inc + + + +################################### +# back to home +################################### +cd ${INITDIR} + +######################################### +# Make grid includes happy +######################################### +mkdir ${INITDIR}/lib/Eigen/ + +ln -s ${INITDIR}/Eigen/Eigen/* ${INITDIR}/lib/Eigen/ +ln -s ${INITDIR}/Eigen/unsupported ${INITDIR}/lib/Eigen/ From e036800261803d3c3adc9ba988f4f9fd7ab68543 Mon Sep 17 00:00:00 2001 From: paboyle Date: Tue, 31 Jul 2018 01:08:42 +0100 Subject: [PATCH 217/267] Eigen fix --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 1802033f..f5622e46 100644 --- a/configure.ac +++ b/configure.ac @@ -480,8 +480,8 @@ GRID_LIBS=$LIBS GRID_SHORT_SHA=`git rev-parse --short HEAD` GRID_SHA=`git rev-parse HEAD` GRID_BRANCH=`git rev-parse --abbrev-ref HEAD` -AM_CXXFLAGS="-I${abs_srcdir}/include -I${abs_srcdir}/EigenDist/ -I${abs_srcdir}/EigenDist/unsupported $AM_CXXFLAGS" -AM_CFLAGS="-I${abs_srcdir}/include -I${abs_srcdir}/EigenDist/ -I${abs_srcdir}/EigenDist/unsupported $AM_CFLAGS" +AM_CXXFLAGS="-I${abs_srcdir}/include -I${abs_srcdir}/Eigen/ -I${abs_srcdir}/Eigen/unsupported $AM_CXXFLAGS" +AM_CFLAGS="-I${abs_srcdir}/include -I${abs_srcdir}/Eigen/ -I${abs_srcdir}/Eigen/unsupported $AM_CFLAGS" AM_LDFLAGS="-L${cwd}/lib $AM_LDFLAGS" AC_SUBST([AM_CFLAGS]) AC_SUBST([AM_CXXFLAGS]) From 891ad66eab29735c4400c0842e0b916dc1f5208c Mon Sep 17 00:00:00 2001 From: fionnoh Date: Tue, 31 Jul 2018 11:26:07 +0100 Subject: [PATCH 218/267] Included changes to Hadrons RBPrecCG solver needed for subtraction of guess --- extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 25 ++++++++++++--------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index e9b3f00d..347371a3 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -118,7 +118,7 @@ std::vector TRBPrecCG::getReference(void) template std::vector TRBPrecCG::getOutput(void) { - std::vector out = {getName()}; + std::vector out = {getName(), getName() + "_subtract"}; return out; } @@ -158,7 +158,7 @@ void TRBPrecCG::setup(void) guesser.reset(new CoarseGuesser(epack.evec, epack.evecCoarse, epack.evalCoarse)); } - catch (Exceptions::ObjectDefinition &) + catch (Exceptions::Definition &e) { auto &epack = envGet(EPack, par().eigenPack); @@ -168,19 +168,22 @@ void TRBPrecCG::setup(void) guesser.reset(new FineGuesser(epack.evec, epack.eval)); } } - auto solver = [&mat, guesser, this](FermionField &sol, - const FermionField &source) - { - ConjugateGradient cg(par().residual, - par().maxIteration); - HADRONS_DEFAULT_SCHUR_SOLVE schurSolver(cg); - - schurSolver(mat, source, sol, *guesser); + auto makeSolver = [&mat, guesser, this](bool subGuess) { + return [&mat, guesser, subGuess, this](FermionField &sol, + const FermionField &source) { + ConjugateGradient cg(par().residual, + par().maxIteration); + HADRONS_DEFAULT_SCHUR_SOLVE schurSolver(cg); + schurSolver.subtractGuess(subGuess); + schurSolver(mat, source, sol, *guesser); + }; }; + auto solver = makeSolver(false); envCreate(Solver, getName(), Ls, solver, mat); + auto solver_subtract = makeSolver(true); + envCreate(Solver, getName() + "_subtract", Ls, solver_subtract, mat); } - // execution /////////////////////////////////////////////////////////////////// template void TRBPrecCG::execute(void) From 142f7b0c8620d50e19b0778824ef3b569a6fd22c Mon Sep 17 00:00:00 2001 From: Peter Boyle Date: Tue, 31 Jul 2018 15:58:02 +0100 Subject: [PATCH 219/267] Updated the A2A Meson Field module --- extras/Hadrons/Modules.hpp | 97 ++++----- .../Modules/MContraction/A2AMesonField.hpp | 178 +++++++++++------ extras/Hadrons/modules.inc | 189 +++++++++--------- 3 files changed, 262 insertions(+), 202 deletions(-) diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 58e9fec3..bcf6c7c4 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,60 +1,61 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include #include +#include +#include +#include +#include #include #include +#include +#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include #include +#include +#include #include #include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include -#include -#include -#include -#include -#include -#include -#include +#include diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index 8ea7d9d7..8da5e9f9 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -24,6 +24,7 @@ class A2AMesonFieldPar : Serializable GRID_SERIALIZABLE_CLASS_MEMBERS(A2AMesonFieldPar, int, cacheBlock, int, schurBlock, + int, Nmom, int, N, int, Nl, std::string, A2A, @@ -54,8 +55,8 @@ class TA2AMesonField : public Module // Arithmetic help. Move to Grid?? virtual void MesonField(Eigen::Tensor &mat, - const std::vector &lhs, - const std::vector &rhs, + const LatticeFermion *lhs, + const LatticeFermion *rhs, std::vector gammas, const std::vector &mom, int orthogdim) ; @@ -120,8 +121,8 @@ void TA2AMesonField::setup(void) ////////////////////////////////////////////////////////////////////////////////// template void TA2AMesonField::MesonField(Eigen::Tensor &mat, - const std::vector &lhs, - const std::vector &rhs, + const LatticeFermion *lhs_wi, + const LatticeFermion *rhs_vj, std::vector gammas, const std::vector &mom, int orthogdim) @@ -135,10 +136,10 @@ void TA2AMesonField::MesonField(Eigen::Tensor &mat, typedef iSpinMatrix SpinMatrix_v; typedef iSpinMatrix SpinMatrix_s; - int Lblock = lhs.size(); - int Rblock = rhs.size(); + int Lblock = mat.dimension(3); + int Rblock = mat.dimension(4); - GridBase *grid = lhs[0]._grid; + GridBase *grid = lhs_wi[0]._grid; const int Nd = grid->_ndimension; const int Nsimd = grid->Nsimd(); @@ -170,16 +171,14 @@ void TA2AMesonField::MesonField(Eigen::Tensor &mat, int e1= grid->_slice_nblock[orthogdim]; int e2= grid->_slice_block [orthogdim]; int stride=grid->_slice_stride[orthogdim]; - - std::cout << GridLogMessage << " Entering first parallel loop "<_ostride[orthogdim]; // base offset for start of plane - for(int n=0;n_ostride[orthogdim]; // base offset for start of plane + int ss= so+n*stride+b; Vector > phase(Nmom); @@ -188,11 +187,11 @@ void TA2AMesonField::MesonField(Eigen::Tensor &mat, for(int i=0;i::MesonField(Eigen::Tensor &mat, }} // After getting the sitewise product do the mom phase loop + int base = Nmom*i+Nmom*Lblock*j+Nmom*Lblock*Rblock*r; for ( int m=0;m::MesonField(Eigen::Tensor &mat, std::vector icoor(Nd); std::vector extracted(Nsimd); - for(int i=0;i::MesonField(Eigen::Tensor &mat, }}} } - assert(mat.dimension(0) == Nt); - assert(mat.dimension(1) == Nmom); - assert(mat.dimension(2) == Ngamma); - assert(mat.dimension(3) == Lblock); - assert(mat.dimension(4) == Rblock); - mat.setZero(); - parallel_for(int t=0;t::MesonField(Eigen::Tensor &mat, for(int m=0;mGlobalSumVector(&mat(0,0,0,0,0),Nmom*Rblock*Lblock*Nt*Ngamma); - + grid->GlobalSumVector(&mat(0,0,0,0,0),Nmom*Ngamma*Nt*Lblock*Rblock); return; } @@ -280,8 +277,8 @@ void TA2AMesonField::execute(void) // 2+6+4+4 = 16 gammas // Ordering defined here std::vector gammas ( { - Gamma::Algebra::Identity, Gamma::Algebra::Gamma5, + Gamma::Algebra::Identity, Gamma::Algebra::GammaX, Gamma::Algebra::GammaY, Gamma::Algebra::GammaZ, @@ -306,15 +303,20 @@ void TA2AMesonField::execute(void) int Nl = par().Nl; int ngamma = gammas.size(); + int schurBlock = par().schurBlock; + int cacheBlock = par().cacheBlock; + int nmom = par().Nmom; + /////////////////////////////////////////////// // Momentum setup /////////////////////////////////////////////// - std::vector phases(1,env().getGrid(1)); - int nmom = phases.size(); - phases[0] = Complex(1.0); + GridBase *grid = env().getGrid(1); + std::vector phases(nmom,grid); + for(int m=0;m mesonField (nmom,ngamma,nt,N,N); - LOG(Message) << "N = Nh+Nl for A2A MesonField is " << N << std::endl; envGetTmp(std::vector, w); @@ -323,48 +325,104 @@ void TA2AMesonField::execute(void) LOG(Message) << "Finding v and w vectors for N = " << N << std::endl; - int schurBlock = par().schurBlock; - int cacheBlock = par().cacheBlock; - for(int i_base=0;i_base mesonFieldBlocked(nmom,ngamma,nt,N_i,N_j); + for(int ii=0;ii mesonFieldBlocked(nmom,ngamma,nt,N_iii,N_jjj); - LOG(Message) << "Contracted MesonFields " < + ///////////////////////////////////////////////////////////////////////// + std::vector corr(nt,ComplexD(0.0)); + + for(int i=0;i Date: Wed, 1 Aug 2018 08:27:27 +0100 Subject: [PATCH 220/267] Optimised the MesonField a bit more --- .../Modules/MContraction/A2AMesonField.hpp | 129 ++++++++++++------ 1 file changed, 88 insertions(+), 41 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index 8da5e9f9..aa386481 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -59,8 +59,11 @@ class TA2AMesonField : public Module const LatticeFermion *rhs, std::vector gammas, const std::vector &mom, - int orthogdim) ; - + int orthogdim, + double &t0, + double &t1, + double &t2, + double &t3); }; MODULE_REGISTER(A2AMesonField, ARG(TA2AMesonField), MContraction); @@ -121,11 +124,15 @@ void TA2AMesonField::setup(void) ////////////////////////////////////////////////////////////////////////////////// template void TA2AMesonField::MesonField(Eigen::Tensor &mat, - const LatticeFermion *lhs_wi, - const LatticeFermion *rhs_vj, - std::vector gammas, - const std::vector &mom, - int orthogdim) + const LatticeFermion *lhs_wi, + const LatticeFermion *rhs_vj, + std::vector gammas, + const std::vector &mom, + int orthogdim, + double &t0, + double &t1, + double &t2, + double &t3) { typedef typename FImpl::SiteSpinor vobj; @@ -172,31 +179,31 @@ void TA2AMesonField::MesonField(Eigen::Tensor &mat, int e2= grid->_slice_block [orthogdim]; int stride=grid->_slice_stride[orthogdim]; + t0-=usecond(); // Nested parallelism would be ok + // Wasting cores here. Test case r parallel_for(int r=0;r_ostride[orthogdim]; // base offset for start of plane + for(int n=0;n_ostride[orthogdim]; // base offset for start of plane - int ss= so+n*stride+b; - Vector > phase(Nmom); - - for(int m=0;m::MesonField(Eigen::Tensor &mat, } } } + t0+=usecond(); + // Sum across simd lanes in the plane, breaking out orthog dir. + t1-=usecond(); parallel_for(int rt=0;rt icoor(Nd); @@ -240,30 +250,54 @@ void TA2AMesonField::MesonField(Eigen::Tensor &mat, } }}} } + t1+=usecond(); assert(mat.dimension(0) == Nmom); assert(mat.dimension(1) == Ngamma); assert(mat.dimension(2) == Nt); - mat.setZero();// unthreaded alert - for(int t=0;t_processors[orthogdim]; + int pc = grid->_processor_coor[orthogdim]; + parallel_for_nest2(int lt=0;lt_processor_coor[orthogdim]){ - for(int i=0;iGlobalSumVector(&mat(0,0,0,0,0),Nmom*Ngamma*Nt*Lblock*Rblock); - return; + t3+=usecond(); } // execution /////////////////////////////////////////////////////////////////// @@ -299,6 +333,9 @@ void TA2AMesonField::execute(void) // Square assumption for now Nl = Nr = N /////////////////////////////////////////////// int nt = env().getDim(Tp); + int nx = env().getDim(Xp); + int ny = env().getDim(Yp); + int nz = env().getDim(Zp); int N = par().N; int Nl = par().Nl; int ngamma = gammas.size(); @@ -331,9 +368,17 @@ void TA2AMesonField::execute(void) // iii,jjj are loops within cacheBlock // Total index is sum of these i+ii+iii etc... ////////////////////////////////////////////////////////////////////////// - + + double flops = 0.0; + double bytes = 0.0; + double vol = nx*ny*nz*nt; double t_schur=0; double t_contr=0; + double t_int_0=0; + double t_int_1=0; + double t_int_2=0; + double t_int_3=0; + double t0 = usecond(); int N_i = N; int N_j = N; @@ -367,13 +412,18 @@ void TA2AMesonField::execute(void) Eigen::Tensor mesonFieldBlocked(nmom,ngamma,nt,N_iii,N_jjj); t_contr-=usecond(); - MesonField(mesonFieldBlocked, &w[ii], &v[jj], gammas, phases,Tp); + MesonField(mesonFieldBlocked, &w[ii], &v[jj], gammas, phases,Tp, + t_int_0,t_int_1,t_int_2,t_int_3); t_contr+=usecond(); + flops += vol * ( 2 * 8.0 + 6.0 + 8.0*nmom) * N_iii*N_jjj*ngamma; + + bytes += vol * (12.0 * sizeof(Complex) ) * N_iii*N_jjj + + vol * ( 2.0 * sizeof(Complex) *nmom ) * N_iii*N_jjj* ngamma; /////////////////////////////////////////////////////////////// // Copy back to full meson field tensor /////////////////////////////////////////////////////////////// - for(int iii=0;iii< N_iii;iii++) { + parallel_for_nest2(int iii=0;iii< N_iii;iii++) { for(int jjj=0;jjj< N_jjj;jjj++) { for(int m =0;m< nmom;m++) { for(int g =0;g< ngamma;g++) { @@ -386,22 +436,19 @@ void TA2AMesonField::execute(void) }} - /* - for(int i=0;iNodeCount(); double t1 = usecond(); LOG(Message) << " Contraction of MesonFields took "<<(t1-t0)/1.0e6<< " seconds " << std::endl; LOG(Message) << " Schur "<<(t_schur)/1.0e6<< " seconds " << std::endl; LOG(Message) << " Contr "<<(t_contr)/1.0e6<< " seconds " << std::endl; + LOG(Message) << " Intern0 "<<(t_int_0)/1.0e6<< " seconds " << std::endl; + LOG(Message) << " Intern1 "<<(t_int_1)/1.0e6<< " seconds " << std::endl; + LOG(Message) << " Intern2 "<<(t_int_2)/1.0e6<< " seconds " << std::endl; + LOG(Message) << " Intern3 "<<(t_int_3)/1.0e6<< " seconds " << std::endl; + double t_kernel = t_int_0 + t_int_1; + LOG(Message) << " Arith "< Date: Fri, 3 Aug 2018 15:15:54 +0100 Subject: [PATCH 221/267] Included Peter's A2AMeson field and Eigen changes --- extras/Hadrons/Makefile.am | 1 - .../Hadrons/Modules/MContraction/A2AMeson.cc | 8 - .../Hadrons/Modules/MContraction/A2AMeson.hpp | 207 -------------- .../Modules/MContraction/MesonFieldGamma.cc | 8 - .../Modules/MContraction/MesonFieldGamma.hpp | 269 ------------------ 5 files changed, 493 deletions(-) delete mode 100644 extras/Hadrons/Modules/MContraction/A2AMeson.cc delete mode 100644 extras/Hadrons/Modules/MContraction/A2AMeson.hpp delete mode 100644 extras/Hadrons/Modules/MContraction/MesonFieldGamma.cc delete mode 100644 extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp diff --git a/extras/Hadrons/Makefile.am b/extras/Hadrons/Makefile.am index abfcf9a8..7240be82 100644 --- a/extras/Hadrons/Makefile.am +++ b/extras/Hadrons/Makefile.am @@ -15,7 +15,6 @@ libHadrons_adir = $(pkgincludedir)/Hadrons nobase_libHadrons_a_HEADERS = \ $(modules_hpp) \ AllToAllVectors.hpp \ - AllToAllReduction.hpp \ Application.hpp \ EigenPack.hpp \ Environment.hpp \ diff --git a/extras/Hadrons/Modules/MContraction/A2AMeson.cc b/extras/Hadrons/Modules/MContraction/A2AMeson.cc deleted file mode 100644 index 5e5c122b..00000000 --- a/extras/Hadrons/Modules/MContraction/A2AMeson.cc +++ /dev/null @@ -1,8 +0,0 @@ -#include - -using namespace Grid; -using namespace Hadrons; -using namespace MContraction; - -template class Grid::Hadrons::MContraction::TA2AMeson; -template class Grid::Hadrons::MContraction::TA2AMeson; \ No newline at end of file diff --git a/extras/Hadrons/Modules/MContraction/A2AMeson.hpp b/extras/Hadrons/Modules/MContraction/A2AMeson.hpp deleted file mode 100644 index 2cfd6dcb..00000000 --- a/extras/Hadrons/Modules/MContraction/A2AMeson.hpp +++ /dev/null @@ -1,207 +0,0 @@ -#ifndef Hadrons_MContraction_A2AMeson_hpp_ -#define Hadrons_MContraction_A2AMeson_hpp_ - -#include -#include -#include -#include - -BEGIN_HADRONS_NAMESPACE - -/****************************************************************************** - * A2AMeson * - ******************************************************************************/ -BEGIN_MODULE_NAMESPACE(MContraction) - -typedef std::pair GammaPair; - -class A2AMesonPar : Serializable -{ - public: - GRID_SERIALIZABLE_CLASS_MEMBERS(A2AMesonPar, - int, Nl, - int, N, - std::string, A2A1, - std::string, A2A2, - std::string, gammas, - std::string, output); -}; - -template -class TA2AMeson : public Module -{ - public: - FERM_TYPE_ALIASES(FImpl, ); - SOLVER_TYPE_ALIASES(FImpl, ); - - typedef A2AModesSchurDiagTwo A2ABase; - - class Result : Serializable - { - public: - GRID_SERIALIZABLE_CLASS_MEMBERS(Result, - Gamma::Algebra, gamma_snk, - Gamma::Algebra, gamma_src, - std::vector, corr); - }; - - public: - // constructor - TA2AMeson(const std::string name); - // destructor - virtual ~TA2AMeson(void){}; - // dependency relation - virtual std::vector getInput(void); - virtual std::vector getOutput(void); - virtual void parseGammaString(std::vector &gammaList); - // setup - virtual void setup(void); - // execution - virtual void execute(void); -}; - -MODULE_REGISTER(A2AMeson, ARG(TA2AMeson), MContraction); -MODULE_REGISTER(ZA2AMeson, ARG(TA2AMeson), MContraction); - -/****************************************************************************** -* TA2AMeson implementation * -******************************************************************************/ -// constructor ///////////////////////////////////////////////////////////////// -template -TA2AMeson::TA2AMeson(const std::string name) - : Module(name) -{ -} - -// dependencies/products /////////////////////////////////////////////////////// -template -std::vector TA2AMeson::getInput(void) -{ - std::vector in = {par().A2A1 + "_class", par().A2A2 + "_class"}; - in.push_back(par().A2A1 + "_w_high_4d"); - in.push_back(par().A2A2 + "_v_high_4d"); - - return in; -} - -template -std::vector TA2AMeson::getOutput(void) -{ - std::vector out = {}; - - return out; -} - -template -void TA2AMeson::parseGammaString(std::vector &gammaList) -{ - gammaList.clear(); - // Parse individual contractions from input string. - gammaList = strToVec(par().gammas); -} - -// setup /////////////////////////////////////////////////////////////////////// -template -void TA2AMeson::setup(void) -{ - int nt = env().getDim(Tp); - int N = par().N; - - int Ls_ = env().getObjectLs(par().A2A1 + "_class"); - - envTmp(std::vector, "w1", 1, N, FermionField(env().getGrid(1))); - envTmp(std::vector, "v1", 1, N, FermionField(env().getGrid(1))); - envTmpLat(FermionField, "tmpv_5d", Ls_); - envTmpLat(FermionField, "tmpw_5d", Ls_); - - envTmp(std::vector, "MF_x", 1, nt); - envTmp(std::vector, "MF_y", 1, nt); - envTmp(std::vector, "tmp", 1, nt); -} - -// execution /////////////////////////////////////////////////////////////////// -template -void TA2AMeson::execute(void) -{ - LOG(Message) << "Computing A2A meson contractions" << std::endl; - - Result result; - Gamma g5(Gamma::Algebra::Gamma5); - std::vector gammaList; - int nt = env().getDim(Tp); - - parseGammaString(gammaList); - - result.gamma_snk = gammaList[0].first; - result.gamma_src = gammaList[0].second; - result.corr.resize(nt); - - int Nl = par().Nl; - int N = par().N; - LOG(Message) << "N for A2A cont: " << N << std::endl; - - envGetTmp(std::vector, MF_x); - envGetTmp(std::vector, MF_y); - envGetTmp(std::vector, tmp); - - for (unsigned int t = 0; t < nt; ++t) - { - tmp[t] = TensorRemove(MF_x[t] * MF_y[t] * 0.0); - } - - Gamma gSnk(gammaList[0].first); - Gamma gSrc(gammaList[0].second); - - auto &a2a1_fn = envGet(A2ABase, par().A2A1 + "_class"); - - envGetTmp(std::vector, w1); - envGetTmp(std::vector, v1); - envGetTmp(FermionField, tmpv_5d); - envGetTmp(FermionField, tmpw_5d); - - LOG(Message) << "Finding v and w vectors for N = " << N << std::endl; - for (int i = 0; i < N; i++) - { - a2a1_fn.return_v(i, tmpv_5d, v1[i]); - a2a1_fn.return_w(i, tmpw_5d, w1[i]); - } - LOG(Message) << "Found v and w vectors for N = " << N << std::endl; - for (unsigned int i = 0; i < N; i++) - { - v1[i] = gSnk * v1[i]; - } - int ty; - for (unsigned int i = 0; i < N; i++) - { - for (unsigned int j = 0; j < N; j++) - { - mySliceInnerProductVector(MF_x, w1[i], v1[j], Tp); - mySliceInnerProductVector(MF_y, w1[j], v1[i], Tp); - for (unsigned int t = 0; t < nt; ++t) - { - for (unsigned int tx = 0; tx < nt; tx++) - { - ty = (tx + t) % nt; - tmp[t] += TensorRemove((MF_x[tx]) * (MF_y[ty])); - } - } - } - if (i % 10 == 0) - { - LOG(Message) << "MF for i = " << i << " of " << N << std::endl; - } - } - double NTinv = 1.0 / static_cast(nt); - for (unsigned int t = 0; t < nt; ++t) - { - result.corr[t] = NTinv * tmp[t]; - } - - saveResult(par().output, "meson", result); -} - -END_MODULE_NAMESPACE - -END_HADRONS_NAMESPACE - -#endif // Hadrons_MContraction_A2AMeson_hpp_ diff --git a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.cc b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.cc deleted file mode 100644 index 9218d587..00000000 --- a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.cc +++ /dev/null @@ -1,8 +0,0 @@ -#include - -using namespace Grid; -using namespace Hadrons; -using namespace MContraction; - -template class Grid::Hadrons::MContraction::TMesonFieldGamma; -template class Grid::Hadrons::MContraction::TMesonFieldGamma; \ No newline at end of file diff --git a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp b/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp deleted file mode 100644 index 6128534c..00000000 --- a/extras/Hadrons/Modules/MContraction/MesonFieldGamma.hpp +++ /dev/null @@ -1,269 +0,0 @@ -#ifndef Hadrons_MContraction_MesonFieldGamma_hpp_ -#define Hadrons_MContraction_MesonFieldGamma_hpp_ - -#include -#include -#include -#include -#include -#include -#include - -BEGIN_HADRONS_NAMESPACE - -/****************************************************************************** - * MesonFieldGamma * - ******************************************************************************/ -BEGIN_MODULE_NAMESPACE(MContraction) - -class MesonFieldPar : Serializable -{ - public: - GRID_SERIALIZABLE_CLASS_MEMBERS(MesonFieldPar, - int, Nl, - int, N, - int, Nblock, - std::string, A2A1, - std::string, A2A2, - std::string, gammas, - std::string, output); -}; - -template -class TMesonFieldGamma : public Module -{ - public: - FERM_TYPE_ALIASES(FImpl, ); - SOLVER_TYPE_ALIASES(FImpl, ); - - typedef A2AModesSchurDiagTwo A2ABase; - - class Result : Serializable - { - public: - GRID_SERIALIZABLE_CLASS_MEMBERS(Result, - Gamma::Algebra, gamma, - std::vector>>, MesonField); - }; - - public: - // constructor - TMesonFieldGamma(const std::string name); - // destructor - virtual ~TMesonFieldGamma(void){}; - // dependency relation - virtual std::vector getInput(void); - virtual std::vector getOutput(void); - virtual void parseGammaString(std::vector &gammaList); - virtual void vectorOfWs(std::vector &w, int i, int Nblock, FermionField &tmpw_5d, std::vector &vec_w); - virtual void vectorOfVs(std::vector &v, int j, int Nblock, FermionField &tmpv_5d, std::vector &vec_v); - virtual void gammaMult(std::vector &v, Gamma gamma); - // setup - virtual void setup(void); - // execution - virtual void execute(void); -}; - -MODULE_REGISTER(MesonFieldGamma, ARG(TMesonFieldGamma), MContraction); -MODULE_REGISTER(ZMesonFieldGamma, ARG(TMesonFieldGamma), MContraction); - -/****************************************************************************** -* TMesonFieldGamma implementation * -******************************************************************************/ -// constructor ///////////////////////////////////////////////////////////////// -template -TMesonFieldGamma::TMesonFieldGamma(const std::string name) - : Module(name) -{ -} - -// dependencies/products /////////////////////////////////////////////////////// -template -std::vector TMesonFieldGamma::getInput(void) -{ - std::vector in = {par().A2A1 + "_class", par().A2A2 + "_class"}; - in.push_back(par().A2A1 + "_w_high_4d"); - in.push_back(par().A2A2 + "_v_high_4d"); - return in; -} - -template -std::vector TMesonFieldGamma::getOutput(void) -{ - std::vector out = {}; - - return out; -} - -template -void TMesonFieldGamma::parseGammaString(std::vector &gammaList) -{ - gammaList.clear(); - // Determine gamma matrices to insert at source/sink. - if (par().gammas.compare("all") == 0) - { - // Do all contractions. - for (unsigned int i = 1; i < Gamma::nGamma; i += 2) - { - gammaList.push_back(((Gamma::Algebra)i)); - } - } - else - { - // Parse individual contractions from input string. - gammaList = strToVec(par().gammas); - } -} - -template -void TMesonFieldGamma::vectorOfWs(std::vector &w, int i, int Nblock, FermionField &tmpw_5d, std::vector &vec_w) -{ - for (unsigned int ni = 0; ni < Nblock; ni++) - { - vec_w[ni] = w[i + ni]; - } -} - -template -void TMesonFieldGamma::vectorOfVs(std::vector &v, int j, int Nblock, FermionField &tmpv_5d, std::vector &vec_v) -{ - for (unsigned int nj = 0; nj < Nblock; nj++) - { - vec_v[nj] = v[j+nj]; - } -} - -template -void TMesonFieldGamma::gammaMult(std::vector &v, Gamma gamma) -{ - int Nblock = v.size(); - for (unsigned int nj = 0; nj < Nblock; nj++) - { - v[nj] = gamma * v[nj]; - } -} - -// setup /////////////////////////////////////////////////////////////////////// -template -void TMesonFieldGamma::setup(void) -{ - int nt = env().getDim(Tp); - int N = par().N; - int Nblock = par().Nblock; - - int Ls_ = env().getObjectLs(par().A2A1 + "_class"); - - envTmpLat(FermionField, "tmpv_5d", Ls_); - envTmpLat(FermionField, "tmpw_5d", Ls_); - - envTmp(std::vector, "w", 1, N, FermionField(env().getGrid(1))); - envTmp(std::vector, "v", 1, N, FermionField(env().getGrid(1))); - - envTmp(Eigen::MatrixXcd, "MF", 1, Eigen::MatrixXcd::Zero(nt, N * N)); - - envTmp(std::vector, "w_block", 1, Nblock, FermionField(env().getGrid(1))); - envTmp(std::vector, "v_block", 1, Nblock, FermionField(env().getGrid(1))); -} - -// execution /////////////////////////////////////////////////////////////////// -template -void TMesonFieldGamma::execute(void) -{ - LOG(Message) << "Computing A2A meson field for gamma = " << par().gammas << ", taking w from " << par().A2A1 << " and v from " << par().A2A2 << std::endl; - - int N = par().N; - int nt = env().getDim(Tp); - int Nblock = par().Nblock; - - std::vector result; - std::vector gammaResultList; - std::vector gammaList; - - parseGammaString(gammaResultList); - result.resize(gammaResultList.size()); - - Gamma g5(Gamma::Algebra::Gamma5); - gammaList.resize(gammaResultList.size(), g5); - - for (unsigned int i = 0; i < result.size(); ++i) - { - result[i].gamma = gammaResultList[i]; - result[i].MesonField.resize(N, std::vector>(N, std::vector(nt))); - - Gamma gamma(gammaResultList[i]); - gammaList[i] = gamma; - } - - auto &a2a1 = envGet(A2ABase, par().A2A1 + "_class"); - auto &a2a2 = envGet(A2ABase, par().A2A2 + "_class"); - - envGetTmp(FermionField, tmpv_5d); - envGetTmp(FermionField, tmpw_5d); - - envGetTmp(std::vector, v); - envGetTmp(std::vector, w); - LOG(Message) << "Finding v and w vectors for N = " << N << std::endl; - for (int i = 0; i < N; i++) - { - a2a2.return_v(i, tmpv_5d, v[i]); - a2a1.return_w(i, tmpw_5d, w[i]); - } - LOG(Message) << "Found v and w vectors for N = " << N << std::endl; - - std::vector> MesonField_ij; - LOG(Message) << "Before blocked MFs, Nblock = " << Nblock << std::endl; - envGetTmp(std::vector, v_block); - envGetTmp(std::vector, w_block); - MesonField_ij.resize(Nblock * Nblock, std::vector(nt)); - - envGetTmp(Eigen::MatrixXcd, MF); - - LOG(Message) << "Before blocked MFs, Nblock = " << Nblock << std::endl; - for (unsigned int i = 0; i < N; i += Nblock) - { - vectorOfWs(w, i, Nblock, tmpw_5d, w_block); - for (unsigned int j = 0; j < N; j += Nblock) - { - vectorOfVs(v, j, Nblock, tmpv_5d, v_block); - for (unsigned int k = 0; k < result.size(); k++) - { - gammaMult(v_block, gammaList[k]); - sliceInnerProductMesonField(MesonField_ij, w_block, v_block, Tp); - for (unsigned int nj = 0; nj < Nblock; nj++) - { - for (unsigned int ni = 0; ni < Nblock; ni++) - { - MF.col((i + ni) + (j + nj) * N) = Eigen::VectorXcd::Map(&MesonField_ij[nj * Nblock + ni][0], MesonField_ij[nj * Nblock + ni].size()); - } - } - } - } - if (i % 10 == 0) - { - LOG(Message) << "MF for i = " << i << " of " << N << std::endl; - } - } - LOG(Message) << "Before Global sum, Nblock = " << Nblock << std::endl; - v_block[0]._grid->GlobalSumVector(MF.data(), MF.size()); - LOG(Message) << "After Global sum, Nblock = " << Nblock << std::endl; - for (unsigned int i = 0; i < N; i++) - { - for (unsigned int j = 0; j < N; j++) - { - for (unsigned int k = 0; k < result.size(); k++) - { - for (unsigned int t = 0; t < nt; t++) - { - result[k].MesonField[i][j][t] = MF.col(i + N * j)[t]; - } - } - } - } - saveResult(par().output, "meson", result); -} - -END_MODULE_NAMESPACE - -END_HADRONS_NAMESPACE - -#endif // Hadrons_MContraction_MesonFieldGm_hpp_ From 81347b4d1602b32bfafe9258237d3444e740aa1f Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 3 Aug 2018 19:58:52 +0100 Subject: [PATCH 222/267] gitignore update --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 49295fc6..a633c0e9 100644 --- a/.gitignore +++ b/.gitignore @@ -130,3 +130,7 @@ lib/version.h .vscode/ .vscode/settings.json settings.json + +# Eigen # +######### +Eigen From 584c921ca085feec69719fdc4b9d291cb9a42b53 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 3 Aug 2018 21:07:58 +0100 Subject: [PATCH 223/267] Eigen support fix (use of Grid as a library was broken) --- configure.ac | 4 +-- .../Modules/MContraction/A2AMesonField.hpp | 3 +-- lib/Grid_Eigen_Dense.h | 2 +- scripts/update_eigen.sh | 27 +++++-------------- 4 files changed, 11 insertions(+), 25 deletions(-) diff --git a/configure.ac b/configure.ac index f5622e46..496e6071 100644 --- a/configure.ac +++ b/configure.ac @@ -480,8 +480,8 @@ GRID_LIBS=$LIBS GRID_SHORT_SHA=`git rev-parse --short HEAD` GRID_SHA=`git rev-parse HEAD` GRID_BRANCH=`git rev-parse --abbrev-ref HEAD` -AM_CXXFLAGS="-I${abs_srcdir}/include -I${abs_srcdir}/Eigen/ -I${abs_srcdir}/Eigen/unsupported $AM_CXXFLAGS" -AM_CFLAGS="-I${abs_srcdir}/include -I${abs_srcdir}/Eigen/ -I${abs_srcdir}/Eigen/unsupported $AM_CFLAGS" +AM_CXXFLAGS="-I${abs_srcdir}/include -I${abs_srcdir}/include/Grid $AM_CXXFLAGS" +AM_CFLAGS="-I${abs_srcdir}/include -I${abs_srcdir}/include/Grid $AM_CFLAGS" AM_LDFLAGS="-L${cwd}/lib $AM_LDFLAGS" AC_SUBST([AM_CFLAGS]) AC_SUBST([AM_CXXFLAGS]) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index aa386481..df203e6f 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -5,8 +5,7 @@ #include #include #include - -#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/lib/Grid_Eigen_Dense.h b/lib/Grid_Eigen_Dense.h index 3e5ca1d1..4fb5b831 100644 --- a/lib/Grid_Eigen_Dense.h +++ b/lib/Grid_Eigen_Dense.h @@ -3,7 +3,7 @@ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif -#include +#include #if defined __GNUC__ #pragma GCC diagnostic pop #endif diff --git a/scripts/update_eigen.sh b/scripts/update_eigen.sh index 442a2477..5ed59655 100755 --- a/scripts/update_eigen.sh +++ b/scripts/update_eigen.sh @@ -7,42 +7,29 @@ fi ARC=$1 INITDIR=`pwd` +rm -f lib/Eigen +rm -rf Eigen ################## #untar ################## - tar -xf ${ARC} ARCDIR=`tar -tf ${ARC} | head -n1 | sed -e 's@/.*@@'` -rm -f ${ARC} ############################### # Link to a deterministic name ############################### -mv ${ARCDIR} Eigen +mv ${ARCDIR} Eigen +ln -s ${INITDIR}/Eigen/Eigen ${INITDIR}/lib/Eigen +ln -s ${INITDIR}/Eigen/unsupported/Eigen ${INITDIR}/lib/Eigen/unsupported # Eigen source headers -cd ${INITDIR}/Eigen - +cd ${INITDIR}/lib echo 'eigen_files =\' > ${INITDIR}/lib/Eigen.inc -find Eigen -name "*.h" -print | sed 's/^/ /;$q;s/$/ \\/' >> ${INITDIR}/lib/Eigen.inc - -cd ${INITDIR} -echo 'eigen_unsupp_files =\' >> ${INITDIR}/lib/Eigen.inc -find Eigen/unsupported/Eigen -name "*.h" -print | sed 's/^/ /;$q;s/$/ \\/' >> ${INITDIR}/lib/Eigen.inc - - +find -L Eigen -print | sed 's/^/ /;$q;s/$/ \\/' >> ${INITDIR}/lib/Eigen.inc ################################### # back to home ################################### cd ${INITDIR} - -######################################### -# Make grid includes happy -######################################### -mkdir ${INITDIR}/lib/Eigen/ - -ln -s ${INITDIR}/Eigen/Eigen/* ${INITDIR}/lib/Eigen/ -ln -s ${INITDIR}/Eigen/unsupported ${INITDIR}/lib/Eigen/ From 830168ec377e246bf5bcfe54a70d3e9dde8df5a1 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Sat, 4 Aug 2018 12:32:58 +0100 Subject: [PATCH 224/267] Hadrons: first try at diluted noise class (tested) --- extras/Hadrons/DilutedNoise.hpp | 157 ++++++++++++++ extras/Hadrons/Modules.hpp | 101 ++++----- .../MNoise/TimeDilutedSpinColorDiagonal.cc | 7 + .../MNoise/TimeDilutedSpinColorDiagonal.hpp | 83 +++++++ extras/Hadrons/modules.inc | 203 +++++++++--------- 5 files changed, 400 insertions(+), 151 deletions(-) create mode 100644 extras/Hadrons/DilutedNoise.hpp create mode 100644 extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc create mode 100644 extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp diff --git a/extras/Hadrons/DilutedNoise.hpp b/extras/Hadrons/DilutedNoise.hpp new file mode 100644 index 00000000..04bb2beb --- /dev/null +++ b/extras/Hadrons/DilutedNoise.hpp @@ -0,0 +1,157 @@ +#ifndef Hadrons_DilutedNoise_hpp_ +#define Hadrons_DilutedNoise_hpp_ + +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * Abstract container for diluted noise * + ******************************************************************************/ +template +class DilutedNoise +{ +public: + typedef typename FImpl::FermionField FermionField; +public: + // constructor/destructor + DilutedNoise(GridCartesian *g); + DilutedNoise(GridCartesian *g, const unsigned int nNoise); + virtual ~DilutedNoise(void) = default; + // access + const FermionField & operator[](const unsigned int i) const; + FermionField & operator[](const unsigned int i); + void resize(const unsigned int nNoise); + unsigned int size(void) const; + unsigned int getNNoise(void) const; + GridCartesian *getGrid(void) const; + // generate noise (pure virtual) + virtual void generateNoise(GridParallelRNG &rng) = 0; +private: + std::vector noise_; + GridCartesian *grid_; + unsigned int nNoise_; +}; + +template +class TimeDilutedSpinColorDiagonalNoise: public DilutedNoise +{ +public: + typedef typename FImpl::FermionField FermionField; +public: + // constructor/destructor + TimeDilutedSpinColorDiagonalNoise(GridCartesian *g); + virtual ~TimeDilutedSpinColorDiagonalNoise(void) = default; + // generate noise + virtual void generateNoise(GridParallelRNG &rng); +private: + unsigned int nt_; +}; + +/****************************************************************************** + * DilutedNoise template implementation * + ******************************************************************************/ +template +DilutedNoise::DilutedNoise(GridCartesian *g) +: grid_(g) +{} + +template +DilutedNoise::DilutedNoise(GridCartesian *g, + const unsigned int nNoise) +: DilutedNoise(g) +{ + resize(nNoise); +} + +template +void DilutedNoise::resize(const unsigned int nNoise) +{ + nNoise_ = nNoise; + noise_.resize(nNoise, grid_); +} + +template +unsigned int DilutedNoise::size(void) const +{ + return noise_.size(); +} + +template +unsigned int DilutedNoise::getNNoise(void) const +{ + return nNoise_; +} + +template +GridCartesian * DilutedNoise::getGrid(void) const +{ + return grid_; +} + +template +const typename DilutedNoise::FermionField & +DilutedNoise::operator[](const unsigned int i) const +{ + return noise_[i]; +} + +template +typename DilutedNoise::FermionField & +DilutedNoise::operator[](const unsigned int i) +{ + return noise_[i]; +} + +/****************************************************************************** + * TimeDilutedSpinColorDiagonalNoise template implementation * + ******************************************************************************/ +template +TimeDilutedSpinColorDiagonalNoise:: +TimeDilutedSpinColorDiagonalNoise(GridCartesian *g) +: DilutedNoise(g) +{ + nt_ = this->getGrid()->GlobalDimensions().back(); + this->resize(nt_*Ns*FImpl::Dimension); +} + +template +void TimeDilutedSpinColorDiagonalNoise::generateNoise(GridParallelRNG &rng) +{ + typedef decltype(peekColour((*this)[0], 0)) SpinField; + + auto &noise = *this; + auto g = this->getGrid(); + auto nd = g->GlobalDimensions().size(); + auto nc = FImpl::Dimension; + Complex shift(1., 1.); + Lattice> tLat(g); + LatticeComplex eta(g), etaCut(g); + SpinField etas(g); + unsigned int i = 0; + + LatticeCoordinate(tLat, nd - 1); + bernoulli(rng, eta); + eta = (2.*eta - shift)*(1./::sqrt(2.)); + std::cout << eta << std::endl; + for (unsigned int t = 0; t < nt_; ++t) + { + etaCut = where((tLat == t), eta, 0.*eta); + for (unsigned int s = 0; s < Ns; ++s) + { + etas = zero; + pokeSpin(etas, etaCut, s); + for (unsigned int c = 0; c < nc; ++c) + { + noise[i] = zero; + pokeColour(noise[i], etas, c); + std::cout << noise[i] << std::endl; + i++; + } + } + } +} + +END_HADRONS_NAMESPACE + +#endif // Hadrons_DilutedNoise_hpp_ \ No newline at end of file diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 500a0e72..aa8a3aa1 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,59 +1,60 @@ -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include -#include -#include -#include -#include #include -#include +#include +#include +#include #include #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include #include +#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc new file mode 100644 index 00000000..e02c359a --- /dev/null +++ b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc @@ -0,0 +1,7 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MNoise; + +template class Grid::Hadrons::MNoise::TTimeDilutedSpinColorDiagonal; diff --git a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp new file mode 100644 index 00000000..aba45e08 --- /dev/null +++ b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp @@ -0,0 +1,83 @@ +#ifndef Hadrons_MNoise_TimeDilutedSpinColorDiagonal_hpp_ +#define Hadrons_MNoise_TimeDilutedSpinColorDiagonal_hpp_ + +#include +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * Generate time diluted spin-color diagonal noise * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MNoise) + +template +class TTimeDilutedSpinColorDiagonal: public Module +{ +public: + // constructor + TTimeDilutedSpinColorDiagonal(const std::string name); + // destructor + virtual ~TTimeDilutedSpinColorDiagonal(void) {}; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER_TMP(TimeDilutedSpinColorDiagonal, TTimeDilutedSpinColorDiagonal, MNoise); + +/****************************************************************************** + * TTimeDilutedSpinColorDiagonal implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TTimeDilutedSpinColorDiagonal::TTimeDilutedSpinColorDiagonal(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TTimeDilutedSpinColorDiagonal::getInput(void) +{ + std::vector in; + + return in; +} + +template +std::vector TTimeDilutedSpinColorDiagonal::getOutput(void) +{ + std::vector out = {getName()}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TTimeDilutedSpinColorDiagonal::setup(void) +{ + envCreateDerived(DilutedNoise, + TimeDilutedSpinColorDiagonalNoise, + getName(), 1, env().getGrid()); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TTimeDilutedSpinColorDiagonal::execute(void) +{ + auto &noise = envGet(DilutedNoise, getName()); + + noise.generateNoise(*env().get4dRng()); +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MNoise_TimeDilutedSpinColorDiagonal_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 72585866..7933cb97 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -1,120 +1,121 @@ modules_cc =\ - Modules/MScalarSUN/ShiftProbe.cc \ - Modules/MScalarSUN/Grad.cc \ - Modules/MScalarSUN/TwoPointNPR.cc \ - Modules/MScalarSUN/Div.cc \ - Modules/MScalarSUN/TrMag.cc \ - Modules/MScalarSUN/TransProj.cc \ - Modules/MScalarSUN/TwoPoint.cc \ - Modules/MScalarSUN/TrKinetic.cc \ - Modules/MScalarSUN/TrPhi.cc \ - Modules/MScalarSUN/EMT.cc \ - Modules/MScalarSUN/TimeMomProbe.cc \ - Modules/MScalarSUN/StochFreeField.cc \ + Modules/MContraction/WeakHamiltonianEye.cc \ + Modules/MContraction/Baryon.cc \ + Modules/MContraction/Meson.cc \ + Modules/MContraction/WeakNeutral4ptDisc.cc \ + Modules/MContraction/WeakHamiltonianNonEye.cc \ + Modules/MContraction/WardIdentity.cc \ + Modules/MContraction/A2AMesonField.cc \ + Modules/MContraction/DiscLoop.cc \ + Modules/MContraction/Gamma3pt.cc \ + Modules/MFermion/FreeProp.cc \ + Modules/MFermion/GaugeProp.cc \ + Modules/MSource/Point.cc \ + Modules/MSource/Wall.cc \ + Modules/MSource/SeqConserved.cc \ + Modules/MSource/SeqGamma.cc \ + Modules/MSource/Z2.cc \ + Modules/MSink/Point.cc \ + Modules/MSink/Smear.cc \ + Modules/MSolver/A2AVectors.cc \ + Modules/MSolver/RBPrecCG.cc \ + Modules/MSolver/LocalCoherenceLanczos.cc \ + Modules/MGauge/StoutSmearing.cc \ + Modules/MGauge/Unit.cc \ + Modules/MGauge/UnitEm.cc \ + Modules/MGauge/StochEm.cc \ + Modules/MGauge/Random.cc \ + Modules/MGauge/FundtoHirep.cc \ + Modules/MNoise/TimeDilutedSpinColorDiagonal.cc \ + Modules/MUtilities/TestSeqGamma.cc \ + Modules/MUtilities/TestSeqConserved.cc \ + Modules/MLoop/NoiseLoop.cc \ Modules/MScalar/FreeProp.cc \ Modules/MScalar/VPCounterTerms.cc \ Modules/MScalar/ChargedProp.cc \ Modules/MScalar/ScalarVP.cc \ - Modules/MLoop/NoiseLoop.cc \ - Modules/MIO/LoadBinary.cc \ - Modules/MIO/LoadCoarseEigenPack.cc \ - Modules/MIO/LoadNersc.cc \ - Modules/MIO/LoadEigenPack.cc \ - Modules/MSink/Smear.cc \ - Modules/MSink/Point.cc \ - Modules/MFermion/FreeProp.cc \ - Modules/MFermion/GaugeProp.cc \ - Modules/MGauge/Random.cc \ - Modules/MGauge/StochEm.cc \ - Modules/MGauge/StoutSmearing.cc \ - Modules/MGauge/Unit.cc \ - Modules/MGauge/Random.cc \ - Modules/MGauge/UnitEm.cc \ - Modules/MGauge/FundtoHirep.cc \ - Modules/MUtilities/TestSeqGamma.cc \ - Modules/MUtilities/TestSeqConserved.cc \ - Modules/MSource/Z2.cc \ - Modules/MSource/Point.cc \ - Modules/MSource/SeqGamma.cc \ - Modules/MSource/Wall.cc \ - Modules/MSource/SeqConserved.cc \ - Modules/MContraction/Meson.cc \ - Modules/MContraction/WardIdentity.cc \ - Modules/MContraction/WeakHamiltonianNonEye.cc \ - Modules/MContraction/Baryon.cc \ - Modules/MContraction/DiscLoop.cc \ - Modules/MContraction/WeakHamiltonianEye.cc \ - Modules/MContraction/A2AMesonField.cc \ - Modules/MContraction/WeakNeutral4ptDisc.cc \ - Modules/MContraction/Gamma3pt.cc \ - Modules/MAction/MobiusDWF.cc \ - Modules/MAction/WilsonClover.cc \ Modules/MAction/Wilson.cc \ + Modules/MAction/MobiusDWF.cc \ + Modules/MAction/ZMobiusDWF.cc \ + Modules/MAction/WilsonClover.cc \ Modules/MAction/DWF.cc \ Modules/MAction/ScaledDWF.cc \ - Modules/MAction/ZMobiusDWF.cc \ - Modules/MSolver/A2AVectors.cc \ - Modules/MSolver/RBPrecCG.cc \ - Modules/MSolver/LocalCoherenceLanczos.cc + Modules/MScalarSUN/TrPhi.cc \ + Modules/MScalarSUN/Grad.cc \ + Modules/MScalarSUN/TimeMomProbe.cc \ + Modules/MScalarSUN/TrMag.cc \ + Modules/MScalarSUN/TrKinetic.cc \ + Modules/MScalarSUN/EMT.cc \ + Modules/MScalarSUN/ShiftProbe.cc \ + Modules/MScalarSUN/TransProj.cc \ + Modules/MScalarSUN/StochFreeField.cc \ + Modules/MScalarSUN/TwoPoint.cc \ + Modules/MScalarSUN/TwoPointNPR.cc \ + Modules/MScalarSUN/Div.cc \ + Modules/MIO/LoadEigenPack.cc \ + Modules/MIO/LoadBinary.cc \ + Modules/MIO/LoadNersc.cc \ + Modules/MIO/LoadCoarseEigenPack.cc modules_hpp =\ - Modules/MScalarSUN/TrKinetic.hpp \ - Modules/MScalarSUN/TimeMomProbe.hpp \ + Modules/MContraction/Baryon.hpp \ + Modules/MContraction/A2AMesonField.hpp \ + Modules/MContraction/Meson.hpp \ + Modules/MContraction/WeakHamiltonian.hpp \ + Modules/MContraction/WeakHamiltonianNonEye.hpp \ + Modules/MContraction/DiscLoop.hpp \ + Modules/MContraction/WeakNeutral4ptDisc.hpp \ + Modules/MContraction/Gamma3pt.hpp \ + Modules/MContraction/WardIdentity.hpp \ + Modules/MContraction/WeakHamiltonianEye.hpp \ + Modules/MFermion/FreeProp.hpp \ + Modules/MFermion/GaugeProp.hpp \ + Modules/MSource/SeqGamma.hpp \ + Modules/MSource/Point.hpp \ + Modules/MSource/Wall.hpp \ + Modules/MSource/Z2.hpp \ + Modules/MSource/SeqConserved.hpp \ + Modules/MSink/Smear.hpp \ + Modules/MSink/Point.hpp \ + Modules/MSolver/LocalCoherenceLanczos.hpp \ + Modules/MSolver/RBPrecCG.hpp \ + Modules/MSolver/A2AVectors.hpp \ + Modules/MGauge/UnitEm.hpp \ + Modules/MGauge/StoutSmearing.hpp \ + Modules/MGauge/Unit.hpp \ + Modules/MGauge/Random.hpp \ + Modules/MGauge/FundtoHirep.hpp \ + Modules/MGauge/StochEm.hpp \ + Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp \ + Modules/MUtilities/TestSeqGamma.hpp \ + Modules/MUtilities/TestSeqConserved.hpp \ + Modules/MLoop/NoiseLoop.hpp \ + Modules/MScalar/FreeProp.hpp \ + Modules/MScalar/VPCounterTerms.hpp \ + Modules/MScalar/ScalarVP.hpp \ + Modules/MScalar/Scalar.hpp \ + Modules/MScalar/ChargedProp.hpp \ + Modules/MAction/DWF.hpp \ + Modules/MAction/MobiusDWF.hpp \ + Modules/MAction/Wilson.hpp \ + Modules/MAction/WilsonClover.hpp \ + Modules/MAction/ZMobiusDWF.hpp \ + Modules/MAction/ScaledDWF.hpp \ Modules/MScalarSUN/StochFreeField.hpp \ Modules/MScalarSUN/TwoPointNPR.hpp \ - Modules/MScalarSUN/Grad.hpp \ - Modules/MScalarSUN/TransProj.hpp \ - Modules/MScalarSUN/Div.hpp \ - Modules/MScalarSUN/TrMag.hpp \ Modules/MScalarSUN/ShiftProbe.hpp \ - Modules/MScalarSUN/Utils.hpp \ + Modules/MScalarSUN/Div.hpp \ + Modules/MScalarSUN/TimeMomProbe.hpp \ + Modules/MScalarSUN/TrMag.hpp \ Modules/MScalarSUN/EMT.hpp \ Modules/MScalarSUN/TwoPoint.hpp \ Modules/MScalarSUN/TrPhi.hpp \ - Modules/MScalar/FreeProp.hpp \ - Modules/MScalar/Scalar.hpp \ - Modules/MScalar/ScalarVP.hpp \ - Modules/MScalar/ChargedProp.hpp \ - Modules/MScalar/VPCounterTerms.hpp \ - Modules/MLoop/NoiseLoop.hpp \ + Modules/MScalarSUN/Utils.hpp \ + Modules/MScalarSUN/TransProj.hpp \ + Modules/MScalarSUN/Grad.hpp \ + Modules/MScalarSUN/TrKinetic.hpp \ Modules/MIO/LoadEigenPack.hpp \ - Modules/MIO/LoadCoarseEigenPack.hpp \ - Modules/MIO/LoadBinary.hpp \ Modules/MIO/LoadNersc.hpp \ - Modules/MSink/Smear.hpp \ - Modules/MSink/Point.hpp \ - Modules/MFermion/FreeProp.hpp \ - Modules/MFermion/GaugeProp.hpp \ - Modules/MGauge/FundtoHirep.hpp \ - Modules/MGauge/Random.hpp \ - Modules/MGauge/StoutSmearing.hpp \ - Modules/MGauge/Unit.hpp \ - Modules/MGauge/StochEm.hpp \ - Modules/MGauge/UnitEm.hpp \ - Modules/MUtilities/TestSeqGamma.hpp \ - Modules/MUtilities/TestSeqConserved.hpp \ - Modules/MSource/SeqConserved.hpp \ - Modules/MSource/Z2.hpp \ - Modules/MSource/Wall.hpp \ - Modules/MSource/SeqGamma.hpp \ - Modules/MSource/Point.hpp \ - Modules/MContraction/WeakHamiltonianEye.hpp \ - Modules/MContraction/Baryon.hpp \ - Modules/MContraction/Meson.hpp \ - Modules/MContraction/WeakHamiltonian.hpp \ - Modules/MContraction/WeakNeutral4ptDisc.hpp \ - Modules/MContraction/Gamma3pt.hpp \ - Modules/MContraction/DiscLoop.hpp \ - Modules/MContraction/WeakHamiltonianNonEye.hpp \ - Modules/MContraction/WardIdentity.hpp \ - Modules/MContraction/A2AMesonField.hpp \ - Modules/MAction/WilsonClover.hpp \ - Modules/MAction/ScaledDWF.hpp \ - Modules/MAction/MobiusDWF.hpp \ - Modules/MAction/Wilson.hpp \ - Modules/MAction/DWF.hpp \ - Modules/MAction/ZMobiusDWF.hpp \ - Modules/MSolver/RBPrecCG.hpp \ - Modules/MSolver/LocalCoherenceLanczos.hpp \ - Modules/MSolver/A2AVectors.hpp + Modules/MIO/LoadCoarseEigenPack.hpp \ + Modules/MIO/LoadBinary.hpp From 2962123cbaae155c4104d98cdf4856a858c659fb Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Sun, 5 Aug 2018 01:44:37 +0100 Subject: [PATCH 225/267] Hadrons: diluted noise polish --- extras/Hadrons/DilutedNoise.hpp | 57 +++++++++++-------- .../MNoise/TimeDilutedSpinColorDiagonal.hpp | 2 +- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/extras/Hadrons/DilutedNoise.hpp b/extras/Hadrons/DilutedNoise.hpp index 04bb2beb..304b210d 100644 --- a/extras/Hadrons/DilutedNoise.hpp +++ b/extras/Hadrons/DilutedNoise.hpp @@ -19,14 +19,15 @@ public: DilutedNoise(GridCartesian *g, const unsigned int nNoise); virtual ~DilutedNoise(void) = default; // access - const FermionField & operator[](const unsigned int i) const; - FermionField & operator[](const unsigned int i); - void resize(const unsigned int nNoise); - unsigned int size(void) const; - unsigned int getNNoise(void) const; - GridCartesian *getGrid(void) const; + std::vector & getNoise(void); + const std::vector & getNoise(void) const; + const FermionField & operator[](const unsigned int i) const; + FermionField & operator[](const unsigned int i); + void resize(const unsigned int nNoise); + unsigned int size(void) const; + GridCartesian *getGrid(void) const; // generate noise (pure virtual) - virtual void generateNoise(GridParallelRNG &rng) = 0; + virtual void generateNoise(GridParallelRNG &rng) = 0; private: std::vector noise_; GridCartesian *grid_; @@ -65,28 +66,17 @@ DilutedNoise::DilutedNoise(GridCartesian *g, } template -void DilutedNoise::resize(const unsigned int nNoise) +std::vector::FermionField> & DilutedNoise:: +getNoise(void) { - nNoise_ = nNoise; - noise_.resize(nNoise, grid_); + return noise_; } template -unsigned int DilutedNoise::size(void) const -{ - return noise_.size(); -} - -template -unsigned int DilutedNoise::getNNoise(void) const +const std::vector::FermionField> & DilutedNoise:: +getNoise(void) const { - return nNoise_; -} - -template -GridCartesian * DilutedNoise::getGrid(void) const -{ - return grid_; + return noise_; } template @@ -103,6 +93,25 @@ DilutedNoise::operator[](const unsigned int i) return noise_[i]; } +template +void DilutedNoise::resize(const unsigned int nNoise) +{ + nNoise_ = nNoise; + noise_.resize(nNoise, grid_); +} + +template +unsigned int DilutedNoise::size(void) const +{ + return noise_.size(); +} + +template +GridCartesian * DilutedNoise::getGrid(void) const +{ + return grid_; +} + /****************************************************************************** * TimeDilutedSpinColorDiagonalNoise template implementation * ******************************************************************************/ diff --git a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp index aba45e08..1f6e89f9 100644 --- a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp +++ b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp @@ -33,7 +33,7 @@ public: MODULE_REGISTER_TMP(TimeDilutedSpinColorDiagonal, TTimeDilutedSpinColorDiagonal, MNoise); /****************************************************************************** - * TTimeDilutedSpinColorDiagonal implementation * + * TTimeDilutedSpinColorDiagonal implementation * ******************************************************************************/ // constructor ///////////////////////////////////////////////////////////////// template From d2650e89bd53aeafaf3422c9b224f49d4e6123c0 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 6 Aug 2018 12:11:00 +0100 Subject: [PATCH 226/267] Hadrons: VM exception for object type (solves infinite loop in scheduler) --- extras/Hadrons/Environment.hpp | 2 +- extras/Hadrons/Exceptions.cc | 1 + extras/Hadrons/Exceptions.hpp | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/extras/Hadrons/Environment.hpp b/extras/Hadrons/Environment.hpp index af864c3d..1e3cc17f 100644 --- a/extras/Hadrons/Environment.hpp +++ b/extras/Hadrons/Environment.hpp @@ -288,7 +288,7 @@ T * Environment::getDerivedObject(const unsigned int address) const } else { - HADRONS_ERROR_REF(ObjectDefinition, "object with address " + + HADRONS_ERROR_REF(ObjectType, "object with address " + std::to_string(address) + " does not have type '" + typeName(&typeid(B)) + "' (has type '" + getObjectType(address) + "')", address); diff --git a/extras/Hadrons/Exceptions.cc b/extras/Hadrons/Exceptions.cc index 6d5a3dc2..c44f4cd0 100644 --- a/extras/Hadrons/Exceptions.cc +++ b/extras/Hadrons/Exceptions.cc @@ -69,6 +69,7 @@ CTOR_EXC(System, Runtime("system error: " + msg, loc)) // virtual machine errors CTOR_EXC_REF(ObjectDefinition, RuntimeRef("object definition error: " + msg, loc, address)); +CTOR_EXC_REF(ObjectType, RuntimeRef("object type error: " + msg, loc, address)); // abort functions void Grid::Hadrons::Exceptions::abort(const std::exception& e) diff --git a/extras/Hadrons/Exceptions.hpp b/extras/Hadrons/Exceptions.hpp index 6893ef03..e6a7aea8 100644 --- a/extras/Hadrons/Exceptions.hpp +++ b/extras/Hadrons/Exceptions.hpp @@ -118,6 +118,7 @@ namespace Exceptions }; DECL_EXC_REF(ObjectDefinition, RuntimeRef); + DECL_EXC_REF(ObjectType, RuntimeRef); // abort functions void abort(const std::exception& e); From 3f0f92cda6cdc213e5bb39f981774d96e505cc8e Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 6 Aug 2018 12:11:52 +0100 Subject: [PATCH 227/267] Hadrons: first cleaning/integration of A2A/meson fields --- extras/Hadrons/AllToAllVectors.hpp | 10 ++ extras/Hadrons/DilutedNoise.hpp | 2 - .../Modules/MContraction/A2AMesonField.hpp | 29 ++-- .../MNoise/TimeDilutedSpinColorDiagonal.cc | 1 + .../MNoise/TimeDilutedSpinColorDiagonal.hpp | 1 + extras/Hadrons/Modules/MSolver/A2AVectors.cc | 4 +- extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 155 +++++++----------- 7 files changed, 89 insertions(+), 113 deletions(-) diff --git a/extras/Hadrons/AllToAllVectors.hpp b/extras/Hadrons/AllToAllVectors.hpp index 7d9aa62e..b21b6862 100644 --- a/extras/Hadrons/AllToAllVectors.hpp +++ b/extras/Hadrons/AllToAllVectors.hpp @@ -51,6 +51,16 @@ class A2AModesSchurDiagTwo v_high_4d.resize(size_4d, grid_4d); } + int get_Nh(void) const + { + return Nh; + } + + int get_Nl(void) const + { + return Nl; + } + void high_modes(Field &source_5d, Field &w_source_5d, Field &source_4d, int i) { int i5d; diff --git a/extras/Hadrons/DilutedNoise.hpp b/extras/Hadrons/DilutedNoise.hpp index 304b210d..a284d46b 100644 --- a/extras/Hadrons/DilutedNoise.hpp +++ b/extras/Hadrons/DilutedNoise.hpp @@ -142,7 +142,6 @@ void TimeDilutedSpinColorDiagonalNoise::generateNoise(GridParallelRNG &rn LatticeCoordinate(tLat, nd - 1); bernoulli(rng, eta); eta = (2.*eta - shift)*(1./::sqrt(2.)); - std::cout << eta << std::endl; for (unsigned int t = 0; t < nt_; ++t) { etaCut = where((tLat == t), eta, 0.*eta); @@ -154,7 +153,6 @@ void TimeDilutedSpinColorDiagonalNoise::generateNoise(GridParallelRNG &rn { noise[i] = zero; pokeColour(noise[i], etas, c); - std::cout << noise[i] << std::endl; i++; } } diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index df203e6f..9a09c0b6 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -24,8 +24,6 @@ class A2AMesonFieldPar : Serializable int, cacheBlock, int, schurBlock, int, Nmom, - int, N, - int, Nl, std::string, A2A, std::string, output); }; @@ -82,9 +80,7 @@ TA2AMesonField::TA2AMesonField(const std::string name) template std::vector TA2AMesonField::getInput(void) { - std::vector in = {par().A2A + "_class"}; - in.push_back(par().A2A + "_w_high_4d"); - in.push_back(par().A2A + "_v_high_4d"); + std::vector in = {par().A2A}; return in; } @@ -102,18 +98,17 @@ std::vector TA2AMesonField::getOutput(void) template void TA2AMesonField::setup(void) { - auto &a2a = envGet(A2ABase, par().A2A + "_class"); - int nt = env().getDim(Tp); - int Nl = par().Nl; - int N = par().N; - int Ls_ = env().getObjectLs(par().A2A + "_class"); + auto &a2a = envGet(A2ABase, par().A2A); + int Ls = env().getObjectLs(par().A2A); // Four D fields - envTmp(std::vector, "w", 1, par().schurBlock, FermionField(env().getGrid(1))); - envTmp(std::vector, "v", 1, par().schurBlock, FermionField(env().getGrid(1))); + envTmp(std::vector, "w", 1, par().schurBlock, + FermionField(env().getGrid())); + envTmp(std::vector, "v", 1, par().schurBlock, + FermionField(env().getGrid())); // 5D tmp - envTmpLat(FermionField, "tmp_5d", Ls_); + envTmpLat(FermionField, "tmp_5d", Ls); } @@ -305,7 +300,7 @@ void TA2AMesonField::execute(void) { LOG(Message) << "Computing A2A meson field" << std::endl; - auto &a2a = envGet(A2ABase, par().A2A + "_class"); + auto &a2a = envGet(A2ABase, par().A2A); // 2+6+4+4 = 16 gammas // Ordering defined here @@ -335,8 +330,9 @@ void TA2AMesonField::execute(void) int nx = env().getDim(Xp); int ny = env().getDim(Yp); int nz = env().getDim(Zp); - int N = par().N; - int Nl = par().Nl; + int Nl = a2a.get_Nl(); + int N = Nl + a2a.get_Nh(); + int ngamma = gammas.size(); int schurBlock = par().schurBlock; @@ -407,7 +403,6 @@ void TA2AMesonField::execute(void) int N_iii = MIN(N_ii-ii,cacheBlock); int N_jjj = MIN(N_jj-jj,cacheBlock); - Eigen::Tensor mesonFieldBlocked(nmom,ngamma,nt,N_iii,N_jjj); t_contr-=usecond(); diff --git a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc index e02c359a..472a0b4d 100644 --- a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc +++ b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc @@ -5,3 +5,4 @@ using namespace Hadrons; using namespace MNoise; template class Grid::Hadrons::MNoise::TTimeDilutedSpinColorDiagonal; +template class Grid::Hadrons::MNoise::TTimeDilutedSpinColorDiagonal; diff --git a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp index 1f6e89f9..7e2a471f 100644 --- a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp +++ b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp @@ -31,6 +31,7 @@ public: }; MODULE_REGISTER_TMP(TimeDilutedSpinColorDiagonal, TTimeDilutedSpinColorDiagonal, MNoise); +MODULE_REGISTER_TMP(ZTimeDilutedSpinColorDiagonal, TTimeDilutedSpinColorDiagonal, MNoise); /****************************************************************************** * TTimeDilutedSpinColorDiagonal implementation * diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.cc b/extras/Hadrons/Modules/MSolver/A2AVectors.cc index f72f405d..477d0b72 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.cc +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.cc @@ -4,5 +4,5 @@ using namespace Grid; using namespace Hadrons; using namespace MSolver; -template class Grid::Hadrons::MSolver::TA2AVectors; -template class Grid::Hadrons::MSolver::TA2AVectors; +template class Grid::Hadrons::MSolver::TA2AVectors>; +template class Grid::Hadrons::MSolver::TA2AVectors>; diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp index d7e4cfe4..20fa7c2e 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -7,6 +7,7 @@ #include #include #include +#include BEGIN_HADRONS_NAMESPACE @@ -21,26 +22,20 @@ public: GRID_SERIALIZABLE_CLASS_MEMBERS(A2AVectorsPar, bool, return_5d, int, Nl, - int, N, - std::vector, sources, + std::string, noise, std::string, action, std::string, eigenPack, std::string, solver); }; -template +template class TA2AVectors : public Module { - public: +public: FERM_TYPE_ALIASES(FImpl,); SOLVER_TYPE_ALIASES(FImpl,); - - typedef FermionEigenPack EPack; - typedef CoarseFermionEigenPack CoarseEPack; - - typedef A2AModesSchurDiagTwo A2ABase; - - public: + typedef A2AModesSchurDiagTwo A2ABase; +public: // constructor TA2AVectors(const std::string name); // destructor @@ -53,46 +48,37 @@ class TA2AVectors : public Module virtual void setup(void); // execution virtual void execute(void); - - private: - unsigned int Ls_; - std::string className_; }; -MODULE_REGISTER_TMP(A2AVectors, ARG(TA2AVectors), MSolver); -MODULE_REGISTER_TMP(ZA2AVectors, ARG(TA2AVectors), MSolver); +MODULE_REGISTER_TMP(A2AVectors, + ARG(TA2AVectors>), MSolver); +MODULE_REGISTER_TMP(ZA2AVectors, + ARG(TA2AVectors>), MSolver); /****************************************************************************** * TA2AVectors implementation * ******************************************************************************/ // constructor ///////////////////////////////////////////////////////////////// -template -TA2AVectors::TA2AVectors(const std::string name) +template +TA2AVectors::TA2AVectors(const std::string name) : Module(name) -, className_ (name + "_class") {} // dependencies/products /////////////////////////////////////////////////////// -template -std::vector TA2AVectors::getInput(void) +template +std::vector TA2AVectors::getInput(void) { int Nl = par().Nl; std::string sub_string = ""; if (Nl > 0) sub_string = "_subtract"; - std::vector in = {par().solver + sub_string}; - int n = par().sources.size(); - - for (unsigned int t = 0; t < n; t += 1) - { - in.push_back(par().sources[t]); - } + std::vector in = {par().solver + sub_string, par().noise}; return in; } -template -std::vector TA2AVectors::getReference(void) +template +std::vector TA2AVectors::getReference(void) { std::vector ref = {par().action}; @@ -104,22 +90,21 @@ std::vector TA2AVectors::getReference(void) return ref; } -template -std::vector TA2AVectors::getOutput(void) +template +std::vector TA2AVectors::getOutput(void) { - std::vector out = {getName(), className_}; + std::vector out = {getName()}; return out; } // setup /////////////////////////////////////////////////////////////////////// -template -void TA2AVectors::setup(void) +template +void TA2AVectors::setup(void) { - int N = par().N; int Nl = par().Nl; - int Nh = N - Nl; - bool return_5d = par().return_5d; + bool return_5d = par().return_5d; + auto &noise = envGet(DilutedNoise, par().noise); int Ls; std::string sub_string = ""; @@ -139,94 +124,80 @@ void TA2AVectors::setup(void) if (Nl > 0) { // Low modes - auto &epack = envGet(EPack, par().eigenPack); + auto &epack = envGet(Pack, par().eigenPack); LOG(Message) << "Creating a2a vectors " << getName() << " using eigenpack '" << par().eigenPack << "' (" << epack.evec.size() << " modes)" << - " and " << Nh << " high modes." << std::endl; + " and " << noise.size() << " high modes." << std::endl; evec = &epack.evec; eval = &epack.eval; } else { LOG(Message) << "Creating a2a vectors " << getName() << - " using " << Nh << " high modes only." << std::endl; + " using " << noise.size() << " high modes only." << std::endl; } - envCreate(A2ABase, className_, Ls, - evec, eval, - action, - solver, - Nl, Nh, - return_5d); + envCreate(A2ABase, getName(), Ls, evec, eval, action, solver, Nl, noise.size(), + return_5d); } // execution /////////////////////////////////////////////////////////////////// -template -void TA2AVectors::execute(void) +template +void TA2AVectors::execute(void) { auto &action = envGet(FMat, par().action); + auto &noise = envGet(DilutedNoise, par().noise); - int Nt = env().getDim(Tp); - int Nc = FImpl::Dimension; - int Ls_; + int Ls; int Nl = par().Nl; std::string sub_string = ""; if (Nl > 0) sub_string = "_subtract"; - Ls_ = env().getObjectLs(par().solver + sub_string); + Ls = env().getObjectLs(par().solver + sub_string); - auto &a2areturn = envGet(A2ABase, className_); + auto &a2areturn = envGet(A2ABase, getName()); // High modes - auto sources = par().sources; - int Nsrc = par().sources.size(); - envGetTmp(FermionField, ferm_src); envGetTmp(FermionField, unphys_ferm); envGetTmp(FermionField, tmp); - - int N_count = 0; - for (unsigned int s = 0; s < Ns; ++s) - for (unsigned int c = 0; c < Nc; ++c) - for (unsigned int T = 0; T < Nsrc; T++) + for (unsigned int i = 0; i < noise.size(); i++) + { + LOG(Message) << "A2A src for noise vector " << i << std::endl; + // source conversion for 4D sources + if (!env().isObject5d(par().noise)) { - auto &prop_src = envGet(PropagatorField, sources[T]); - LOG(Message) << "A2A src for s = " << s << " , c = " << c << ", T = " << T << std::endl; - // source conversion for 4D sources - if (!env().isObject5d(sources[T])) + if (Ls == 1) { - if (Ls_ == 1) - { - PropToFerm(ferm_src, prop_src, s, c); - tmp = ferm_src; - } - else - { - PropToFerm(tmp, prop_src, s, c); - action.ImportPhysicalFermionSource(tmp, ferm_src); - action.ImportUnphysicalFermion(tmp, unphys_ferm); - } + ferm_src = noise[i]; + tmp = ferm_src; } - // source conversion for 5D sources else { - if (Ls_ != env().getObjectLs(sources[T])) - { - HADRONS_ERROR(Size, "Ls mismatch between quark action and source"); - } - else - { - PropToFerm(ferm_src, prop_src, s, c); - action.ExportPhysicalFermionSolution(ferm_src, tmp); - unphys_ferm = ferm_src; - } + tmp = noise[i]; + action.ImportPhysicalFermionSource(noise[i], ferm_src); + action.ImportUnphysicalFermion(noise[i], unphys_ferm); } - LOG(Message) << "a2areturn.high_modes Ncount = " << N_count << std::endl; - a2areturn.high_modes(ferm_src, unphys_ferm, tmp, N_count); - N_count++; } + // source conversion for 5D sources + else + { + if (Ls != env().getObjectLs(par().noise)) + { + HADRONS_ERROR(Size, "Ls mismatch between quark action and source"); + } + else + { + ferm_src = noise[i]; + action.ExportPhysicalFermionSolution(ferm_src, tmp); + unphys_ferm = ferm_src; + } + } + LOG(Message) << "solveHighMode i = " << i << std::endl; + a2areturn.high_modes(ferm_src, unphys_ferm, tmp, i); + } } END_MODULE_NAMESPACE From 4eac4e575e0ea75476f2510b646873191c34a4c7 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 6 Aug 2018 12:42:25 +0100 Subject: [PATCH 228/267] Hadrons: meson fields indentation fix --- .../Modules/MContraction/A2AMesonField.hpp | 462 +++++++++--------- 1 file changed, 233 insertions(+), 229 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index 9a09c0b6..cee6858e 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -21,9 +21,9 @@ class A2AMesonFieldPar : Serializable { public: GRID_SERIALIZABLE_CLASS_MEMBERS(A2AMesonFieldPar, - int, cacheBlock, - int, schurBlock, - int, Nmom, + int, cacheBlock, + int, schurBlock, + int, Nmom, std::string, A2A, std::string, output); }; @@ -52,15 +52,15 @@ class TA2AMesonField : public Module // Arithmetic help. Move to Grid?? virtual void MesonField(Eigen::Tensor &mat, - const LatticeFermion *lhs, - const LatticeFermion *rhs, - std::vector gammas, - const std::vector &mom, - int orthogdim, - double &t0, - double &t1, - double &t2, - double &t3); + const LatticeFermion *lhs, + const LatticeFermion *rhs, + std::vector gammas, + const std::vector &mom, + int orthogdim, + double &t0, + double &t1, + double &t2, + double &t3); }; MODULE_REGISTER(A2AMesonField, ARG(TA2AMesonField), MContraction); @@ -160,7 +160,8 @@ void TA2AMesonField::MesonField(Eigen::Tensor &mat, int MFlvol = ld*Lblock*Rblock*Nmom; Vector lvSum(MFrvol); - parallel_for (int r = 0; r < MFrvol; r++){ + parallel_for (int r = 0; r < MFrvol; r++) + { lvSum[r] = zero; } @@ -176,110 +177,113 @@ void TA2AMesonField::MesonField(Eigen::Tensor &mat, t0-=usecond(); // Nested parallelism would be ok // Wasting cores here. Test case r - parallel_for(int r=0;r_ostride[orthogdim]; // base offset for start of plane - for(int n=0;n icoor(Nd); std::vector extracted(Nsimd); - for(int i=0;iiCoorFromIindex(icoor,idx); - for(int idx=0;idxiCoorFromIindex(icoor,idx); - - int ldx = rt+icoor[orthogdim]*rd; - - int ij_ldx = m+Nmom*i+Nmom*Lblock*j+Nmom*Lblock*Rblock*ldx; - - lsSum[ij_ldx]=lsSum[ij_ldx]+extracted[idx]; + int ldx = rt+icoor[orthogdim]*rd; + int ij_ldx = m+Nmom*i+Nmom*Lblock*j+Nmom*Lblock*Rblock*ldx; + lsSum[ij_ldx]=lsSum[ij_ldx]+extracted[idx]; } - }}} + } } t1+=usecond(); - assert(mat.dimension(0) == Nmom); assert(mat.dimension(1) == Ngamma); assert(mat.dimension(2) == Nt); t2-=usecond(); + // ld loop and local only?? int pd = grid->_processors[orthogdim]; int pc = grid->_processor_coor[orthogdim]; parallel_for_nest2(int lt=0;lt::MesonField(Eigen::Tensor &mat, template void TA2AMesonField::execute(void) { - LOG(Message) << "Computing A2A meson field" << std::endl; + LOG(Message) << "Computing A2A meson field" << std::endl; - auto &a2a = envGet(A2ABase, par().A2A); - - // 2+6+4+4 = 16 gammas - // Ordering defined here - std::vector gammas ( { - Gamma::Algebra::Gamma5, - Gamma::Algebra::Identity, - Gamma::Algebra::GammaX, - Gamma::Algebra::GammaY, - Gamma::Algebra::GammaZ, - Gamma::Algebra::GammaT, - Gamma::Algebra::GammaXGamma5, - Gamma::Algebra::GammaYGamma5, - Gamma::Algebra::GammaZGamma5, - Gamma::Algebra::GammaTGamma5, - Gamma::Algebra::SigmaXY, - Gamma::Algebra::SigmaXZ, - Gamma::Algebra::SigmaXT, - Gamma::Algebra::SigmaYZ, - Gamma::Algebra::SigmaYT, - Gamma::Algebra::SigmaZT - }); + auto &a2a = envGet(A2ABase, par().A2A); + + // 2+6+4+4 = 16 gammas + // Ordering defined here + std::vector gammas ( { + Gamma::Algebra::Gamma5, + Gamma::Algebra::Identity, + Gamma::Algebra::GammaX, + Gamma::Algebra::GammaY, + Gamma::Algebra::GammaZ, + Gamma::Algebra::GammaT, + Gamma::Algebra::GammaXGamma5, + Gamma::Algebra::GammaYGamma5, + Gamma::Algebra::GammaZGamma5, + Gamma::Algebra::GammaTGamma5, + Gamma::Algebra::SigmaXY, + Gamma::Algebra::SigmaXZ, + Gamma::Algebra::SigmaXT, + Gamma::Algebra::SigmaYZ, + Gamma::Algebra::SigmaYT, + Gamma::Algebra::SigmaZT + }); - /////////////////////////////////////////////// - // Square assumption for now Nl = Nr = N - /////////////////////////////////////////////// - int nt = env().getDim(Tp); - int nx = env().getDim(Xp); - int ny = env().getDim(Yp); - int nz = env().getDim(Zp); - int Nl = a2a.get_Nl(); - int N = Nl + a2a.get_Nh(); - - int ngamma = gammas.size(); + /////////////////////////////////////////////// + // Square assumption for now Nl = Nr = N + /////////////////////////////////////////////// + int nt = env().getDim(Tp); + int nx = env().getDim(Xp); + int ny = env().getDim(Yp); + int nz = env().getDim(Zp); + int Nl = a2a.get_Nl(); + int N = Nl + a2a.get_Nh(); + + int ngamma = gammas.size(); - int schurBlock = par().schurBlock; - int cacheBlock = par().cacheBlock; - int nmom = par().Nmom; + int schurBlock = par().schurBlock; + int cacheBlock = par().cacheBlock; + int nmom = par().Nmom; - /////////////////////////////////////////////// - // Momentum setup - /////////////////////////////////////////////// - GridBase *grid = env().getGrid(1); - std::vector phases(nmom,grid); - for(int m=0;m phases(nmom,grid); + for(int m=0;m mesonField (nmom,ngamma,nt,N,N); - LOG(Message) << "N = Nh+Nl for A2A MesonField is " << N << std::endl; + Eigen::Tensor mesonField (nmom,ngamma,nt,N,N); + LOG(Message) << "N = Nh+Nl for A2A MesonField is " << N << std::endl; - envGetTmp(std::vector, w); - envGetTmp(std::vector, v); - envGetTmp(FermionField, tmp_5d); + envGetTmp(std::vector, w); + envGetTmp(std::vector, v); + envGetTmp(FermionField, tmp_5d); - LOG(Message) << "Finding v and w vectors for N = " << N << std::endl; + LOG(Message) << "Finding v and w vectors for N = " << N << std::endl; - ////////////////////////////////////////////////////////////////////////// - // i,j is first loop over SchurBlock factors reusing 5D matrices - // ii,jj is second loop over cacheBlock factors for high perf contractoin - // iii,jjj are loops within cacheBlock - // Total index is sum of these i+ii+iii etc... - ////////////////////////////////////////////////////////////////////////// - - double flops = 0.0; - double bytes = 0.0; - double vol = nx*ny*nz*nt; - double t_schur=0; - double t_contr=0; - double t_int_0=0; - double t_int_1=0; - double t_int_2=0; - double t_int_3=0; + ////////////////////////////////////////////////////////////////////////// + // i,j is first loop over SchurBlock factors reusing 5D matrices + // ii,jj is second loop over cacheBlock factors for high perf contractoin + // iii,jjj are loops within cacheBlock + // Total index is sum of these i+ii+iii etc... + ////////////////////////////////////////////////////////////////////////// + + double flops = 0.0; + double bytes = 0.0; + double vol = nx*ny*nz*nt; + double t_schur=0; + double t_contr=0; + double t_int_0=0; + double t_int_1=0; + double t_int_2=0; + double t_int_3=0; - double t0 = usecond(); - int N_i = N; - int N_j = N; - for(int i=0;i mesonFieldBlocked(nmom,ngamma,nt,N_iii,N_jjj); + + t_contr-=usecond(); + MesonField(mesonFieldBlocked, &w[ii], &v[jj], gammas, phases,Tp, + t_int_0,t_int_1,t_int_2,t_int_3); + t_contr+=usecond(); + flops += vol * ( 2 * 8.0 + 6.0 + 8.0*nmom) * N_iii*N_jjj*ngamma; + + bytes += vol * (12.0 * sizeof(Complex) ) * N_iii*N_jjj + + vol * ( 2.0 * sizeof(Complex) *nmom ) * N_iii*N_jjj* ngamma; /////////////////////////////////////////////////////////////// - // Get the W and V vectors for this schurBlock^2 set of terms - /////////////////////////////////////////////////////////////// - int N_ii = MIN(N_i-i,schurBlock); - int N_jj = MIN(N_j-j,schurBlock); - - t_schur-=usecond(); - for(int ii =0;ii < N_ii;ii++) a2a.return_w(i+ii, tmp_5d, w[ii]); - for(int jj =0;jj < N_jj;jj++) a2a.return_v(j+jj, tmp_5d, v[jj]); - t_schur+=usecond(); - - LOG(Message) << "Found w vectors " << i <<" .. " << i+N_ii-1 << std::endl; - LOG(Message) << "Found v vectors " << j <<" .. " << j+N_jj-1 << std::endl; - - /////////////////////////////////////////////////////////////// - // Series of cache blocked chunks of the contractions within this SchurBlock + // Copy back to full meson field tensor /////////////////////////////////////////////////////////////// - for(int ii=0;ii mesonFieldBlocked(nmom,ngamma,nt,N_iii,N_jjj); + double nodes=grid->NodeCount(); + double t1 = usecond(); + LOG(Message) << " Contraction of MesonFields took "<<(t1-t0)/1.0e6<< " seconds " << std::endl; + LOG(Message) << " Schur "<<(t_schur)/1.0e6<< " seconds " << std::endl; + LOG(Message) << " Contr "<<(t_contr)/1.0e6<< " seconds " << std::endl; + LOG(Message) << " Intern0 "<<(t_int_0)/1.0e6<< " seconds " << std::endl; + LOG(Message) << " Intern1 "<<(t_int_1)/1.0e6<< " seconds " << std::endl; + LOG(Message) << " Intern2 "<<(t_int_2)/1.0e6<< " seconds " << std::endl; + LOG(Message) << " Intern3 "<<(t_int_3)/1.0e6<< " seconds " << std::endl; - t_contr-=usecond(); - MesonField(mesonFieldBlocked, &w[ii], &v[jj], gammas, phases,Tp, - t_int_0,t_int_1,t_int_2,t_int_3); - t_contr+=usecond(); - flops += vol * ( 2 * 8.0 + 6.0 + 8.0*nmom) * N_iii*N_jjj*ngamma; + double t_kernel = t_int_0 + t_int_1; + LOG(Message) << " Arith "< + ///////////////////////////////////////////////////////////////////////// + std::vector corr(nt,ComplexD(0.0)); - /////////////////////////////////////////////////////////////// - // Copy back to full meson field tensor - /////////////////////////////////////////////////////////////// - parallel_for_nest2(int iii=0;iii< N_iii;iii++) { - for(int jjj=0;jjj< N_jjj;jjj++) { - for(int m =0;m< nmom;m++) { - for(int g =0;g< ngamma;g++) { - for(int t =0;t< nt;t++) { - mesonField(m,g,t,i+ii+iii,j+jj+jjj) = mesonFieldBlocked(m,g,t,iii,jjj); - }}} + for(int i=0;iNodeCount(); - double t1 = usecond(); - LOG(Message) << " Contraction of MesonFields took "<<(t1-t0)/1.0e6<< " seconds " << std::endl; - LOG(Message) << " Schur "<<(t_schur)/1.0e6<< " seconds " << std::endl; - LOG(Message) << " Contr "<<(t_contr)/1.0e6<< " seconds " << std::endl; - LOG(Message) << " Intern0 "<<(t_int_0)/1.0e6<< " seconds " << std::endl; - LOG(Message) << " Intern1 "<<(t_int_1)/1.0e6<< " seconds " << std::endl; - LOG(Message) << " Intern2 "<<(t_int_2)/1.0e6<< " seconds " << std::endl; - LOG(Message) << " Intern3 "<<(t_int_3)/1.0e6<< " seconds " << std::endl; - - double t_kernel = t_int_0 + t_int_1; - LOG(Message) << " Arith "< - ///////////////////////////////////////////////////////////////////////// - std::vector corr(nt,ComplexD(0.0)); - - for(int i=0;i Date: Tue, 7 Aug 2018 18:26:49 +0100 Subject: [PATCH 229/267] Hadrons: schedule loading fix --- extras/Hadrons/Application.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extras/Hadrons/Application.cc b/extras/Hadrons/Application.cc index 0490c222..18bd93e3 100644 --- a/extras/Hadrons/Application.cc +++ b/extras/Hadrons/Application.cc @@ -218,11 +218,12 @@ void Application::loadSchedule(const std::string filename) program_.push_back(vm().getModuleAddress(name)); } loadedSchedule_ = true; + scheduled_ = true; } void Application::printSchedule(void) { - if (!scheduled_) + if (!scheduled_ and !loadedSchedule_) { HADRONS_ERROR(Definition, "Computation not scheduled"); } From 231cc95be6a248293ef742da18aa6eff97d8ccee Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 7 Aug 2018 18:27:19 +0100 Subject: [PATCH 230/267] Hadrons: eigenvalues precision fix --- extras/Hadrons/EigenPack.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extras/Hadrons/EigenPack.hpp b/extras/Hadrons/EigenPack.hpp index 4169cba1..d19e7728 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/extras/Hadrons/EigenPack.hpp @@ -56,7 +56,7 @@ public: VecRecord(void): index(0), eval(0.) {} }; public: - std::vector eval; + std::vector eval; std::vector evec; PackRecord record; public: @@ -215,7 +215,7 @@ class CoarseEigenPack: public EigenPack public: typedef CoarseF CoarseField; public: - std::vector evalCoarse; + std::vector evalCoarse; std::vector evecCoarse; public: CoarseEigenPack(void) = default; From 0677adb4dde178fe938ea48dac65384c831f50a4 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 7 Aug 2018 18:27:59 +0100 Subject: [PATCH 231/267] Hadrons: overhaul of A2A for production --- extras/Hadrons/A2AVectors.hpp | 387 ++++++++++++++++++ extras/Hadrons/AllToAllReduction.hpp | 146 ------- extras/Hadrons/AllToAllVectors.hpp | 227 ---------- extras/Hadrons/Makefile.am | 2 +- .../Modules/MContraction/A2AMesonField.hpp | 97 ++--- extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 230 ++++++----- 6 files changed, 558 insertions(+), 531 deletions(-) create mode 100644 extras/Hadrons/A2AVectors.hpp delete mode 100644 extras/Hadrons/AllToAllReduction.hpp delete mode 100644 extras/Hadrons/AllToAllVectors.hpp diff --git a/extras/Hadrons/A2AVectors.hpp b/extras/Hadrons/A2AVectors.hpp new file mode 100644 index 00000000..745ef94f --- /dev/null +++ b/extras/Hadrons/A2AVectors.hpp @@ -0,0 +1,387 @@ +#ifndef A2A_Vectors_hpp_ +#define A2A_Vectors_hpp_ + +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +//////////////////////////////// +// A2A Modes +//////////////////////////////// + +template +class A2AVectorsSchurDiagTwo +{ +public: + FERM_TYPE_ALIASES(FImpl,); + SOLVER_TYPE_ALIASES(FImpl,); +public: + A2AVectorsSchurDiagTwo(FMat &action, Solver &solver); + virtual ~A2AVectorsSchurDiagTwo(void) = default; + void makeLowModeV(FermionField &vout, const FermionField &evec, const Real &eval); + void makeLowModeV5D(FermionField &vout_4d, FermionField &vout_5d, const FermionField &evec, const Real &eval); + void makeLowModeW(FermionField &wout, const FermionField &evec, const Real &eval); + void makeLowModeW5D(FermionField &wout_4d, FermionField &wout_5d, const FermionField &evec, const Real &eval); + void makeHighModeV(FermionField &vout, const FermionField &noise); + void makeHighModeV5D(FermionField &vout_4d, FermionField &vout_5d, const FermionField &noise_5d); + void makeHighModeW(FermionField &wout, const FermionField &noise); + void makeHighModeW5D(FermionField &vout_5d, FermionField &wout_5d, const FermionField &noise_5d); +private: + FMat &action_; + Solver &solver_; + GridBase *fGrid_, *frbGrid_, *gGrid_; + bool is5d_; + FermionField src_o_, sol_e_, sol_o_, tmp_, tmp5_; + SchurDiagTwoOperator op_; +}; + +template +A2AVectorsSchurDiagTwo::A2AVectorsSchurDiagTwo(FMat &action, Solver &solver) +: action_(action) +, solver_(solver) +, fGrid_(action_.FermionGrid()) +, frbGrid_(action_.FermionRedBlackGrid()) +, gGrid_(action_.GaugeGrid()) +, src_o_(frbGrid_) +, sol_e_(frbGrid_) +, sol_o_(frbGrid_) +, tmp_(frbGrid_) +, tmp5_(fGrid_) +, op_(action_) +{} + +template +void A2AVectorsSchurDiagTwo::makeLowModeV(FermionField &vout, const FermionField &evec, const Real &eval) +{ + src_o_ = evec; + src_o_.checkerboard = Odd; + pickCheckerboard(Even, sol_e_, vout); + pickCheckerboard(Odd, sol_o_, vout); + + ///////////////////////////////////////////////////// + // v_ie = -(1/eval_i) * MeeInv Meo MooInv evec_i + ///////////////////////////////////////////////////// + action_.MooeeInv(src_o_, tmp_); + assert(tmp_.checkerboard == Odd); + action_.Meooe(tmp_, sol_e_); + assert(sol_e_.checkerboard == Even); + action_.MooeeInv(sol_e_, tmp_); + assert(tmp_.checkerboard == Even); + sol_e_ = (-1.0 / eval) * tmp_; + assert(sol_e_.checkerboard == Even); + + ///////////////////////////////////////////////////// + // v_io = (1/eval_i) * MooInv evec_i + ///////////////////////////////////////////////////// + action_.MooeeInv(src_o_, tmp_); + assert(tmp_.checkerboard == Odd); + sol_o_ = (1.0 / eval) * tmp_; + assert(sol_o_.checkerboard == Odd); + + setCheckerboard(vout, sol_e_); + assert(sol_e_.checkerboard == Even); + setCheckerboard(vout, sol_o_); + assert(sol_o_.checkerboard == Odd); +} + +template +void A2AVectorsSchurDiagTwo::makeLowModeV5D(FermionField &vout_4d, FermionField &vout_5d, const FermionField &evec, const Real &eval) +{ + makeLowModeV(vout_5d, evec, eval); + action_.ExportPhysicalFermionSolution(vout_5d, vout_4d); +} + +template +void A2AVectorsSchurDiagTwo::makeLowModeW(FermionField &wout, const FermionField &evec, const Real &eval) +{ + src_o_ = evec; + src_o_.checkerboard = Odd; + pickCheckerboard(Even, sol_e_, wout); + pickCheckerboard(Odd, sol_o_, wout); + + ///////////////////////////////////////////////////// + // w_ie = - MeeInvDag MoeDag Doo evec_i + ///////////////////////////////////////////////////// + op_.Mpc(src_o_, tmp_); + assert(tmp_.checkerboard == Odd); + action_.MeooeDag(tmp_, sol_e_); + assert(sol_e_.checkerboard == Even); + action_.MooeeInvDag(sol_e_, tmp_); + assert(tmp_.checkerboard == Even); + sol_e_ = (-1.0) * tmp_; + + ///////////////////////////////////////////////////// + // w_io = Doo evec_i + ///////////////////////////////////////////////////// + op_.Mpc(src_o_, sol_o_); + assert(sol_o_.checkerboard == Odd); + + setCheckerboard(wout, sol_e_); + assert(sol_e_.checkerboard == Even); + setCheckerboard(wout, sol_o_); + assert(sol_o_.checkerboard == Odd); +} + +template +void A2AVectorsSchurDiagTwo::makeLowModeW5D(FermionField &wout_4d, + FermionField &wout_5d, + const FermionField &evec, + const Real &eval) +{ + makeLowModeW(tmp5_, evec, eval); + action_.DminusDag(tmp5_, wout_5d); + action_.ExportPhysicalFermionSource(wout_5d, wout_4d); +} + +template +void A2AVectorsSchurDiagTwo::makeHighModeV(FermionField &vout, + const FermionField &noise) +{ + solver_(vout, noise); +} + +template +void A2AVectorsSchurDiagTwo::makeHighModeV5D(FermionField &vout_4d, + FermionField &vout_5d, + const FermionField &noise) +{ + if (noise._grid->Dimensions() == fGrid_->Dimensions() - 1) + { + action_.ImportPhysicalFermionSource(noise, tmp5_); + } + else + { + tmp5_ = noise; + } + makeHighModeV(vout_5d, tmp5_); + action_.ExportPhysicalFermionSolution(vout_5d, vout_4d); +} + +template +void A2AVectorsSchurDiagTwo::makeHighModeW(FermionField &wout, + const FermionField &noise) +{ + wout = noise; +} + +template +void A2AVectorsSchurDiagTwo::makeHighModeW5D(FermionField &wout_4d, + FermionField &wout_5d, + const FermionField &noise) +{ + if (noise._grid->Dimensions() == fGrid_->Dimensions() - 1) + { + action_.ImportUnphysicalFermion(noise, wout_5d); + wout_4d = noise; + } + else + { + wout_5d = noise; + action_.ExportPhysicalFermionSource(wout_5d, wout_4d); + } +} + + + // A2AVectorsSchurDiagTwo(const int Nl, const int Nh, + // std::vector &v, + // std::vector &w, + // const bool _return_5d) + // : Nl(_Nl), Nh(_Nh), + // return_5d(_return_5d) + // { + // if (!return_5d) + // { + // init_resize(1, Nl + Nh); + // } + // else + // { + // init_resize(Nl + Nh, Nl + Nh); + // } + // } + + // void init_resize(const size_t size_5d, const size_t size_4d, + // GridBase *grid_5d, GridBase *grid_4d) + // { + // w_5d.resize(size_5d, grid_5d); + // v_5d.resize(size_5d, grid_5d); + // w_4d.resize(size_4d, grid_4d); + // v_4d.resize(size_4d, grid_4d); + // } + + // int get_Nh(void) const + // { + // return Nh; + // } + + // int get_Nl(void) const + // { + // return Nl; + // } + + // void low_modes(int il, const Field &evec, const Real &eval, Matrix &action) + // { + // int i5d; + + // i5d = 0; + // if (return_5d) i5d = il; + // this->low_mode_v(v_5d[i5d], v_4d[il], evec, eval, action); + // this->low_mode_w(w_5d[i5d], w_4d[il], evec, eval, action); + // } + + // void high_modes(int ih, Field &source_5d, Field &w_source_5d, + // Field &source_4d, Solver &solver) + // { + // int i5d; + + // i5d = 0; + // if (return_5d) i5d = ih + Nl; + // this->high_mode_v(source_5d, v_5d[i5d], v_4d[ih + Nl], solver); + // this->high_mode_w(w_source_5d, source_4d, w_5d[i5d], w_4d[ih + Nl]); + // } + + // void return_v(int i, Field &vout_5d, Field &vout_4d) + // { + // vout_4d = v_4d[i]; + // if (!(return_5d)) i = 0; + // vout_5d = v_5d[i]; + // } + + // void return_w(int i, Field &wout_5d, Field &wout_4d) + // { + // wout_4d = w_4d[i]; + // if (!(return_5d)) i = 0; + // wout_5d = w_5d[i]; + // } + + // void low_mode_v(Field &vout_5d, Field &vout_4d, const Field &evec, + // const Real &eval, Matrix &action) + // { + // GridBase *grid = action.RedBlackGrid(); + // Field src_o(grid); + // Field sol_e(grid); + // Field sol_o(grid); + // Field tmp(grid); + + // src_o = evec; + // src_o.checkerboard = Odd; + // pickCheckerboard(Even, sol_e, vout_5d); + // pickCheckerboard(Odd, sol_o, vout_5d); + + // ///////////////////////////////////////////////////// + // // v_ie = -(1/eval_i) * MeeInv Meo MooInv evec_i + // ///////////////////////////////////////////////////// + // action.MooeeInv(src_o, tmp); + // assert(tmp.checkerboard == Odd); + // action.Meooe(tmp, sol_e); + // assert(sol_e.checkerboard == Even); + // action.MooeeInv(sol_e, tmp); + // assert(tmp.checkerboard == Even); + // sol_e = (-1.0 / eval) * tmp; + // assert(sol_e.checkerboard == Even); + + // ///////////////////////////////////////////////////// + // // v_io = (1/eval_i) * MooInv evec_i + // ///////////////////////////////////////////////////// + // action.MooeeInv(src_o, tmp); + // assert(tmp.checkerboard == Odd); + // sol_o = (1.0 / eval) * tmp; + // assert(sol_o.checkerboard == Odd); + + // setCheckerboard(vout_5d, sol_e); + // assert(sol_e.checkerboard == Even); + // setCheckerboard(vout_5d, sol_o); + // assert(sol_o.checkerboard == Odd); + + // action.ExportPhysicalFermionSolution(vout_5d, vout_4d); + // } + + // void low_mode_w(Field &wout_5d, Field &wout_4d, const Field &evec, + // const Real &eval, Matrix &action) + // { + // GridBase *grid = action.RedBlackGrid(); + // SchurDiagTwoOperator _HermOpEO(action); + + // Field src_o(grid); + // Field sol_e(grid); + // Field sol_o(grid); + // Field tmp(grid); + + // GridBase *fgrid = action.Grid(); + // Field tmp_wout(fgrid); + + // src_o = evec; + // src_o.checkerboard = Odd; + // pickCheckerboard(Even, sol_e, tmp_wout); + // pickCheckerboard(Odd, sol_o, tmp_wout); + + // ///////////////////////////////////////////////////// + // // w_ie = - MeeInvDag MoeDag Doo evec_i + // ///////////////////////////////////////////////////// + // _HermOpEO.Mpc(src_o, tmp); + // assert(tmp.checkerboard == Odd); + // action.MeooeDag(tmp, sol_e); + // assert(sol_e.checkerboard == Even); + // action.MooeeInvDag(sol_e, tmp); + // assert(tmp.checkerboard == Even); + // sol_e = (-1.0) * tmp; + + // ///////////////////////////////////////////////////// + // // w_io = Doo evec_i + // ///////////////////////////////////////////////////// + // _HermOpEO.Mpc(src_o, sol_o); + // assert(sol_o.checkerboard == Odd); + + // setCheckerboard(tmp_wout, sol_e); + // assert(sol_e.checkerboard == Even); + // setCheckerboard(tmp_wout, sol_o); + // assert(sol_o.checkerboard == Odd); + + // action.DminusDag(tmp_wout, wout_5d); + + // action.ExportPhysicalFermionSource(wout_5d, wout_4d); + // } + + // void high_mode_v(const Field &source, Field &vout_5d, Field &vout_4d, + // Matrix &action, Solver &solver) + // { + // GridBase *fgrid = action.Grid(); + // solver(vout_5d, source); // Note: solver is solver(out, in) + // action.ExportPhysicalFermionSolution(vout_5d, vout_4d); + // } + + // void high_mode_w(const Field &w_source_5d, const Field &source_4d, + // Field &wout_5d, Field &wout_4d) + // { + // wout_5d = w_source_5d; + // wout_4d = source_4d; + // } + +// TODO: A2A for coarse eigenvectors + +// template +// class A2ALMSchurDiagTwoCoarse : public A2AModesSchurDiagTwo +// { +// private: +// const std::vector &subspace; +// const std::vector &evec_coarse; +// const std::vector &eval_coarse; +// Matrix &action; + +// public: +// A2ALMSchurDiagTwoCoarse(const std::vector &_subspace, const std::vector &_evec_coarse, const std::vector &_eval_coarse, Matrix &_action) +// : subspace(_subspace), evec_coarse(_evec_coarse), eval_coarse(_eval_coarse), action(_action){}; + +// void operator()(int i, FineField &vout, FineField &wout) +// { +// FineField prom_evec(subspace[0]._grid); +// blockPromote(evec_coarse[i], prom_evec, subspace); +// this->low_mode_v(action, prom_evec, eval_coarse[i], vout); +// this->low_mode_w(action, prom_evec, eval_coarse[i], wout); +// } +// }; + +END_HADRONS_NAMESPACE + +#endif // A2A_Vectors_hpp_ \ No newline at end of file diff --git a/extras/Hadrons/AllToAllReduction.hpp b/extras/Hadrons/AllToAllReduction.hpp deleted file mode 100644 index 7b2d2c1a..00000000 --- a/extras/Hadrons/AllToAllReduction.hpp +++ /dev/null @@ -1,146 +0,0 @@ -#ifndef A2A_Reduction_hpp_ -#define A2A_Reduction_hpp_ - -#include -#include -#include - -BEGIN_HADRONS_NAMESPACE - -//////////////////////////////////////////// -// A2A Meson Field Inner Product -//////////////////////////////////////////// - -template -void sliceInnerProductMesonField(std::vector> &mat, - const std::vector> &lhs, - const std::vector> &rhs, - int orthogdim) -{ - typedef typename FermionField::scalar_type scalar_type; - typedef typename FermionField::vector_type vector_type; - - int Lblock = lhs.size(); - int Rblock = rhs.size(); - - GridBase *grid = lhs[0]._grid; - - const int Nd = grid->_ndimension; - const int Nsimd = grid->Nsimd(); - int Nt = grid->GlobalDimensions()[orthogdim]; - - assert(mat.size() == Lblock * Rblock); - for (int t = 0; t < mat.size(); t++) - { - assert(mat[t].size() == Nt); - } - - int fd = grid->_fdimensions[orthogdim]; - int ld = grid->_ldimensions[orthogdim]; - int rd = grid->_rdimensions[orthogdim]; - - // will locally sum vectors first - // sum across these down to scalars - // splitting the SIMD - std::vector> lvSum(rd * Lblock * Rblock); - for(int r=0;r lsSum(ld * Lblock * Rblock, scalar_type(0.0)); - - int e1 = grid->_slice_nblock[orthogdim]; - int e2 = grid->_slice_block[orthogdim]; - int stride = grid->_slice_stride[orthogdim]; - - // std::cout << GridLogMessage << " Entering first parallel loop " << std::endl; - // Parallelise over t-direction doesn't expose as much parallelism as needed for KNL - parallel_for(int r = 0; r < rd; r++) - { - int so = r * grid->_ostride[orthogdim]; // base offset for start of plane - for (int n = 0; n < e1; n++) - { - for (int b = 0; b < e2; b++) - { - int ss = so + n * stride + b; - for (int i = 0; i < Lblock; i++) - { - auto left = conjugate(lhs[i]._odata[ss]); - for (int j = 0; j < Rblock; j++) - { - int idx = i + Lblock * j + Lblock * Rblock * r; - auto right = rhs[j]._odata[ss]; - vector_type vv = left()(0)(0) * right()(0)(0) - + left()(0)(1) * right()(0)(1) - + left()(0)(2) * right()(0)(2) - + left()(1)(0) * right()(1)(0) - + left()(1)(1) * right()(1)(1) - + left()(1)(2) * right()(1)(2) - + left()(2)(0) * right()(2)(0) - + left()(2)(1) * right()(2)(1) - + left()(2)(2) * right()(2)(2) - + left()(3)(0) * right()(3)(0) - + left()(3)(1) * right()(3)(1) - + left()(3)(2) * right()(3)(2); - - lvSum[idx] = lvSum[idx] + vv; - } - } - } - } - } - - // std::cout << GridLogMessage << " Entering second parallel loop " << std::endl; - // Sum across simd lanes in the plane, breaking out orthog dir. - parallel_for(int rt = 0; rt < rd; rt++) - { - std::vector icoor(Nd); - for (int i = 0; i < Lblock; i++) - { - for (int j = 0; j < Rblock; j++) - { - iScalar temp; - std::vector> extracted(Nsimd); - temp._internal = lvSum[i + Lblock * j + Lblock * Rblock * rt]; - extract(temp, extracted); - for (int idx = 0; idx < Nsimd; idx++) - { - grid->iCoorFromIindex(icoor, idx); - int ldx = rt + icoor[orthogdim] * rd; - int ij_dx = i + Lblock * j + Lblock * Rblock * ldx; - lsSum[ij_dx] = lsSum[ij_dx] + extracted[idx]._internal; - } - } - } - } - - // std::cout << GridLogMessage << " Entering non parallel loop " << std::endl; - for (int t = 0; t < fd; t++) - { - int pt = t/ld; // processor plane - int lt = t%ld; - for (int i = 0; i < Lblock; i++) - { - for (int j = 0; j < Rblock; j++) - { - if (pt == grid->_processor_coor[orthogdim]) - { - int ij_dx = i + Lblock * j + Lblock * Rblock * lt; - mat[i + j * Lblock][t] = lsSum[ij_dx]; - } - else - { - mat[i + j * Lblock][t] = scalar_type(0.0); - } - - } - } - } - // std::cout << GridLogMessage << " Done " << std::endl; - // defer sum over nodes. - return; -} - -END_HADRONS_NAMESPACE - -#endif // A2A_Reduction_hpp_ \ No newline at end of file diff --git a/extras/Hadrons/AllToAllVectors.hpp b/extras/Hadrons/AllToAllVectors.hpp deleted file mode 100644 index b21b6862..00000000 --- a/extras/Hadrons/AllToAllVectors.hpp +++ /dev/null @@ -1,227 +0,0 @@ -#ifndef A2A_Vectors_hpp_ -#define A2A_Vectors_hpp_ - -#include -#include -#include - -BEGIN_HADRONS_NAMESPACE - -//////////////////////////////// -// A2A Modes -//////////////////////////////// - -template -class A2AModesSchurDiagTwo -{ - private: - const std::vector *evec; - const std::vector *eval; - Matrix &action; - Solver &solver; - const int Nl, Nh; - const bool return_5d; - std::vector w_high_5d, v_high_5d, w_high_4d, v_high_4d; - - public: - A2AModesSchurDiagTwo(const std::vector *_evec, const std::vector *_eval, - Matrix &_action, - Solver &_solver, - const int _Nl, const int _Nh, - const bool _return_5d) - : evec(_evec), eval(_eval), - action(_action), - solver(_solver), - Nl(_Nl), Nh(_Nh), - return_5d(_return_5d) - { - init_resize(1, Nh); - if (return_5d) init_resize(Nh, Nh); - }; - - void init_resize(const size_t size_5d, const size_t size_4d) - { - GridBase *grid_5d = action.Grid(); - GridBase *grid_4d = action.GaugeGrid(); - - w_high_5d.resize(size_5d, grid_5d); - v_high_5d.resize(size_5d, grid_5d); - - w_high_4d.resize(size_4d, grid_4d); - v_high_4d.resize(size_4d, grid_4d); - } - - int get_Nh(void) const - { - return Nh; - } - - int get_Nl(void) const - { - return Nl; - } - - void high_modes(Field &source_5d, Field &w_source_5d, Field &source_4d, int i) - { - int i5d; - LOG(Message) << "A2A high modes for i = " << i << std::endl; - i5d = 0; - if (return_5d) i5d = i; - this->high_mode_v(action, solver, source_5d, v_high_5d[i5d], v_high_4d[i]); - this->high_mode_w(w_source_5d, source_4d, w_high_5d[i5d], w_high_4d[i]); - } - - void return_v(int i, Field &vout_5d, Field &vout_4d) - { - if (i < Nl) - { - this->low_mode_v(action, evec->at(i), eval->at(i), vout_5d, vout_4d); - } - else - { - vout_4d = v_high_4d[i - Nl]; - if (!(return_5d)) i = Nl; - vout_5d = v_high_5d[i - Nl]; - } - } - void return_w(int i, Field &wout_5d, Field &wout_4d) - { - if (i < Nl) - { - this->low_mode_w(action, evec->at(i), eval->at(i), wout_5d, wout_4d); - } - else - { - wout_4d = w_high_4d[i - Nl]; - if (!(return_5d)) i = Nl; - wout_5d = w_high_5d[i - Nl]; - } - } - - void low_mode_v(Matrix &action, const Field &evec, const RealD &eval, Field &vout_5d, Field &vout_4d) - { - GridBase *grid = action.RedBlackGrid(); - Field src_o(grid); - Field sol_e(grid); - Field sol_o(grid); - Field tmp(grid); - - src_o = evec; - src_o.checkerboard = Odd; - pickCheckerboard(Even, sol_e, vout_5d); - pickCheckerboard(Odd, sol_o, vout_5d); - - ///////////////////////////////////////////////////// - // v_ie = -(1/eval_i) * MeeInv Meo MooInv evec_i - ///////////////////////////////////////////////////// - action.MooeeInv(src_o, tmp); - assert(tmp.checkerboard == Odd); - action.Meooe(tmp, sol_e); - assert(sol_e.checkerboard == Even); - action.MooeeInv(sol_e, tmp); - assert(tmp.checkerboard == Even); - sol_e = (-1.0 / eval) * tmp; - assert(sol_e.checkerboard == Even); - - ///////////////////////////////////////////////////// - // v_io = (1/eval_i) * MooInv evec_i - ///////////////////////////////////////////////////// - action.MooeeInv(src_o, tmp); - assert(tmp.checkerboard == Odd); - sol_o = (1.0 / eval) * tmp; - assert(sol_o.checkerboard == Odd); - - setCheckerboard(vout_5d, sol_e); - assert(sol_e.checkerboard == Even); - setCheckerboard(vout_5d, sol_o); - assert(sol_o.checkerboard == Odd); - - action.ExportPhysicalFermionSolution(vout_5d, vout_4d); - } - - void low_mode_w(Matrix &action, const Field &evec, const RealD &eval, Field &wout_5d, Field &wout_4d) - { - GridBase *grid = action.RedBlackGrid(); - SchurDiagTwoOperator _HermOpEO(action); - - Field src_o(grid); - Field sol_e(grid); - Field sol_o(grid); - Field tmp(grid); - - GridBase *fgrid = action.Grid(); - Field tmp_wout(fgrid); - - src_o = evec; - src_o.checkerboard = Odd; - pickCheckerboard(Even, sol_e, tmp_wout); - pickCheckerboard(Odd, sol_o, tmp_wout); - - ///////////////////////////////////////////////////// - // w_ie = - MeeInvDag MoeDag Doo evec_i - ///////////////////////////////////////////////////// - _HermOpEO.Mpc(src_o, tmp); - assert(tmp.checkerboard == Odd); - action.MeooeDag(tmp, sol_e); - assert(sol_e.checkerboard == Even); - action.MooeeInvDag(sol_e, tmp); - assert(tmp.checkerboard == Even); - sol_e = (-1.0) * tmp; - - ///////////////////////////////////////////////////// - // w_io = Doo evec_i - ///////////////////////////////////////////////////// - _HermOpEO.Mpc(src_o, sol_o); - assert(sol_o.checkerboard == Odd); - - setCheckerboard(tmp_wout, sol_e); - assert(sol_e.checkerboard == Even); - setCheckerboard(tmp_wout, sol_o); - assert(sol_o.checkerboard == Odd); - - action.DminusDag(tmp_wout, wout_5d); - - action.ExportPhysicalFermionSource(wout_5d, wout_4d); - } - - void high_mode_v(Matrix &action, Solver &solver, const Field &source, Field &vout_5d, Field &vout_4d) - { - GridBase *fgrid = action.Grid(); - solver(vout_5d, source); // Note: solver is solver(out, in) - action.ExportPhysicalFermionSolution(vout_5d, vout_4d); - } - - void high_mode_w(const Field &w_source_5d, const Field &source_4d, Field &wout_5d, Field &wout_4d) - { - wout_5d = w_source_5d; - wout_4d = source_4d; - } -}; - -// TODO: A2A for coarse eigenvectors - -// template -// class A2ALMSchurDiagTwoCoarse : public A2AModesSchurDiagTwo -// { -// private: -// const std::vector &subspace; -// const std::vector &evec_coarse; -// const std::vector &eval_coarse; -// Matrix &action; - -// public: -// A2ALMSchurDiagTwoCoarse(const std::vector &_subspace, const std::vector &_evec_coarse, const std::vector &_eval_coarse, Matrix &_action) -// : subspace(_subspace), evec_coarse(_evec_coarse), eval_coarse(_eval_coarse), action(_action){}; - -// void operator()(int i, FineField &vout, FineField &wout) -// { -// FineField prom_evec(subspace[0]._grid); -// blockPromote(evec_coarse[i], prom_evec, subspace); -// this->low_mode_v(action, prom_evec, eval_coarse[i], vout); -// this->low_mode_w(action, prom_evec, eval_coarse[i], wout); -// } -// }; - -END_HADRONS_NAMESPACE - -#endif // A2A_Vectors_hpp_ \ No newline at end of file diff --git a/extras/Hadrons/Makefile.am b/extras/Hadrons/Makefile.am index 7240be82..840c6fb5 100644 --- a/extras/Hadrons/Makefile.am +++ b/extras/Hadrons/Makefile.am @@ -14,7 +14,7 @@ libHadrons_a_SOURCES = \ libHadrons_adir = $(pkgincludedir)/Hadrons nobase_libHadrons_a_HEADERS = \ $(modules_hpp) \ - AllToAllVectors.hpp \ + A2AVectors.hpp \ Application.hpp \ EigenPack.hpp \ Environment.hpp \ diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index cee6858e..c2dd9007 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include BEGIN_HADRONS_NAMESPACE @@ -24,7 +24,8 @@ class A2AMesonFieldPar : Serializable int, cacheBlock, int, schurBlock, int, Nmom, - std::string, A2A, + std::string, v, + std::string, w, std::string, output); }; @@ -34,9 +35,6 @@ class TA2AMesonField : public Module public: FERM_TYPE_ALIASES(FImpl, ); SOLVER_TYPE_ALIASES(FImpl, ); - - typedef A2AModesSchurDiagTwo A2ABase; - public: // constructor TA2AMesonField(const std::string name); @@ -80,7 +78,7 @@ TA2AMesonField::TA2AMesonField(const std::string name) template std::vector TA2AMesonField::getInput(void) { - std::vector in = {par().A2A}; + std::vector in = {par().v, par().w}; return in; } @@ -97,20 +95,7 @@ std::vector TA2AMesonField::getOutput(void) // setup /////////////////////////////////////////////////////////////////////// template void TA2AMesonField::setup(void) -{ - auto &a2a = envGet(A2ABase, par().A2A); - int Ls = env().getObjectLs(par().A2A); - - // Four D fields - envTmp(std::vector, "w", 1, par().schurBlock, - FermionField(env().getGrid())); - envTmp(std::vector, "v", 1, par().schurBlock, - FermionField(env().getGrid())); - - // 5D tmp - envTmpLat(FermionField, "tmp_5d", Ls); -} - +{} ////////////////////////////////////////////////////////////////////////////////// // Cache blocked arithmetic routine @@ -304,7 +289,8 @@ void TA2AMesonField::execute(void) { LOG(Message) << "Computing A2A meson field" << std::endl; - auto &a2a = envGet(A2ABase, par().A2A); + auto &v = envGet(std::vector, par().v); + auto &w = envGet(std::vector, par().w); // 2+6+4+4 = 16 gammas // Ordering defined here @@ -330,15 +316,13 @@ void TA2AMesonField::execute(void) /////////////////////////////////////////////// // Square assumption for now Nl = Nr = N /////////////////////////////////////////////// - int nt = env().getDim(Tp); - int nx = env().getDim(Xp); - int ny = env().getDim(Yp); - int nz = env().getDim(Zp); - int Nl = a2a.get_Nl(); - int N = Nl + a2a.get_Nh(); - + int nt = env().getDim(Tp); + int nx = env().getDim(Xp); + int ny = env().getDim(Yp); + int nz = env().getDim(Zp); + int N_i = w.size(); + int N_j = v.size(); int ngamma = gammas.size(); - int schurBlock = par().schurBlock; int cacheBlock = par().cacheBlock; int nmom = par().Nmom; @@ -353,14 +337,8 @@ void TA2AMesonField::execute(void) phases[m] = Complex(1.0); // All zero momentum for now } - Eigen::Tensor mesonField (nmom,ngamma,nt,N,N); - LOG(Message) << "N = Nh+Nl for A2A MesonField is " << N << std::endl; - - envGetTmp(std::vector, w); - envGetTmp(std::vector, v); - envGetTmp(FermionField, tmp_5d); - - LOG(Message) << "Finding v and w vectors for N = " << N << std::endl; + Eigen::Tensor mesonField(nmom,ngamma,nt,N_i,N_j); + LOG(Message) << "MesonField size " << N_i << "x" << N_j << "x" << nt << std::endl; ////////////////////////////////////////////////////////////////////////// // i,j is first loop over SchurBlock factors reusing 5D matrices @@ -379,10 +357,10 @@ void TA2AMesonField::execute(void) double t_int_2=0; double t_int_3=0; - double t0 = usecond(); - int N_i = N; - int N_j = N; - + double t0 = usecond(); + int NBlock_i = N_i/schurBlock + (((N_i % schurBlock) != 0) ? 1 : 0); + int NBlock_j = N_j/schurBlock + (((N_j % schurBlock) != 0) ? 1 : 0); + for(int i=0;i::execute(void) int N_jj = MIN(N_j-j,schurBlock); t_schur-=usecond(); - for(int ii =0;ii < N_ii;ii++) a2a.return_w(i+ii, tmp_5d, w[ii]); - for(int jj =0;jj < N_jj;jj++) a2a.return_v(j+jj, tmp_5d, v[jj]); t_schur+=usecond(); - LOG(Message) << "Found w vectors " << i <<" .. " << i+N_ii-1 << std::endl; - LOG(Message) << "Found v vectors " << j <<" .. " << j+N_jj-1 << std::endl; + LOG(Message) << "Meson field block " + << j/schurBlock + NBlock_j*i/schurBlock + 1 + << "/" << NBlock_i*NBlock_j << " [" << i <<" .. " + << i+N_ii-1 << ", " << j <<" .. " << j+N_jj-1 << "]" + << std::endl; /////////////////////////////////////////////////////////////// // Series of cache blocked chunks of the contractions within this SchurBlock @@ -411,11 +390,11 @@ void TA2AMesonField::execute(void) Eigen::Tensor mesonFieldBlocked(nmom,ngamma,nt,N_iii,N_jjj); t_contr-=usecond(); - MesonField(mesonFieldBlocked, &w[ii], &v[jj], gammas, phases,Tp, - t_int_0,t_int_1,t_int_2,t_int_3); + MesonField(mesonFieldBlocked, &w[i+ii], &v[j+jj], gammas, phases,Tp, + t_int_0,t_int_1,t_int_2,t_int_3); t_contr+=usecond(); + // flops for general N_c & N_s flops += vol * ( 2 * 8.0 + 6.0 + 8.0*nmom) * N_iii*N_jjj*ngamma; - bytes += vol * (12.0 * sizeof(Complex) ) * N_iii*N_jjj + vol * ( 2.0 * sizeof(Complex) *nmom ) * N_iii*N_jjj* ngamma; @@ -435,17 +414,17 @@ void TA2AMesonField::execute(void) double nodes=grid->NodeCount(); double t1 = usecond(); - LOG(Message) << " Contraction of MesonFields took "<<(t1-t0)/1.0e6<< " seconds " << std::endl; - LOG(Message) << " Schur "<<(t_schur)/1.0e6<< " seconds " << std::endl; - LOG(Message) << " Contr "<<(t_contr)/1.0e6<< " seconds " << std::endl; - LOG(Message) << " Intern0 "<<(t_int_0)/1.0e6<< " seconds " << std::endl; - LOG(Message) << " Intern1 "<<(t_int_1)/1.0e6<< " seconds " << std::endl; - LOG(Message) << " Intern2 "<<(t_int_2)/1.0e6<< " seconds " << std::endl; - LOG(Message) << " Intern3 "<<(t_int_3)/1.0e6<< " seconds " << std::endl; + LOG(Message) << "Contraction of MesonFields took "<<(t1-t0)/1.0e6<< " s" << std::endl; + LOG(Message) << " Schur " << (t_schur)/1.0e6 << " s" << std::endl; + LOG(Message) << " Contr " << (t_contr)/1.0e6 << " s" << std::endl; + LOG(Message) << " Intern0 " << (t_int_0)/1.0e6 << " s" << std::endl; + LOG(Message) << " Intern1 " << (t_int_1)/1.0e6 << " s" << std::endl; + LOG(Message) << " Intern2 " << (t_int_2)/1.0e6 << " s" << std::endl; + LOG(Message) << " Intern3 " << (t_int_3)/1.0e6 << " s" << std::endl; double t_kernel = t_int_0 + t_int_1; - LOG(Message) << " Arith "<::execute(void) ///////////////////////////////////////////////////////////////////////// std::vector corr(nt,ComplexD(0.0)); - for(int i=0;i #include #include -#include +#include #include BEGIN_HADRONS_NAMESPACE /****************************************************************************** - * A2AVectors * + * Create all-to-all vector class * ******************************************************************************/ BEGIN_MODULE_NAMESPACE(MSolver) @@ -21,7 +21,6 @@ class A2AVectorsPar: Serializable public: GRID_SERIALIZABLE_CLASS_MEMBERS(A2AVectorsPar, bool, return_5d, - int, Nl, std::string, noise, std::string, action, std::string, eigenPack, @@ -34,7 +33,7 @@ class TA2AVectors : public Module public: FERM_TYPE_ALIASES(FImpl,); SOLVER_TYPE_ALIASES(FImpl,); - typedef A2AModesSchurDiagTwo A2ABase; + typedef A2AVectorsSchurDiagTwo A2A; public: // constructor TA2AVectors(const std::string name); @@ -42,12 +41,14 @@ public: virtual ~TA2AVectors(void) {}; // dependency relation virtual std::vector getInput(void); - virtual std::vector getReference(void); virtual std::vector getOutput(void); // setup virtual void setup(void); // execution virtual void execute(void); +private: + std::string solverName_; + unsigned int Nl_{0}; }; MODULE_REGISTER_TMP(A2AVectors, @@ -68,32 +69,24 @@ TA2AVectors::TA2AVectors(const std::string name) template std::vector TA2AVectors::getInput(void) { - int Nl = par().Nl; - std::string sub_string = ""; - if (Nl > 0) sub_string = "_subtract"; + std::string sub_string; + std::vector in; - std::vector in = {par().solver + sub_string, par().noise}; + if (!par().eigenPack.empty()) + { + in.push_back(par().eigenPack); + sub_string = (!par().eigenPack.empty()) ? "_subtract" : ""; + } + in.push_back(par().solver + sub_string); + in.push_back(par().noise); return in; } -template -std::vector TA2AVectors::getReference(void) -{ - std::vector ref = {par().action}; - - if (!par().eigenPack.empty()) - { - ref.push_back(par().eigenPack); - } - - return ref; -} - template std::vector TA2AVectors::getOutput(void) { - std::vector out = {getName()}; + std::vector out = {getName() + "_v", getName() + "_w"}; return out; } @@ -102,102 +95,143 @@ std::vector TA2AVectors::getOutput(void) template void TA2AVectors::setup(void) { - int Nl = par().Nl; - bool return_5d = par().return_5d; - auto &noise = envGet(DilutedNoise, par().noise); - int Ls; + bool hasLowModes = (!par().eigenPack.empty()); + std::string sub_string = (hasLowModes) ? "_subtract" : ""; + bool return_5d = par().return_5d; + auto &noise = envGet(DilutedNoise, par().noise); + auto &action = envGet(FMat, par().action); + auto &solver = envGet(Solver, par().solver + sub_string); + int Ls = env().getObjectLs(par().action); - std::string sub_string = ""; - if (Nl > 0) sub_string = "_subtract"; - auto &solver = envGet(Solver, par().solver + sub_string); - Ls = env().getObjectLs(par().solver + sub_string); - - auto &action = envGet(FMat, par().action); - - envTmpLat(FermionField, "ferm_src", Ls); - envTmpLat(FermionField, "unphys_ferm", Ls); - envTmpLat(FermionField, "tmp"); - - std::vector *evec; - const std::vector *eval; - - if (Nl > 0) + LOG(Message) << "Creating all-to-all vectors "; + if (hasLowModes) { - // Low modes auto &epack = envGet(Pack, par().eigenPack); - - LOG(Message) << "Creating a2a vectors " << getName() << - " using eigenpack '" << par().eigenPack << "' (" - << epack.evec.size() << " modes)" << - " and " << noise.size() << " high modes." << std::endl; - evec = &epack.evec; - eval = &epack.eval; + + Nl_ = epack.evec.size(); + std::cout << " using eigenpack '" << par().eigenPack << "' (" + << Nl_ << " low modes) and noise '" + << par().noise << "' (" << noise.size() + << " noise vectors)" << std::endl; } else { - LOG(Message) << "Creating a2a vectors " << getName() << - " using " << noise.size() << " high modes only." << std::endl; + std::cout << " using noise '" << par().noise << "' (" << noise.size() + << " noise vectors)" << std::endl; } - - envCreate(A2ABase, getName(), Ls, evec, eval, action, solver, Nl, noise.size(), - return_5d); + envCreate(std::vector, getName() + "_v", 1, + Nl_ + noise.size(), FermionField(env().getGrid())); + envCreate(std::vector, getName() + "_w", 1, + Nl_ + noise.size(), FermionField(env().getGrid())); + if (Ls > 1) + { + envTmpLat(FermionField, "f5", Ls); + } + envTmp(A2A, "a2a", 1, action, solver); } // execution /////////////////////////////////////////////////////////////////// template void TA2AVectors::execute(void) { - auto &action = envGet(FMat, par().action); - auto &noise = envGet(DilutedNoise, par().noise); + std::string sub_string = (Nl_ > 0) ? "_subtract" : ""; + auto &action = envGet(FMat, par().action); + auto &solver = envGet(Solver, par().solver + sub_string); + auto &noise = envGet(DilutedNoise, par().noise); + auto &v = envGet(std::vector, getName() + "_v"); + auto &w = envGet(std::vector, getName() + "_w"); + int Ls = env().getObjectLs(par().action); - int Ls; - int Nl = par().Nl; - - std::string sub_string = ""; - if (Nl > 0) sub_string = "_subtract"; - Ls = env().getObjectLs(par().solver + sub_string); - - auto &a2areturn = envGet(A2ABase, getName()); - - // High modes - envGetTmp(FermionField, ferm_src); - envGetTmp(FermionField, unphys_ferm); - envGetTmp(FermionField, tmp); - for (unsigned int i = 0; i < noise.size(); i++) + envGetTmp(A2A, a2a); + // Low modes + for (unsigned int il = 0; il < Nl_; il++) { - LOG(Message) << "A2A src for noise vector " << i << std::endl; - // source conversion for 4D sources - if (!env().isObject5d(par().noise)) + auto &epack = envGet(Pack, par().eigenPack); + + LOG(Message) << "V vector i = " << il << " (low mode)" << std::endl; + if (Ls == 1) { - if (Ls == 1) - { - ferm_src = noise[i]; - tmp = ferm_src; - } - else - { - tmp = noise[i]; - action.ImportPhysicalFermionSource(noise[i], ferm_src); - action.ImportUnphysicalFermion(noise[i], unphys_ferm); - } + a2a.makeLowModeV(v[il], epack.evec[il], epack.eval[il]); } - // source conversion for 5D sources else { - if (Ls != env().getObjectLs(par().noise)) - { - HADRONS_ERROR(Size, "Ls mismatch between quark action and source"); - } - else - { - ferm_src = noise[i]; - action.ExportPhysicalFermionSolution(ferm_src, tmp); - unphys_ferm = ferm_src; - } + envGetTmp(FermionField, f5); + a2a.makeLowModeV5D(v[il], f5, epack.evec[il], epack.eval[il]); } - LOG(Message) << "solveHighMode i = " << i << std::endl; - a2areturn.high_modes(ferm_src, unphys_ferm, tmp, i); + LOG(Message) << "W vector i = " << il << " (low mode)" << std::endl; + if (Ls == 1) + { + a2a.makeLowModeW(w[il], epack.evec[il], epack.eval[il]); + } + else + { + envGetTmp(FermionField, f5); + a2a.makeLowModeW5D(w[il], f5, epack.evec[il], epack.eval[il]); + } } + + // High modes + for (unsigned int ih = 0; ih < noise.size(); ih++) + { + LOG(Message) << "V vector i = " << Nl_ + ih + << " (" << ((Nl_ > 0) ? "high " : "") + << "stochastic mode)" << std::endl; + if (Ls == 1) + { + a2a.makeHighModeV(v[Nl_ + ih], noise[ih]); + } + else + { + envGetTmp(FermionField, f5); + a2a.makeHighModeV5D(v[Nl_ + ih], f5, noise[ih]); + std::cout << norm2(v[Nl_ + ih]) << std::endl; + } + LOG(Message) << "W vector i = " << Nl_ + ih + << " (" << ((Nl_ > 0) ? "high " : "") + << "stochastic mode)" << std::endl; + if (Ls == 1) + { + a2a.makeHighModeW(w[Nl_ + ih], noise[ih]); + } + else + { + envGetTmp(FermionField, f5); + a2a.makeHighModeW5D(w[Nl_ + ih], f5, noise[ih]); + std::cout << norm2(w[Nl_ + ih]) << std::endl; + } + } + + + // // source conversion for 4D sources + // if (!env().isObject5d(par().noise)) + // { + // if (Ls == 1) + // { + // ferm_src = noise[ih]; + // tmp = ferm_src; + // } + // else + // { + // tmp = noise[ih]; + // action.ImportPhysicalFermionSource(noise[ih], ferm_src); + // action.ImportUnphysicalFermion(noise[ih], unphys_ferm); + // } + // } + // // source conversion for 5D sources + // else + // { + // if (Ls != env().getObjectLs(par().noise)) + // { + // HADRONS_ERROR(Size, "Ls mismatch between quark action and source"); + // } + // else + // { + // ferm_src = noise[ih]; + // action.ExportPhysicalFermionSolution(ferm_src, tmp); + // unphys_ferm = ferm_src; + // } + // } + // a2a.high_modes(ih, ferm_src, unphys_ferm, tmp, solver); } END_MODULE_NAMESPACE From b2de26589b491cf92981f25f75ab46a6c317abdc Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 7 Aug 2018 18:40:48 +0100 Subject: [PATCH 232/267] Hadrons: code cleaning and copyright update --- extras/Hadrons/A2AVectors.hpp | 226 +++--------------- extras/Hadrons/DilutedNoise.hpp | 27 +++ extras/Hadrons/Modules/MAction/MobiusDWF.cc | 27 +++ extras/Hadrons/Modules/MAction/MobiusDWF.hpp | 27 +++ extras/Hadrons/Modules/MAction/ScaledDWF.cc | 27 +++ extras/Hadrons/Modules/MAction/ScaledDWF.hpp | 27 +++ .../Modules/MContraction/A2AMesonField.cc | 27 +++ .../Modules/MContraction/A2AMesonField.hpp | 31 ++- extras/Hadrons/Modules/MContraction/Meson.hpp | 1 + extras/Hadrons/Modules/MFermion/FreeProp.cc | 3 +- extras/Hadrons/Modules/MFermion/FreeProp.hpp | 3 +- extras/Hadrons/Modules/MGauge/StochEm.cc | 2 +- extras/Hadrons/Modules/MGauge/StochEm.hpp | 2 +- .../Hadrons/Modules/MGauge/StoutSmearing.cc | 27 +++ .../Hadrons/Modules/MGauge/StoutSmearing.hpp | 27 +++ extras/Hadrons/Modules/MGauge/UnitEm.cc | 7 +- extras/Hadrons/Modules/MGauge/UnitEm.hpp | 7 +- .../MNoise/TimeDilutedSpinColorDiagonal.cc | 27 +++ .../MNoise/TimeDilutedSpinColorDiagonal.hpp | 27 +++ .../Hadrons/Modules/MScalar/ChargedProp.hpp | 2 +- extras/Hadrons/Modules/MScalar/ScalarVP.cc | 27 +++ extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 27 +++ .../Hadrons/Modules/MScalar/VPCounterTerms.cc | 27 +++ .../Modules/MScalar/VPCounterTerms.hpp | 27 +++ .../Modules/MScalarSUN/StochFreeField.cc | 27 +++ .../Modules/MScalarSUN/StochFreeField.hpp | 27 +++ .../Modules/MScalarSUN/TimeMomProbe.cc | 27 +++ .../Modules/MScalarSUN/TimeMomProbe.hpp | 27 +++ .../Hadrons/Modules/MScalarSUN/TwoPointNPR.cc | 27 +++ .../Modules/MScalarSUN/TwoPointNPR.hpp | 27 +++ extras/Hadrons/Modules/MSolver/A2AVectors.cc | 28 +++ extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 65 +++-- extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 1 + extras/Hadrons/Solver.hpp | 2 +- 34 files changed, 671 insertions(+), 249 deletions(-) diff --git a/extras/Hadrons/A2AVectors.hpp b/extras/Hadrons/A2AVectors.hpp index 745ef94f..82ed502e 100644 --- a/extras/Hadrons/A2AVectors.hpp +++ b/extras/Hadrons/A2AVectors.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/A2AVectors.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef A2A_Vectors_hpp_ #define A2A_Vectors_hpp_ @@ -183,205 +210,6 @@ void A2AVectorsSchurDiagTwo::makeHighModeW5D(FermionField &wout_4d, } } - - // A2AVectorsSchurDiagTwo(const int Nl, const int Nh, - // std::vector &v, - // std::vector &w, - // const bool _return_5d) - // : Nl(_Nl), Nh(_Nh), - // return_5d(_return_5d) - // { - // if (!return_5d) - // { - // init_resize(1, Nl + Nh); - // } - // else - // { - // init_resize(Nl + Nh, Nl + Nh); - // } - // } - - // void init_resize(const size_t size_5d, const size_t size_4d, - // GridBase *grid_5d, GridBase *grid_4d) - // { - // w_5d.resize(size_5d, grid_5d); - // v_5d.resize(size_5d, grid_5d); - // w_4d.resize(size_4d, grid_4d); - // v_4d.resize(size_4d, grid_4d); - // } - - // int get_Nh(void) const - // { - // return Nh; - // } - - // int get_Nl(void) const - // { - // return Nl; - // } - - // void low_modes(int il, const Field &evec, const Real &eval, Matrix &action) - // { - // int i5d; - - // i5d = 0; - // if (return_5d) i5d = il; - // this->low_mode_v(v_5d[i5d], v_4d[il], evec, eval, action); - // this->low_mode_w(w_5d[i5d], w_4d[il], evec, eval, action); - // } - - // void high_modes(int ih, Field &source_5d, Field &w_source_5d, - // Field &source_4d, Solver &solver) - // { - // int i5d; - - // i5d = 0; - // if (return_5d) i5d = ih + Nl; - // this->high_mode_v(source_5d, v_5d[i5d], v_4d[ih + Nl], solver); - // this->high_mode_w(w_source_5d, source_4d, w_5d[i5d], w_4d[ih + Nl]); - // } - - // void return_v(int i, Field &vout_5d, Field &vout_4d) - // { - // vout_4d = v_4d[i]; - // if (!(return_5d)) i = 0; - // vout_5d = v_5d[i]; - // } - - // void return_w(int i, Field &wout_5d, Field &wout_4d) - // { - // wout_4d = w_4d[i]; - // if (!(return_5d)) i = 0; - // wout_5d = w_5d[i]; - // } - - // void low_mode_v(Field &vout_5d, Field &vout_4d, const Field &evec, - // const Real &eval, Matrix &action) - // { - // GridBase *grid = action.RedBlackGrid(); - // Field src_o(grid); - // Field sol_e(grid); - // Field sol_o(grid); - // Field tmp(grid); - - // src_o = evec; - // src_o.checkerboard = Odd; - // pickCheckerboard(Even, sol_e, vout_5d); - // pickCheckerboard(Odd, sol_o, vout_5d); - - // ///////////////////////////////////////////////////// - // // v_ie = -(1/eval_i) * MeeInv Meo MooInv evec_i - // ///////////////////////////////////////////////////// - // action.MooeeInv(src_o, tmp); - // assert(tmp.checkerboard == Odd); - // action.Meooe(tmp, sol_e); - // assert(sol_e.checkerboard == Even); - // action.MooeeInv(sol_e, tmp); - // assert(tmp.checkerboard == Even); - // sol_e = (-1.0 / eval) * tmp; - // assert(sol_e.checkerboard == Even); - - // ///////////////////////////////////////////////////// - // // v_io = (1/eval_i) * MooInv evec_i - // ///////////////////////////////////////////////////// - // action.MooeeInv(src_o, tmp); - // assert(tmp.checkerboard == Odd); - // sol_o = (1.0 / eval) * tmp; - // assert(sol_o.checkerboard == Odd); - - // setCheckerboard(vout_5d, sol_e); - // assert(sol_e.checkerboard == Even); - // setCheckerboard(vout_5d, sol_o); - // assert(sol_o.checkerboard == Odd); - - // action.ExportPhysicalFermionSolution(vout_5d, vout_4d); - // } - - // void low_mode_w(Field &wout_5d, Field &wout_4d, const Field &evec, - // const Real &eval, Matrix &action) - // { - // GridBase *grid = action.RedBlackGrid(); - // SchurDiagTwoOperator _HermOpEO(action); - - // Field src_o(grid); - // Field sol_e(grid); - // Field sol_o(grid); - // Field tmp(grid); - - // GridBase *fgrid = action.Grid(); - // Field tmp_wout(fgrid); - - // src_o = evec; - // src_o.checkerboard = Odd; - // pickCheckerboard(Even, sol_e, tmp_wout); - // pickCheckerboard(Odd, sol_o, tmp_wout); - - // ///////////////////////////////////////////////////// - // // w_ie = - MeeInvDag MoeDag Doo evec_i - // ///////////////////////////////////////////////////// - // _HermOpEO.Mpc(src_o, tmp); - // assert(tmp.checkerboard == Odd); - // action.MeooeDag(tmp, sol_e); - // assert(sol_e.checkerboard == Even); - // action.MooeeInvDag(sol_e, tmp); - // assert(tmp.checkerboard == Even); - // sol_e = (-1.0) * tmp; - - // ///////////////////////////////////////////////////// - // // w_io = Doo evec_i - // ///////////////////////////////////////////////////// - // _HermOpEO.Mpc(src_o, sol_o); - // assert(sol_o.checkerboard == Odd); - - // setCheckerboard(tmp_wout, sol_e); - // assert(sol_e.checkerboard == Even); - // setCheckerboard(tmp_wout, sol_o); - // assert(sol_o.checkerboard == Odd); - - // action.DminusDag(tmp_wout, wout_5d); - - // action.ExportPhysicalFermionSource(wout_5d, wout_4d); - // } - - // void high_mode_v(const Field &source, Field &vout_5d, Field &vout_4d, - // Matrix &action, Solver &solver) - // { - // GridBase *fgrid = action.Grid(); - // solver(vout_5d, source); // Note: solver is solver(out, in) - // action.ExportPhysicalFermionSolution(vout_5d, vout_4d); - // } - - // void high_mode_w(const Field &w_source_5d, const Field &source_4d, - // Field &wout_5d, Field &wout_4d) - // { - // wout_5d = w_source_5d; - // wout_4d = source_4d; - // } - -// TODO: A2A for coarse eigenvectors - -// template -// class A2ALMSchurDiagTwoCoarse : public A2AModesSchurDiagTwo -// { -// private: -// const std::vector &subspace; -// const std::vector &evec_coarse; -// const std::vector &eval_coarse; -// Matrix &action; - -// public: -// A2ALMSchurDiagTwoCoarse(const std::vector &_subspace, const std::vector &_evec_coarse, const std::vector &_eval_coarse, Matrix &_action) -// : subspace(_subspace), evec_coarse(_evec_coarse), eval_coarse(_eval_coarse), action(_action){}; - -// void operator()(int i, FineField &vout, FineField &wout) -// { -// FineField prom_evec(subspace[0]._grid); -// blockPromote(evec_coarse[i], prom_evec, subspace); -// this->low_mode_v(action, prom_evec, eval_coarse[i], vout); -// this->low_mode_w(action, prom_evec, eval_coarse[i], wout); -// } -// }; - END_HADRONS_NAMESPACE #endif // A2A_Vectors_hpp_ \ No newline at end of file diff --git a/extras/Hadrons/DilutedNoise.hpp b/extras/Hadrons/DilutedNoise.hpp index a284d46b..16561c99 100644 --- a/extras/Hadrons/DilutedNoise.hpp +++ b/extras/Hadrons/DilutedNoise.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/DilutedNoise.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_DilutedNoise_hpp_ #define Hadrons_DilutedNoise_hpp_ diff --git a/extras/Hadrons/Modules/MAction/MobiusDWF.cc b/extras/Hadrons/Modules/MAction/MobiusDWF.cc index 8c138bca..9cc4755a 100644 --- a/extras/Hadrons/Modules/MAction/MobiusDWF.cc +++ b/extras/Hadrons/Modules/MAction/MobiusDWF.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MAction/MobiusDWF.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MAction/MobiusDWF.hpp b/extras/Hadrons/Modules/MAction/MobiusDWF.hpp index a026a864..9cead7bd 100644 --- a/extras/Hadrons/Modules/MAction/MobiusDWF.hpp +++ b/extras/Hadrons/Modules/MAction/MobiusDWF.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MAction/MobiusDWF.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MAction_MobiusDWF_hpp_ #define Hadrons_MAction_MobiusDWF_hpp_ diff --git a/extras/Hadrons/Modules/MAction/ScaledDWF.cc b/extras/Hadrons/Modules/MAction/ScaledDWF.cc index 19e7cf4c..40eed326 100644 --- a/extras/Hadrons/Modules/MAction/ScaledDWF.cc +++ b/extras/Hadrons/Modules/MAction/ScaledDWF.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MAction/ScaledDWF.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MAction/ScaledDWF.hpp b/extras/Hadrons/Modules/MAction/ScaledDWF.hpp index 78127f6f..b75ff31d 100644 --- a/extras/Hadrons/Modules/MAction/ScaledDWF.hpp +++ b/extras/Hadrons/Modules/MAction/ScaledDWF.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MAction/ScaledDWF.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MAction_ScaledDWF_hpp_ #define Hadrons_MAction_ScaledDWF_hpp_ diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.cc b/extras/Hadrons/Modules/MContraction/A2AMesonField.cc index 5867b1dd..ffc45e22 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.cc +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MContraction/A2AMesonField.cc + +Copyright (C) 2015-2018 + +Author: paboyle + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index c2dd9007..0f419186 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -1,3 +1,32 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MContraction/A2AMesonField.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli +Author: Peter Boyle +Author: paboyle + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MContraction_A2AMesonField_hpp_ #define Hadrons_MContraction_A2AMesonField_hpp_ @@ -10,7 +39,7 @@ BEGIN_HADRONS_NAMESPACE /****************************************************************************** - * A2AMesonField * + * All-to-all meson field creation * ******************************************************************************/ BEGIN_MODULE_NAMESPACE(MContraction) diff --git a/extras/Hadrons/Modules/MContraction/Meson.hpp b/extras/Hadrons/Modules/MContraction/Meson.hpp index 96d65512..66a19214 100644 --- a/extras/Hadrons/Modules/MContraction/Meson.hpp +++ b/extras/Hadrons/Modules/MContraction/Meson.hpp @@ -8,6 +8,7 @@ Copyright (C) 2015-2018 Author: Antonin Portelli Author: Lanny91 +Author: Vera Guelpers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/extras/Hadrons/Modules/MFermion/FreeProp.cc b/extras/Hadrons/Modules/MFermion/FreeProp.cc index b8eb0529..7b3a0ce5 100644 --- a/extras/Hadrons/Modules/MFermion/FreeProp.cc +++ b/extras/Hadrons/Modules/MFermion/FreeProp.cc @@ -6,8 +6,7 @@ Source file: extras/Hadrons/Modules/MFermion/FreeProp.cc Copyright (C) 2015-2018 -Author: Antonin Portelli -Author: Vera Guelpers +Author: Vera Guelpers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/extras/Hadrons/Modules/MFermion/FreeProp.hpp b/extras/Hadrons/Modules/MFermion/FreeProp.hpp index 4e448188..6538e09d 100644 --- a/extras/Hadrons/Modules/MFermion/FreeProp.hpp +++ b/extras/Hadrons/Modules/MFermion/FreeProp.hpp @@ -6,7 +6,8 @@ Source file: extras/Hadrons/Modules/MFermion/FreeProp.hpp Copyright (C) 2015-2018 -Author: Vera Guelpers +Author: Antonin Portelli +Author: Vera Guelpers This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/extras/Hadrons/Modules/MGauge/StochEm.cc b/extras/Hadrons/Modules/MGauge/StochEm.cc index 1727706c..36d0be7c 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.cc +++ b/extras/Hadrons/Modules/MGauge/StochEm.cc @@ -7,7 +7,7 @@ Source file: extras/Hadrons/Modules/MGauge/StochEm.cc Copyright (C) 2015-2018 Author: Antonin Portelli -Author: James Harrison +Author: James Harrison Author: Vera Guelpers This program is free software; you can redistribute it and/or modify diff --git a/extras/Hadrons/Modules/MGauge/StochEm.hpp b/extras/Hadrons/Modules/MGauge/StochEm.hpp index 5eb9f1e9..fd07c294 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.hpp +++ b/extras/Hadrons/Modules/MGauge/StochEm.hpp @@ -7,7 +7,7 @@ Source file: extras/Hadrons/Modules/MGauge/StochEm.hpp Copyright (C) 2015-2018 Author: Antonin Portelli -Author: James Harrison +Author: James Harrison Author: Vera Guelpers This program is free software; you can redistribute it and/or modify diff --git a/extras/Hadrons/Modules/MGauge/StoutSmearing.cc b/extras/Hadrons/Modules/MGauge/StoutSmearing.cc index 161e74aa..3dae8428 100644 --- a/extras/Hadrons/Modules/MGauge/StoutSmearing.cc +++ b/extras/Hadrons/Modules/MGauge/StoutSmearing.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MGauge/StoutSmearing.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MGauge/StoutSmearing.hpp b/extras/Hadrons/Modules/MGauge/StoutSmearing.hpp index 66406f5b..ddfc1a73 100644 --- a/extras/Hadrons/Modules/MGauge/StoutSmearing.hpp +++ b/extras/Hadrons/Modules/MGauge/StoutSmearing.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MGauge/StoutSmearing.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MGauge_StoutSmearing_hpp_ #define Hadrons_MGauge_StoutSmearing_hpp_ diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.cc b/extras/Hadrons/Modules/MGauge/UnitEm.cc index 6260f10a..6b3be47e 100644 --- a/extras/Hadrons/Modules/MGauge/UnitEm.cc +++ b/extras/Hadrons/Modules/MGauge/UnitEm.cc @@ -2,12 +2,11 @@ Grid physics library, www.github.com/paboyle/Grid -Source file: extras/Hadrons/Modules/MGauge/StochEm.cc +Source file: extras/Hadrons/Modules/MGauge/UnitEm.cc -Copyright (C) 2015 -Copyright (C) 2016 +Copyright (C) 2015-2018 -Author: James Harrison +Author: James Harrison This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.hpp b/extras/Hadrons/Modules/MGauge/UnitEm.hpp index 07ee5bba..a9cb9dfa 100644 --- a/extras/Hadrons/Modules/MGauge/UnitEm.hpp +++ b/extras/Hadrons/Modules/MGauge/UnitEm.hpp @@ -2,12 +2,11 @@ Grid physics library, www.github.com/paboyle/Grid -Source file: extras/Hadrons/Modules/MGauge/StochEm.hpp +Source file: extras/Hadrons/Modules/MGauge/UnitEm.hpp -Copyright (C) 2015 -Copyright (C) 2016 +Copyright (C) 2015-2018 -Author: James Harrison +Author: James Harrison This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc index 472a0b4d..50997962 100644 --- a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc +++ b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp index 7e2a471f..12340cbb 100644 --- a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp +++ b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MNoise_TimeDilutedSpinColorDiagonal_hpp_ #define Hadrons_MNoise_TimeDilutedSpinColorDiagonal_hpp_ diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp index 3ca7940f..5b2f0422 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp +++ b/extras/Hadrons/Modules/MScalar/ChargedProp.hpp @@ -7,7 +7,7 @@ Source file: extras/Hadrons/Modules/MScalar/ChargedProp.hpp Copyright (C) 2015-2018 Author: Antonin Portelli -Author: James Harrison +Author: James Harrison This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index fdb9586e..d560ec5a 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalar/ScalarVP.cc + +Copyright (C) 2015-2018 + +Author: James Harrison + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include #include #include diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index 741325d1..e1b2dc3d 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalar/ScalarVP.hpp + +Copyright (C) 2015-2018 + +Author: James Harrison + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MScalar_ScalarVP_hpp_ #define Hadrons_MScalar_ScalarVP_hpp_ diff --git a/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc b/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc index b3393679..86867788 100644 --- a/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc +++ b/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalar/VPCounterTerms.cc + +Copyright (C) 2015-2018 + +Author: James Harrison + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include #include diff --git a/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp b/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp index 99e1b1ce..a2ccbb56 100644 --- a/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp +++ b/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp + +Copyright (C) 2015-2018 + +Author: James Harrison + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MScalar_VPCounterTerms_hpp_ #define Hadrons_MScalar_VPCounterTerms_hpp_ diff --git a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.cc b/extras/Hadrons/Modules/MScalarSUN/StochFreeField.cc index 0be90022..db14d75d 100644 --- a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.cc +++ b/extras/Hadrons/Modules/MScalarSUN/StochFreeField.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/StochFreeField.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp b/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp index 75ef3fde..ea15f3ef 100644 --- a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MScalarSUN_StochFreeField_hpp_ #define Hadrons_MScalarSUN_StochFreeField_hpp_ diff --git a/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.cc b/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.cc index f22d08af..eaddd318 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.cc +++ b/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp b/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp index 4807e865..80424936 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MScalarSUN_TimeMomProbe_hpp_ #define Hadrons_MScalarSUN_TimeMomProbe_hpp_ diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.cc b/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.cc index 70fb2445..712f86d8 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.cc +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp b/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp index 4c2cdb0d..48dddd4f 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MScalarSUN_TwoPointNPR_hpp_ #define Hadrons_MScalarSUN_TwoPointNPR_hpp_ diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.cc b/extras/Hadrons/Modules/MSolver/A2AVectors.cc index 477d0b72..a13920ff 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.cc +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.cc @@ -1,3 +1,31 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MSolver/A2AVectors.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli +Author: fionnoh + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp index 9d2de4dd..27c0cca1 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -1,3 +1,31 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MSolver/A2AVectors.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli +Author: fionnoh + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MSolver_A2AVectors_hpp_ #define Hadrons_MSolver_A2AVectors_hpp_ @@ -12,7 +40,7 @@ BEGIN_HADRONS_NAMESPACE /****************************************************************************** - * Create all-to-all vector class * + * Create all-to-all V & W vectors * ******************************************************************************/ BEGIN_MODULE_NAMESPACE(MSolver) @@ -57,7 +85,7 @@ MODULE_REGISTER_TMP(ZA2AVectors, ARG(TA2AVectors>), MSolver); /****************************************************************************** - * TA2AVectors implementation * + * TA2AVectors implementation * ******************************************************************************/ // constructor ///////////////////////////////////////////////////////////////// template @@ -200,39 +228,8 @@ void TA2AVectors::execute(void) std::cout << norm2(w[Nl_ + ih]) << std::endl; } } - - - // // source conversion for 4D sources - // if (!env().isObject5d(par().noise)) - // { - // if (Ls == 1) - // { - // ferm_src = noise[ih]; - // tmp = ferm_src; - // } - // else - // { - // tmp = noise[ih]; - // action.ImportPhysicalFermionSource(noise[ih], ferm_src); - // action.ImportUnphysicalFermion(noise[ih], unphys_ferm); - // } - // } - // // source conversion for 5D sources - // else - // { - // if (Ls != env().getObjectLs(par().noise)) - // { - // HADRONS_ERROR(Size, "Ls mismatch between quark action and source"); - // } - // else - // { - // ferm_src = noise[ih]; - // action.ExportPhysicalFermionSolution(ferm_src, tmp); - // unphys_ferm = ferm_src; - // } - // } - // a2a.high_modes(ih, ferm_src, unphys_ferm, tmp, solver); } + END_MODULE_NAMESPACE END_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index 347371a3..3b9a43c8 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -7,6 +7,7 @@ Source file: extras/Hadrons/Modules/MSolver/RBPrecCG.hpp Copyright (C) 2015-2018 Author: Antonin Portelli +Author: fionnoh This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/extras/Hadrons/Solver.hpp b/extras/Hadrons/Solver.hpp index 08867634..5d72e3d5 100644 --- a/extras/Hadrons/Solver.hpp +++ b/extras/Hadrons/Solver.hpp @@ -2,7 +2,7 @@ Grid physics library, www.github.com/paboyle/Grid -Source file: extras/Hadrons/EigenPack.hpp +Source file: extras/Hadrons/Solver.hpp Copyright (C) 2015-2018 From 0a4020eb4d8ea0625761ad8c0f1b3d321b117e38 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 7 Aug 2018 18:42:52 +0100 Subject: [PATCH 233/267] Hadrons: copyright fix --- extras/Hadrons/A2AVectors.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/extras/Hadrons/A2AVectors.hpp b/extras/Hadrons/A2AVectors.hpp index 82ed502e..69440781 100644 --- a/extras/Hadrons/A2AVectors.hpp +++ b/extras/Hadrons/A2AVectors.hpp @@ -7,6 +7,7 @@ Source file: extras/Hadrons/A2AVectors.hpp Copyright (C) 2015-2018 Author: Antonin Portelli +Author: fionnoh This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by From ee5c0cc9b6a8cd123a98bb4f08d1f90b31d5caa4 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Wed, 8 Aug 2018 18:45:06 +0100 Subject: [PATCH 234/267] Hadrons: code cleaning --- extras/Hadrons/Environment.hpp | 2 +- .../Modules/MContraction/A2AMesonField.hpp | 56 +++++++++---------- extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 30 ++++++---- extras/Hadrons/Modules/MSolver/RBPrecCG.hpp | 2 +- 4 files changed, 48 insertions(+), 42 deletions(-) diff --git a/extras/Hadrons/Environment.hpp b/extras/Hadrons/Environment.hpp index 1e3cc17f..90f04e3b 100644 --- a/extras/Hadrons/Environment.hpp +++ b/extras/Hadrons/Environment.hpp @@ -279,7 +279,7 @@ T * Environment::getDerivedObject(const unsigned int address) const } else { - HADRONS_ERROR_REF(ObjectDefinition, "object with address " + + HADRONS_ERROR_REF(ObjectType, "object with address " + std::to_string(address) + " cannot be casted to '" + typeName(&typeid(T)) + "' (has type '" + typeName(&typeid(h->get())) + "')", address); diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index 0f419186..cb5ba957 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -355,6 +355,7 @@ void TA2AMesonField::execute(void) int schurBlock = par().schurBlock; int cacheBlock = par().cacheBlock; int nmom = par().Nmom; + std::vector corr(nt,ComplexD(0.0)); /////////////////////////////////////////////// // Momentum setup @@ -427,17 +428,36 @@ void TA2AMesonField::execute(void) bytes += vol * (12.0 * sizeof(Complex) ) * N_iii*N_jjj + vol * ( 2.0 * sizeof(Complex) *nmom ) * N_iii*N_jjj* ngamma; + ///////////////////////////////////////////////////////////////////////// + // Test: Build the pion correlator (two end) + // < PI_ij(t0) PI_ji (t0+t) > + ///////////////////////////////////////////////////////////////////////// + parallel_for_nest2(int iii=0;iii< N_iii;iii++) + for(int jjj=0;jjj< N_jjj;jjj++) + { + int m=0; // first momentum + int g=0; // first gamma in above ordering is gamma5 for pion + + for(int t0=0;t0::execute(void) LOG(Message) << " Arith " << flops/(t_kernel)/1.0e3/nodes << " Gflop/s/ node " << std::endl; LOG(Message) << " Arith " << bytes/(t_kernel)/1.0e3/nodes << " GB/s/node " << std::endl; - ///////////////////////////////////////////////////////////////////////// - // Test: Build the pion correlator (two end) - // < PI_ij(t0) PI_ji (t0+t) > - ///////////////////////////////////////////////////////////////////////// - std::vector corr(nt,ComplexD(0.0)); - - for(int i=0;i::setup(void) auto &solver = envGet(Solver, par().solver + sub_string); int Ls = env().getObjectLs(par().action); - LOG(Message) << "Creating all-to-all vectors "; if (hasLowModes) { auto &epack = envGet(Pack, par().eigenPack); - Nl_ = epack.evec.size(); - std::cout << " using eigenpack '" << par().eigenPack << "' (" - << Nl_ << " low modes) and noise '" - << par().noise << "' (" << noise.size() - << " noise vectors)" << std::endl; - } - else - { - std::cout << " using noise '" << par().noise << "' (" << noise.size() - << " noise vectors)" << std::endl; } envCreate(std::vector, getName() + "_v", 1, Nl_ + noise.size(), FermionField(env().getGrid())); @@ -171,6 +159,24 @@ void TA2AVectors::execute(void) int Ls = env().getObjectLs(par().action); envGetTmp(A2A, a2a); + + if (hasLowModes) + { + auto &epack = envGet(Pack, par().eigenPack); + + Nl_ = epack.evec.size(); + LOG(Message) << "Computing all-to-all vectors " + << " using eigenpack '" << par().eigenPack << "' (" + << Nl_ << " low modes) and noise '" + << par().noise << "' (" << noise.size() + << " noise vectors)" << std::endl; + } + else + { + LOG(Message) << "Computing all-to-all vectors " + << " using noise '" << par().noise << "' (" << noise.size() + << " noise vectors)" << std::endl; + } // Low modes for (unsigned int il = 0; il < Nl_; il++) { diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp index 3b9a43c8..8bcd3968 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -159,7 +159,7 @@ void TRBPrecCG::setup(void) guesser.reset(new CoarseGuesser(epack.evec, epack.evecCoarse, epack.evalCoarse)); } - catch (Exceptions::Definition &e) + catch (Exceptions::ObjectType &e) { auto &epack = envGet(EPack, par().eigenPack); From 41d4e37baee3c01bd1f3f9ac37d5be580c73de47 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Wed, 8 Aug 2018 19:04:44 +0100 Subject: [PATCH 235/267] Hadrons: more cleaning --- extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp index 828c888d..69d7f295 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -124,7 +124,6 @@ void TA2AVectors::setup(void) { bool hasLowModes = (!par().eigenPack.empty()); std::string sub_string = (hasLowModes) ? "_subtract" : ""; - bool return_5d = par().return_5d; auto &noise = envGet(DilutedNoise, par().noise); auto &action = envGet(FMat, par().action); auto &solver = envGet(Solver, par().solver + sub_string); @@ -160,11 +159,8 @@ void TA2AVectors::execute(void) envGetTmp(A2A, a2a); - if (hasLowModes) + if (Nl_ > 0) { - auto &epack = envGet(Pack, par().eigenPack); - - Nl_ = epack.evec.size(); LOG(Message) << "Computing all-to-all vectors " << " using eigenpack '" << par().eigenPack << "' (" << Nl_ << " low modes) and noise '" From 6d2df9de79ffdc06dabd2f70cdc9d68d7cb06382 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Wed, 8 Aug 2018 23:15:55 +0100 Subject: [PATCH 236/267] Hadrons: even more cleaning --- .../Modules/MContraction/A2AMesonField.hpp | 37 +++++++++---------- extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 2 - 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index cb5ba957..6c537fb5 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -324,22 +324,22 @@ void TA2AMesonField::execute(void) // 2+6+4+4 = 16 gammas // Ordering defined here std::vector gammas ( { - Gamma::Algebra::Gamma5, - Gamma::Algebra::Identity, - Gamma::Algebra::GammaX, - Gamma::Algebra::GammaY, - Gamma::Algebra::GammaZ, - Gamma::Algebra::GammaT, - Gamma::Algebra::GammaXGamma5, - Gamma::Algebra::GammaYGamma5, - Gamma::Algebra::GammaZGamma5, - Gamma::Algebra::GammaTGamma5, - Gamma::Algebra::SigmaXY, - Gamma::Algebra::SigmaXZ, - Gamma::Algebra::SigmaXT, - Gamma::Algebra::SigmaYZ, - Gamma::Algebra::SigmaYT, - Gamma::Algebra::SigmaZT + Gamma::Algebra::Gamma5, + Gamma::Algebra::Identity, + Gamma::Algebra::GammaX, + Gamma::Algebra::GammaY, + Gamma::Algebra::GammaZ, + Gamma::Algebra::GammaT, + Gamma::Algebra::GammaXGamma5, + Gamma::Algebra::GammaYGamma5, + Gamma::Algebra::GammaZGamma5, + Gamma::Algebra::GammaTGamma5, + Gamma::Algebra::SigmaXY, + Gamma::Algebra::SigmaXZ, + Gamma::Algebra::SigmaXT, + Gamma::Algebra::SigmaYZ, + Gamma::Algebra::SigmaYT, + Gamma::Algebra::SigmaZT }); /////////////////////////////////////////////// @@ -360,14 +360,13 @@ void TA2AMesonField::execute(void) /////////////////////////////////////////////// // Momentum setup /////////////////////////////////////////////// - GridBase *grid = env().getGrid(1); + GridBase *grid = env().getGrid(); std::vector phases(nmom,grid); + for(int m=0;m mesonField(nmom,ngamma,nt,N_i,N_j); LOG(Message) << "MesonField size " << N_i << "x" << N_j << "x" << nt << std::endl; ////////////////////////////////////////////////////////////////////////// diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp index 69d7f295..8a15b781 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -214,7 +214,6 @@ void TA2AVectors::execute(void) { envGetTmp(FermionField, f5); a2a.makeHighModeV5D(v[Nl_ + ih], f5, noise[ih]); - std::cout << norm2(v[Nl_ + ih]) << std::endl; } LOG(Message) << "W vector i = " << Nl_ + ih << " (" << ((Nl_ > 0) ? "high " : "") @@ -227,7 +226,6 @@ void TA2AVectors::execute(void) { envGetTmp(FermionField, f5); a2a.makeHighModeW5D(w[Nl_ + ih], f5, noise[ih]); - std::cout << norm2(w[Nl_ + ih]) << std::endl; } } } From dcdd891d7d2cda8b7b643beddcac034947ece0e3 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 9 Aug 2018 00:13:53 +0100 Subject: [PATCH 237/267] Hadrons: precision fix --- extras/Hadrons/Modules/MFermion/FreeProp.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/Hadrons/Modules/MFermion/FreeProp.hpp b/extras/Hadrons/Modules/MFermion/FreeProp.hpp index 6538e09d..1b7ddb9a 100644 --- a/extras/Hadrons/Modules/MFermion/FreeProp.hpp +++ b/extras/Hadrons/Modules/MFermion/FreeProp.hpp @@ -167,7 +167,7 @@ void TFreeProp::execute(void) } } sol = zero; - std::vector twist = strToVec(par().twist); + std::vector twist = strToVec(par().twist); if(twist.size() != Nd) HADRONS_ERROR(Size, "number of twist angles does not match number of dimensions"); mat.FreePropagator(source,sol,mass,twist); FermToProp(prop, sol, s, c); From d0244a059f77d337eae9c22cff60844c9c1163f6 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 9 Aug 2018 00:38:17 +0100 Subject: [PATCH 238/267] Hadrons: cleaning cleaning... --- extras/Hadrons/A2AVectors.hpp | 30 +++++++++++-------- extras/Hadrons/Global.hpp | 3 ++ extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 2 +- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/extras/Hadrons/A2AVectors.hpp b/extras/Hadrons/A2AVectors.hpp index 69440781..4cbc7f2a 100644 --- a/extras/Hadrons/A2AVectors.hpp +++ b/extras/Hadrons/A2AVectors.hpp @@ -35,10 +35,9 @@ See the full license in the file "LICENSE" in the top level distribution directo BEGIN_HADRONS_NAMESPACE -//////////////////////////////// -// A2A Modes -//////////////////////////////// - +/****************************************************************************** + * Classes to generate V & W all-to-all vectors * + ******************************************************************************/ template class A2AVectorsSchurDiagTwo { @@ -48,14 +47,20 @@ public: public: A2AVectorsSchurDiagTwo(FMat &action, Solver &solver); virtual ~A2AVectorsSchurDiagTwo(void) = default; - void makeLowModeV(FermionField &vout, const FermionField &evec, const Real &eval); - void makeLowModeV5D(FermionField &vout_4d, FermionField &vout_5d, const FermionField &evec, const Real &eval); - void makeLowModeW(FermionField &wout, const FermionField &evec, const Real &eval); - void makeLowModeW5D(FermionField &wout_4d, FermionField &wout_5d, const FermionField &evec, const Real &eval); + void makeLowModeV(FermionField &vout, + const FermionField &evec, const Real &eval); + void makeLowModeV5D(FermionField &vout_4d, FermionField &vout_5d, + const FermionField &evec, const Real &eval); + void makeLowModeW(FermionField &wout, + const FermionField &evec, const Real &eval); + void makeLowModeW5D(FermionField &wout_4d, FermionField &wout_5d, + const FermionField &evec, const Real &eval); void makeHighModeV(FermionField &vout, const FermionField &noise); - void makeHighModeV5D(FermionField &vout_4d, FermionField &vout_5d, const FermionField &noise_5d); + void makeHighModeV5D(FermionField &vout_4d, FermionField &vout_5d, + const FermionField &noise_5d); void makeHighModeW(FermionField &wout, const FermionField &noise); - void makeHighModeW5D(FermionField &vout_5d, FermionField &wout_5d, const FermionField &noise_5d); + void makeHighModeW5D(FermionField &vout_5d, FermionField &wout_5d, + const FermionField &noise_5d); private: FMat &action_; Solver &solver_; @@ -65,6 +70,9 @@ private: SchurDiagTwoOperator op_; }; +/****************************************************************************** + * A2AVectorsSchurDiagTwo template implementation * + ******************************************************************************/ template A2AVectorsSchurDiagTwo::A2AVectorsSchurDiagTwo(FMat &action, Solver &solver) : action_(action) @@ -107,7 +115,6 @@ void A2AVectorsSchurDiagTwo::makeLowModeV(FermionField &vout, const Fermi assert(tmp_.checkerboard == Odd); sol_o_ = (1.0 / eval) * tmp_; assert(sol_o_.checkerboard == Odd); - setCheckerboard(vout, sol_e_); assert(sol_e_.checkerboard == Even); setCheckerboard(vout, sol_o_); @@ -145,7 +152,6 @@ void A2AVectorsSchurDiagTwo::makeLowModeW(FermionField &wout, const Fermi ///////////////////////////////////////////////////// op_.Mpc(src_o_, sol_o_); assert(sol_o_.checkerboard == Odd); - setCheckerboard(wout, sol_e_); assert(sol_e_.checkerboard == Even); setCheckerboard(wout, sol_o_); diff --git a/extras/Hadrons/Global.hpp b/extras/Hadrons/Global.hpp index cf96ad9b..3ecf4308 100644 --- a/extras/Hadrons/Global.hpp +++ b/extras/Hadrons/Global.hpp @@ -206,6 +206,9 @@ void makeFileDir(const std::string filename, GridBase *g); #define _HADRONS_SCHUR_SOLVE_(conv) SchurRedBlack##conv##Solve #define HADRONS_SCHUR_SOLVE(conv) _HADRONS_SCHUR_SOLVE_(conv) #define HADRONS_DEFAULT_SCHUR_SOLVE HADRONS_SCHUR_SOLVE(HADRONS_DEFAULT_SCHUR) +#define _HADRONS_SCHUR_A2A_(conv) A2AVectorsSchur##conv +#define HADRONS_SCHUR_A2A(conv) _HADRONS_SCHUR_A2A_(conv) +#define HADRONS_DEFAULT_SCHUR_A2A HADRONS_SCHUR_A2A(HADRONS_DEFAULT_SCHUR) // stringify macro #define _HADRONS_STR(x) #x diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp index 8a15b781..6c92f99f 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -60,7 +60,7 @@ class TA2AVectors : public Module public: FERM_TYPE_ALIASES(FImpl,); SOLVER_TYPE_ALIASES(FImpl,); - typedef A2AVectorsSchurDiagTwo A2A; + typedef HADRONS_DEFAULT_SCHUR_A2A A2A; public: // constructor TA2AVectors(const std::string name); From 2b794b6aa7d9182373225bb2bcc2b88aed831de2 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 9 Aug 2018 17:16:42 +0100 Subject: [PATCH 239/267] Hadrons: module generating random lattices for testing purposes --- extras/Hadrons/Modules.hpp | 1 + .../Modules/MUtilities/RandomVectors.cc | 7 ++ .../Modules/MUtilities/RandomVectors.hpp | 94 +++++++++++++++++++ extras/Hadrons/modules.inc | 2 + 4 files changed, 104 insertions(+) create mode 100644 extras/Hadrons/Modules/MUtilities/RandomVectors.cc create mode 100644 extras/Hadrons/Modules/MUtilities/RandomVectors.hpp diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index aa8a3aa1..5cce335a 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MUtilities/RandomVectors.cc b/extras/Hadrons/Modules/MUtilities/RandomVectors.cc new file mode 100644 index 00000000..cc122c90 --- /dev/null +++ b/extras/Hadrons/Modules/MUtilities/RandomVectors.cc @@ -0,0 +1,7 @@ +#include + +using namespace Grid; +using namespace Hadrons; +using namespace MUtilities; + +template class Grid::Hadrons::MUtilities::TRandomVectors; diff --git a/extras/Hadrons/Modules/MUtilities/RandomVectors.hpp b/extras/Hadrons/Modules/MUtilities/RandomVectors.hpp new file mode 100644 index 00000000..2a5fc9e7 --- /dev/null +++ b/extras/Hadrons/Modules/MUtilities/RandomVectors.hpp @@ -0,0 +1,94 @@ +#ifndef Hadrons_MUtilities_RandomVectors_hpp_ +#define Hadrons_MUtilities_RandomVectors_hpp_ + +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +/****************************************************************************** + * Module generating random lattices for testing purposes * + ******************************************************************************/ +BEGIN_MODULE_NAMESPACE(MUtilities) + +class RandomVectorsPar: Serializable +{ +public: + GRID_SERIALIZABLE_CLASS_MEMBERS(RandomVectorsPar, + unsigned int, size, + unsigned int, Ls); +}; + +template +class TRandomVectors: public Module +{ +public: + // constructor + TRandomVectors(const std::string name); + // destructor + virtual ~TRandomVectors(void) {}; + // dependency relation + virtual std::vector getInput(void); + virtual std::vector getOutput(void); + // setup + virtual void setup(void); + // execution + virtual void execute(void); +}; + +MODULE_REGISTER_TMP(RandomFermions, TRandomVectors, MUtilities); + +/****************************************************************************** + * TRandomVectors implementation * + ******************************************************************************/ +// constructor ///////////////////////////////////////////////////////////////// +template +TRandomVectors::TRandomVectors(const std::string name) +: Module(name) +{} + +// dependencies/products /////////////////////////////////////////////////////// +template +std::vector TRandomVectors::getInput(void) +{ + std::vector in; + + return in; +} + +template +std::vector TRandomVectors::getOutput(void) +{ + std::vector out = {getName()}; + + return out; +} + +// setup /////////////////////////////////////////////////////////////////////// +template +void TRandomVectors::setup(void) +{ + envCreate(std::vector, getName(), par().Ls, par().size, + env().getGrid(par().Ls)); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TRandomVectors::execute(void) +{ + LOG(Message) << "Generating " << par().size << " random vectors" << std::endl; + + auto &vec = envGet(std::vector, getName()); + + for (unsigned int i = 0; i < vec.size(); ++i) + { + random(*env().get4dRng(), vec[i]); + } +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif // Hadrons_MUtilities_RandomVectors_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 7933cb97..6bc07618 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -27,6 +27,7 @@ modules_cc =\ Modules/MGauge/Random.cc \ Modules/MGauge/FundtoHirep.cc \ Modules/MNoise/TimeDilutedSpinColorDiagonal.cc \ + Modules/MUtilities/RandomVectors.cc \ Modules/MUtilities/TestSeqGamma.cc \ Modules/MUtilities/TestSeqConserved.cc \ Modules/MLoop/NoiseLoop.cc \ @@ -87,6 +88,7 @@ modules_hpp =\ Modules/MGauge/FundtoHirep.hpp \ Modules/MGauge/StochEm.hpp \ Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp \ + Modules/MUtilities/RandomVectors.hpp \ Modules/MUtilities/TestSeqGamma.hpp \ Modules/MUtilities/TestSeqConserved.hpp \ Modules/MLoop/NoiseLoop.hpp \ From f4cbfd63ff01e2b3d6a600422f1de9d7ac403d72 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Thu, 9 Aug 2018 18:39:58 +0100 Subject: [PATCH 240/267] Hadrons: more meson field cleaning, needs IO now --- .../Modules/MContraction/A2AMesonField.hpp | 41 +++++-------------- 1 file changed, 11 insertions(+), 30 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index 6c537fb5..06032c18 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -390,7 +390,7 @@ void TA2AMesonField::execute(void) int NBlock_i = N_i/schurBlock + (((N_i % schurBlock) != 0) ? 1 : 0); int NBlock_j = N_j/schurBlock + (((N_j % schurBlock) != 0) ? 1 : 0); - for(int i=0;i::execute(void) << i+N_ii-1 << ", " << j <<" .. " << j+N_jj-1 << "]" << std::endl; + Eigen::Tensor mesonFieldBlocked(nmom,ngamma,nt,N_ii,N_jj); + /////////////////////////////////////////////////////////////// // Series of cache blocked chunks of the contractions within this SchurBlock /////////////////////////////////////////////////////////////// @@ -416,47 +418,26 @@ void TA2AMesonField::execute(void) { int N_iii = MIN(N_ii-ii,cacheBlock); int N_jjj = MIN(N_jj-jj,cacheBlock); - Eigen::Tensor mesonFieldBlocked(nmom,ngamma,nt,N_iii,N_jjj); + Eigen::Tensor mesonFieldCache(nmom,ngamma,nt,N_iii,N_jjj); t_contr-=usecond(); - MesonField(mesonFieldBlocked, &w[i+ii], &v[j+jj], gammas, phases,Tp, + MesonField(mesonFieldCache, &w[i+ii], &v[j+jj], gammas, phases,Tp, t_int_0,t_int_1,t_int_2,t_int_3); t_contr+=usecond(); + // flops for general N_c & N_s flops += vol * ( 2 * 8.0 + 6.0 + 8.0*nmom) * N_iii*N_jjj*ngamma; bytes += vol * (12.0 * sizeof(Complex) ) * N_iii*N_jjj + vol * ( 2.0 * sizeof(Complex) *nmom ) * N_iii*N_jjj* ngamma; - ///////////////////////////////////////////////////////////////////////// - // Test: Build the pion correlator (two end) - // < PI_ij(t0) PI_ji (t0+t) > - ///////////////////////////////////////////////////////////////////////// - parallel_for_nest2(int iii=0;iii< N_iii;iii++) + for(int iii=0;iii< N_iii;iii++) for(int jjj=0;jjj< N_jjj;jjj++) + for(int m =0;m< nmom;m++) + for(int g =0;g< ngamma;g++) + for(int t =0;t< nt;t++) { - int m=0; // first momentum - int g=0; // first gamma in above ordering is gamma5 for pion - - for(int t0=0;t0 Date: Fri, 10 Aug 2018 16:07:30 +0100 Subject: [PATCH 241/267] Hadrons: module and VM instrumentation --- extras/Hadrons/Global.cc | 26 +++++++ extras/Hadrons/Global.hpp | 3 + extras/Hadrons/Module.cc | 69 +++++++++++++++++++ extras/Hadrons/Module.hpp | 13 +++- .../Modules/MContraction/A2AMesonField.hpp | 20 ++---- extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 4 ++ extras/Hadrons/VirtualMachine.cc | 29 +++++++- lib/perfmon/Timer.h | 3 + 8 files changed, 151 insertions(+), 16 deletions(-) diff --git a/extras/Hadrons/Global.cc b/extras/Hadrons/Global.cc index 26b74a6f..8c0cf799 100644 --- a/extras/Hadrons/Global.cc +++ b/extras/Hadrons/Global.cc @@ -173,3 +173,29 @@ void Hadrons::makeFileDir(const std::string filename, GridBase *g) } } } + +void Hadrons::printTimeProfile(const std::map &timing, + GridTime total) +{ + typedef decltype(total.count()) Count; + + std::map> rtiming; + const double dtotal = static_cast(total.count()); + auto cf = std::cout.flags(); + unsigned int width = 0; + + for (auto &t: timing) + { + width = std::max(width, static_cast(t.first.length())); + rtiming[t.second.count()] = t.first; + } + for (auto &rt: rtiming) + { + LOG(Message) << std::right << std::setw(width) << rt.second << ": " + << rt.first << " us (" << std::fixed + << std::setprecision(1) + << static_cast(rt.first)/dtotal*100 << "%)" + << std::endl; + } + std::cout.flags(cf); +} diff --git a/extras/Hadrons/Global.hpp b/extras/Hadrons/Global.hpp index 3ecf4308..e1e29e43 100644 --- a/extras/Hadrons/Global.hpp +++ b/extras/Hadrons/Global.hpp @@ -214,6 +214,9 @@ void makeFileDir(const std::string filename, GridBase *g); #define _HADRONS_STR(x) #x #define HADRONS_STR(x) _HADRONS_STR(x) +// pretty print time profile +void printTimeProfile(const std::map &timing, GridTime total); + END_HADRONS_NAMESPACE #include diff --git a/extras/Hadrons/Module.cc b/extras/Hadrons/Module.cc index faf01d5a..2623d6b2 100644 --- a/extras/Hadrons/Module.cc +++ b/extras/Hadrons/Module.cc @@ -56,6 +56,75 @@ std::string ModuleBase::getRegisteredName(void) // execution /////////////////////////////////////////////////////////////////// void ModuleBase::operator()(void) { + resetTimers(); + startTimer("_total"); + startTimer("_setup"); setup(); + stopTimer("_setup"); + startTimer("_execute"); execute(); + stopAllTimers(); +} + +// timers ////////////////////////////////////////////////////////////////////// +void ModuleBase::startTimer(const std::string &name) +{ + if (!name.empty()) + { + timer_[name].Start(); + } +} + +void ModuleBase::startCurrentTimer(const std::string &name) +{ + if (!name.empty()) + { + stopCurrentTimer(); + startTimer(name); + currentTimer_ = name; + } +} + +void ModuleBase::stopTimer(const std::string &name) +{ + if (timer_.at(name).isRunning()) + { + timer_.at(name).Stop(); + } +} + +void ModuleBase::stopCurrentTimer(void) +{ + if (!currentTimer_.empty()) + { + stopTimer(currentTimer_); + currentTimer_ = ""; + } +} + +void ModuleBase::stopAllTimers(void) +{ + for (auto &t: timer_) + { + stopTimer(t.first); + } + currentTimer_ = ""; +} + +void ModuleBase::resetTimers(void) +{ + timer_.clear(); + currentTimer_ = ""; +} + +std::map ModuleBase::getTimings(void) +{ + std::map timing; + + for (auto &t: timer_) + { + timing[t.first] = t.second.Elapsed(); + } + + return timing; } diff --git a/extras/Hadrons/Module.hpp b/extras/Hadrons/Module.hpp index 2726da96..75e621f3 100644 --- a/extras/Hadrons/Module.hpp +++ b/extras/Hadrons/Module.hpp @@ -129,6 +129,8 @@ if (env().getGrid()->IsBoss() and !ioStem.empty())\ }\ } +#define MODULE_TIMER(name) this->startCurrentTimer(name) + /****************************************************************************** * Module class * ******************************************************************************/ @@ -161,13 +163,22 @@ public: virtual void execute(void) = 0; // execution void operator()(void); + // timers + void startTimer(const std::string &name); + void startCurrentTimer(const std::string &name); + void stopTimer(const std::string &name); + void stopCurrentTimer(void); + void stopAllTimers(void); + void resetTimers(void); + std::map getTimings(void); protected: // environment shortcut DEFINE_ENV_ALIAS; // virtual machine shortcut DEFINE_VM_ALIAS; private: - std::string name_; + std::string name_, currentTimer_; + std::map timer_; }; // derived class, templating the parameter class diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index 06032c18..9939e7cc 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -189,6 +189,7 @@ void TA2AMesonField::MesonField(Eigen::Tensor &mat, int stride=grid->_slice_stride[orthogdim]; t0-=usecond(); + MODULE_TIMER("Colour trace * mom."); // Nested parallelism would be ok // Wasting cores here. Test case r parallel_for(int r=0;r::MesonField(Eigen::Tensor &mat, t0+=usecond(); // Sum across simd lanes in the plane, breaking out orthog dir. + MODULE_TIMER("Local space sum"); t1-=usecond(); parallel_for(int rt=0;rt::MesonField(Eigen::Tensor &mat, t2-=usecond(); // ld loop and local only?? + MODULE_TIMER("Spin trace"); int pd = grid->_processors[orthogdim]; int pc = grid->_processor_coor[orthogdim]; parallel_for_nest2(int lt=0;lt::MesonField(Eigen::Tensor &mat, // Healthy size that should suffice //////////////////////////////////////////////////////////////////// t3-=usecond(); + MODULE_TIMER("Global sum"); grid->GlobalSumVector(&mat(0,0,0,0,0),Nmom*Ngamma*Nt*Lblock*Rblock); t3+=usecond(); } @@ -430,6 +434,7 @@ void TA2AMesonField::execute(void) bytes += vol * (12.0 * sizeof(Complex) ) * N_iii*N_jjj + vol * ( 2.0 * sizeof(Complex) *nmom ) * N_iii*N_jjj* ngamma; + MODULE_TIMER("Cache copy"); for(int iii=0;iii< N_iii;iii++) for(int jjj=0;jjj< N_jjj;jjj++) for(int m =0;m< nmom;m++) @@ -442,21 +447,10 @@ void TA2AMesonField::execute(void) } double nodes=grid->NodeCount(); - double t1 = usecond(); - LOG(Message) << "Contraction of MesonFields took "<<(t1-t0)/1.0e6<< " s" << std::endl; - LOG(Message) << " Schur " << (t_schur)/1.0e6 << " s" << std::endl; - LOG(Message) << " Contr " << (t_contr)/1.0e6 << " s" << std::endl; - LOG(Message) << " Intern0 " << (t_int_0)/1.0e6 << " s" << std::endl; - LOG(Message) << " Intern1 " << (t_int_1)/1.0e6 << " s" << std::endl; - LOG(Message) << " Intern2 " << (t_int_2)/1.0e6 << " s" << std::endl; - LOG(Message) << " Intern3 " << (t_int_3)/1.0e6 << " s" << std::endl; - double t_kernel = t_int_0 + t_int_1; - LOG(Message) << " Arith " << flops/(t_kernel)/1.0e3/nodes << " Gflop/s/ node " << std::endl; - LOG(Message) << " Arith " << bytes/(t_kernel)/1.0e3/nodes << " GB/s/node " << std::endl; - for(int t=0;t::execute(void) { auto &epack = envGet(Pack, par().eigenPack); + MODULE_TIMER("V low mode"); LOG(Message) << "V vector i = " << il << " (low mode)" << std::endl; if (Ls == 1) { @@ -188,6 +189,7 @@ void TA2AVectors::execute(void) envGetTmp(FermionField, f5); a2a.makeLowModeV5D(v[il], f5, epack.evec[il], epack.eval[il]); } + MODULE_TIMER("W low mode"); LOG(Message) << "W vector i = " << il << " (low mode)" << std::endl; if (Ls == 1) { @@ -203,6 +205,7 @@ void TA2AVectors::execute(void) // High modes for (unsigned int ih = 0; ih < noise.size(); ih++) { + MODULE_TIMER("V high mode"); LOG(Message) << "V vector i = " << Nl_ + ih << " (" << ((Nl_ > 0) ? "high " : "") << "stochastic mode)" << std::endl; @@ -215,6 +218,7 @@ void TA2AVectors::execute(void) envGetTmp(FermionField, f5); a2a.makeHighModeV5D(v[Nl_ + ih], f5, noise[ih]); } + MODULE_TIMER("W high mode"); LOG(Message) << "W vector i = " << Nl_ + ih << " (" << ((Nl_ > 0) ? "high " : "") << "stochastic mode)" << std::endl; diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index d849ba34..39908e4c 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -622,9 +622,14 @@ VirtualMachine::Program VirtualMachine::schedule(const GeneticPar &par) } // general execution /////////////////////////////////////////////////////////// -#define BIG_SEP "===============" -#define SEP "---------------" +#define BIG_SEP "===============" +#define SEP "---------------" +#define SMALL_SEP "..............." #define MEM_MSG(size) sizeString(size) +#define PRINT_TIME(name, t, total) \ +std::right << std::setw(30) << name << ": " << t.count() << " us (" \ +<< std::fixed << std::setprecision(1) \ +<< static_cast((t).count())/total*100 << "%)" void VirtualMachine::executeProgram(const Program &p) { @@ -654,11 +659,31 @@ void VirtualMachine::executeProgram(const Program &p) LOG(Message) << SEP << " Measurement step " << i + 1 << "/" << p.size() << " (module '" << module_[p[i]].name << "') " << SEP << std::endl; + LOG(Message) << SMALL_SEP << " Module execution" << std::endl; currentModule_ = p[i]; (*module_[p[i]].data)(); currentModule_ = -1; sizeBefore = env().getTotalSize(); + // print time profile after execution + LOG(Message) << SMALL_SEP << " Timings" << std::endl; + + std::map ctiming, gtiming; + GridTime total; + + ctiming = module_[p[i]].data->getTimings(); + total = ctiming.at("_total"); + gtiming["total"] = ctiming["_total"]; ctiming.erase("_total"); + gtiming["setup"] = ctiming["_setup"]; ctiming.erase("_setup"); + gtiming["execution"] = ctiming["_execute"]; ctiming.erase("_execute"); + LOG(Message) << "* GLOBAL TIMERS" << std::endl; + printTimeProfile(gtiming, total); + if (!ctiming.empty()) + { + LOG(Message) << "* CUSTOM TIMERS" << std::endl; + printTimeProfile(ctiming, total); + } // print used memory after execution + LOG(Message) << SMALL_SEP << " Memory management" << std::endl; LOG(Message) << "Allocated objects: " << MEM_MSG(sizeBefore) << std::endl; if (sizeBefore > memPeak) diff --git a/lib/perfmon/Timer.h b/lib/perfmon/Timer.h index 4d32ee52..6fc421b8 100644 --- a/lib/perfmon/Timer.h +++ b/lib/perfmon/Timer.h @@ -102,6 +102,9 @@ public: assert(running == false); return (uint64_t) accumulator.count(); } + bool isRunning(void){ + return running; + } }; } From 093bb02633d249c3e1bbb67ac9e06d35fb533b2f Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 10 Aug 2018 16:07:48 +0100 Subject: [PATCH 242/267] Hadrons: execute message for time diluted noise --- extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp index 12340cbb..c2301ccd 100644 --- a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp +++ b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp @@ -101,6 +101,7 @@ void TTimeDilutedSpinColorDiagonal::execute(void) { auto &noise = envGet(DilutedNoise, getName()); + LOG(Message) << "Generating time-diluted, spin-color diagonal noise" << std::endl; noise.generateNoise(*env().get4dRng()); } From ac69f042b1945c8d725ca09ab0349ed29cfeea0c Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Fri, 10 Aug 2018 18:27:00 +0100 Subject: [PATCH 243/267] Hadrons: module RNG uniquely seeded with + + --- extras/Hadrons/Application.cc | 20 ++++++++----- extras/Hadrons/Application.hpp | 2 +- extras/Hadrons/Environment.cc | 5 ---- extras/Hadrons/Environment.hpp | 1 - extras/Hadrons/Module.cc | 28 +++++++++++++++++++ extras/Hadrons/Module.hpp | 6 +++- extras/Hadrons/Modules/MGauge/Random.cc | 2 +- extras/Hadrons/Modules/MGauge/StochEm.cc | 2 +- extras/Hadrons/Modules/MGauge/Unit.cc | 2 +- .../MNoise/TimeDilutedSpinColorDiagonal.hpp | 2 +- .../Modules/MScalarSUN/StochFreeField.hpp | 2 +- extras/Hadrons/Modules/MSource/Z2.hpp | 2 +- .../Modules/MUtilities/RandomVectors.hpp | 2 +- extras/Hadrons/VirtualMachine.cc | 17 +++++++++-- extras/Hadrons/VirtualMachine.hpp | 4 +++ lib/lattice/Lattice_rng.h | 20 +++++++------ 16 files changed, 84 insertions(+), 33 deletions(-) diff --git a/extras/Hadrons/Application.cc b/extras/Hadrons/Application.cc index 18bd93e3..cff1b619 100644 --- a/extras/Hadrons/Application.cc +++ b/extras/Hadrons/Application.cc @@ -34,8 +34,8 @@ using namespace Grid; using namespace QCD; using namespace Hadrons; -#define BIG_SEP "===============" -#define SEP "---------------" +#define BIG_SEP "================" +#define SEP "----------------" /****************************************************************************** * Application implementation * @@ -54,11 +54,11 @@ Application::Application(void) loc[d] /= mpi[d]; locVol_ *= loc[d]; } - LOG(Message) << "====== HADRONS APPLICATION STARTING ======" << std::endl; + LOG(Message) << "====== HADRONS APPLICATION INITIALISATION ======" << std::endl; LOG(Message) << "** Dimensions" << std::endl; - LOG(Message) << "Global lattice : " << dim << std::endl; - LOG(Message) << "MPI partition : " << mpi << std::endl; - LOG(Message) << "Local lattice : " << loc << std::endl; + LOG(Message) << "Global lattice: " << dim << std::endl; + LOG(Message) << "MPI partition : " << mpi << std::endl; + LOG(Message) << "Local lattice : " << loc << std::endl; LOG(Message) << std::endl; LOG(Message) << "** Default parameters (and associated C macro)" << std::endl; LOG(Message) << "ASCII output precision : " << MACOUT(DEFAULT_ASCII_PREC) << std::endl; @@ -88,7 +88,6 @@ Application::Application(const std::string parameterFileName) void Application::setPar(const Application::GlobalPar &par) { par_ = par; - env().setSeed(strToVec(par_.seed)); } const Application::GlobalPar & Application::getPar(void) @@ -99,10 +98,17 @@ const Application::GlobalPar & Application::getPar(void) // execute ///////////////////////////////////////////////////////////////////// void Application::run(void) { + LOG(Message) << "====== HADRONS APPLICATION START ======" << std::endl; if (!parameterFileName_.empty() and (vm().getNModule() == 0)) { parseParameterFile(parameterFileName_); } + if (getPar().runId.empty()) + { + HADRONS_ERROR(Definition, "run id is empty"); + } + LOG(Message) << "RUN ID '" << getPar().runId << "'" << std::endl; + vm().setRunId(getPar().runId); vm().printContent(); env().printContent(); schedule(); diff --git a/extras/Hadrons/Application.hpp b/extras/Hadrons/Application.hpp index 0254f2fc..ef463dd6 100644 --- a/extras/Hadrons/Application.hpp +++ b/extras/Hadrons/Application.hpp @@ -55,7 +55,7 @@ public: GRID_SERIALIZABLE_CLASS_MEMBERS(GlobalPar, TrajRange, trajCounter, VirtualMachine::GeneticPar, genetic, - std::string, seed); + std::string, runId); }; public: // constructors diff --git a/extras/Hadrons/Environment.cc b/extras/Hadrons/Environment.cc index 1b9ddb00..ced61ce4 100644 --- a/extras/Hadrons/Environment.cc +++ b/extras/Hadrons/Environment.cc @@ -195,11 +195,6 @@ double Environment::getVolume(void) const } // random number generator ///////////////////////////////////////////////////// -void Environment::setSeed(const std::vector &seed) -{ - rng4d_->SeedFixedIntegers(seed); -} - GridParallelRNG * Environment::get4dRng(void) const { return rng4d_.get(); diff --git a/extras/Hadrons/Environment.hpp b/extras/Hadrons/Environment.hpp index 90f04e3b..c277b3db 100644 --- a/extras/Hadrons/Environment.hpp +++ b/extras/Hadrons/Environment.hpp @@ -97,7 +97,6 @@ public: unsigned int getNd(void) const; double getVolume(void) const; // random number generator - void setSeed(const std::vector &seed); GridParallelRNG * get4dRng(void) const; // general memory management void addObject(const std::string name, diff --git a/extras/Hadrons/Module.cc b/extras/Hadrons/Module.cc index 2623d6b2..8ac33ccf 100644 --- a/extras/Hadrons/Module.cc +++ b/extras/Hadrons/Module.cc @@ -128,3 +128,31 @@ std::map ModuleBase::getTimings(void) return timing; } + +std::string ModuleBase::makeSeedString(void) +{ + std::string seed; + + if (!vm().getRunId().empty()) + { + seed += vm().getRunId() + "-"; + } + seed += getName() + "-" + std::to_string(vm().getTrajectory()); + + return seed; +} + +GridParallelRNG & ModuleBase::rng4d(void) +{ + auto &r = *env().get4dRng(); + + if (makeSeedString() != seed_) + { + seed_ = makeSeedString(); + LOG(Message) << "Seeding 4D RNG " << &r << " with string '" + << seed_ << "'" << std::endl; + r.SeedUniqueString(seed_); + } + + return r; +} diff --git a/extras/Hadrons/Module.hpp b/extras/Hadrons/Module.hpp index 75e621f3..f3d87c2d 100644 --- a/extras/Hadrons/Module.hpp +++ b/extras/Hadrons/Module.hpp @@ -176,8 +176,12 @@ protected: DEFINE_ENV_ALIAS; // virtual machine shortcut DEFINE_VM_ALIAS; + // RNG seeded from module string + GridParallelRNG &rng4d(void); private: - std::string name_, currentTimer_; + std::string makeSeedString(void); +private: + std::string name_, currentTimer_, seed_; std::map timer_; }; diff --git a/extras/Hadrons/Modules/MGauge/Random.cc b/extras/Hadrons/Modules/MGauge/Random.cc index 962fc243..59b43331 100644 --- a/extras/Hadrons/Modules/MGauge/Random.cc +++ b/extras/Hadrons/Modules/MGauge/Random.cc @@ -67,5 +67,5 @@ void TRandom::execute(void) LOG(Message) << "Generating random gauge configuration" << std::endl; auto &U = envGet(LatticeGaugeField, getName()); - SU3::HotConfiguration(*env().get4dRng(), U); + SU3::HotConfiguration(rng4d(), U); } diff --git a/extras/Hadrons/Modules/MGauge/StochEm.cc b/extras/Hadrons/Modules/MGauge/StochEm.cc index 36d0be7c..adb33d9c 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.cc +++ b/extras/Hadrons/Modules/MGauge/StochEm.cc @@ -81,5 +81,5 @@ void TStochEm::execute(void) << par().zmScheme << ")..." << std::endl; photon.StochasticWeight(w); } - photon.StochasticField(a, *env().get4dRng(), w); + photon.StochasticField(a, rng4d(), w); } diff --git a/extras/Hadrons/Modules/MGauge/Unit.cc b/extras/Hadrons/Modules/MGauge/Unit.cc index 38b5f3aa..3df12fa7 100644 --- a/extras/Hadrons/Modules/MGauge/Unit.cc +++ b/extras/Hadrons/Modules/MGauge/Unit.cc @@ -65,5 +65,5 @@ void TUnit::execute(void) LOG(Message) << "Creating unit gauge configuration" << std::endl; auto &U = envGet(LatticeGaugeField, getName()); - SU3::ColdConfiguration(*env().get4dRng(), U); + SU3::ColdConfiguration(rng4d(), U); } diff --git a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp index c2301ccd..3c324cd1 100644 --- a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp +++ b/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp @@ -102,7 +102,7 @@ void TTimeDilutedSpinColorDiagonal::execute(void) auto &noise = envGet(DilutedNoise, getName()); LOG(Message) << "Generating time-diluted, spin-color diagonal noise" << std::endl; - noise.generateNoise(*env().get4dRng()); + noise.generateNoise(rng4d()); } END_MODULE_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp b/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp index ea15f3ef..d757c1ab 100644 --- a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp +++ b/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp @@ -128,7 +128,7 @@ void TStochFreeField::execute(void) const unsigned int Nadj = Group::AdjointDimension; auto &phi = envGet(Field, getName()); auto &w = envGet(ComplexField, "_" + getName() + "_weight"); - auto &rng = *env().get4dRng(); + auto &rng = rng4d(); double trphi2; FFT fft(env().getGrid()); Integer vol; diff --git a/extras/Hadrons/Modules/MSource/Z2.hpp b/extras/Hadrons/Modules/MSource/Z2.hpp index cecff8b0..51bbbaa2 100644 --- a/extras/Hadrons/Modules/MSource/Z2.hpp +++ b/extras/Hadrons/Modules/MSource/Z2.hpp @@ -149,7 +149,7 @@ void TZ2::execute(void) hasT_ = true; } envGetTmp(LatticeComplex, eta); - bernoulli(*env().get4dRng(), eta); + bernoulli(rng4d(), eta); eta = (2.*eta - shift)*(1./::sqrt(2.)); eta = where((t >= par().tA) and (t <= par().tB), eta, 0.*eta); src = 1.; diff --git a/extras/Hadrons/Modules/MUtilities/RandomVectors.hpp b/extras/Hadrons/Modules/MUtilities/RandomVectors.hpp index 2a5fc9e7..590ef224 100644 --- a/extras/Hadrons/Modules/MUtilities/RandomVectors.hpp +++ b/extras/Hadrons/Modules/MUtilities/RandomVectors.hpp @@ -83,7 +83,7 @@ void TRandomVectors::execute(void) for (unsigned int i = 0; i < vec.size(); ++i) { - random(*env().get4dRng(), vec[i]); + random(rng4d(), vec[i]); } } diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index 39908e4c..74579588 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -48,6 +48,17 @@ unsigned int VirtualMachine::getTrajectory(void) const return traj_; } +// run tag ///////////////////////////////////////////////////////////////////// +void VirtualMachine::setRunId(const std::string id) +{ + runId_ = id; +} + +std::string VirtualMachine::getRunId(void) const +{ + return runId_; +} + // module management /////////////////////////////////////////////////////////// void VirtualMachine::pushModule(VirtualMachine::ModPt &pt) { @@ -622,9 +633,9 @@ VirtualMachine::Program VirtualMachine::schedule(const GeneticPar &par) } // general execution /////////////////////////////////////////////////////////// -#define BIG_SEP "===============" -#define SEP "---------------" -#define SMALL_SEP "..............." +#define BIG_SEP "================" +#define SEP "----------------" +#define SMALL_SEP "................" #define MEM_MSG(size) sizeString(size) #define PRINT_TIME(name, t, total) \ std::right << std::setw(30) << name << ": " << t.count() << " us (" \ diff --git a/extras/Hadrons/VirtualMachine.hpp b/extras/Hadrons/VirtualMachine.hpp index ccc06d63..1fa2daa9 100644 --- a/extras/Hadrons/VirtualMachine.hpp +++ b/extras/Hadrons/VirtualMachine.hpp @@ -91,6 +91,9 @@ public: // trajectory counter void setTrajectory(const unsigned int traj); unsigned int getTrajectory(void) const; + // run tag + void setRunId(const std::string id); + std::string getRunId(void) const; // module management void pushModule(ModPt &pt); template @@ -151,6 +154,7 @@ private: void memoryProfile(const unsigned int address); private: // general + std::string runId_; unsigned int traj_; // module and related maps std::vector module_; diff --git a/lib/lattice/Lattice_rng.h b/lib/lattice/Lattice_rng.h index 1c6dab01..c6b9e14e 100644 --- a/lib/lattice/Lattice_rng.h +++ b/lib/lattice/Lattice_rng.h @@ -320,12 +320,14 @@ namespace Grid { void SeedUniqueString(const std::string &s){ std::vector seeds; + std::stringstream sha; seeds = GridChecksum::sha256_seeds(s); - std::cout << GridLogMessage << "Intialising Serial RNG with unique string " < seeds; + std::stringstream sha; seeds = GridChecksum::sha256_seeds(s); - std::cout << GridLogMessage << "Intialising Parallel RNG with unique string " < &seeds){ From 5be6a51044c00e27034c82714402362fc05cf0f2 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Sat, 11 Aug 2018 15:13:43 +0100 Subject: [PATCH 244/267] Hadrons: meson fields code cleaning and momentum phases --- .../Modules/MContraction/A2AMesonField.hpp | 623 +++++++++--------- 1 file changed, 319 insertions(+), 304 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index 9939e7cc..ba849b0c 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -51,20 +51,20 @@ class A2AMesonFieldPar : Serializable public: GRID_SERIALIZABLE_CLASS_MEMBERS(A2AMesonFieldPar, int, cacheBlock, - int, schurBlock, - int, Nmom, + int, block, std::string, v, std::string, w, - std::string, output); + std::string, output, + std::vector, mom); }; template class TA2AMesonField : public Module { - public: +public: FERM_TYPE_ALIASES(FImpl, ); SOLVER_TYPE_ALIASES(FImpl, ); - public: +public: // constructor TA2AMesonField(const std::string name); // destructor @@ -76,18 +76,21 @@ class TA2AMesonField : public Module virtual void setup(void); // execution virtual void execute(void); - +private: // Arithmetic help. Move to Grid?? - virtual void MesonField(Eigen::Tensor &mat, - const LatticeFermion *lhs, - const LatticeFermion *rhs, - std::vector gammas, - const std::vector &mom, - int orthogdim, - double &t0, - double &t1, - double &t2, - double &t3); + virtual void makeBlock(Eigen::Tensor &mat, + const LatticeFermion *lhs, + const LatticeFermion *rhs, + std::vector gammas, + const std::vector &mom, + int orthogdim, + double &t0, + double &t1, + double &t2, + double &t3); +private: + bool hasPhase_{false}; + std::string momphName_; }; MODULE_REGISTER(A2AMesonField, ARG(TA2AMesonField), MContraction); @@ -99,7 +102,8 @@ MODULE_REGISTER(ZA2AMesonField, ARG(TA2AMesonField), MContraction); // constructor ///////////////////////////////////////////////////////////////// template TA2AMesonField::TA2AMesonField(const std::string name) - : Module(name) +: Module(name) +, momphName_(name + "_momph") { } @@ -120,18 +124,166 @@ std::vector TA2AMesonField::getOutput(void) return out; } - // setup /////////////////////////////////////////////////////////////////////// template void TA2AMesonField::setup(void) -{} +{ + envCache(std::vector, momphName_, 1, + par().mom.size(), env().getGrid()); + envTmpLat(LatticeComplex, "coor"); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TA2AMesonField::execute(void) +{ + LOG(Message) << "Computing all-to-all meson fields" << std::endl; + + auto &v = envGet(std::vector, par().v); + auto &w = envGet(std::vector, par().w); + + // 2+6+4+4 = 16 gammas + // Ordering defined here + std::vector gammas ( { + Gamma::Algebra::Gamma5, + Gamma::Algebra::Identity, + Gamma::Algebra::GammaX, + Gamma::Algebra::GammaY, + Gamma::Algebra::GammaZ, + Gamma::Algebra::GammaT, + Gamma::Algebra::GammaXGamma5, + Gamma::Algebra::GammaYGamma5, + Gamma::Algebra::GammaZGamma5, + Gamma::Algebra::GammaTGamma5, + Gamma::Algebra::SigmaXY, + Gamma::Algebra::SigmaXZ, + Gamma::Algebra::SigmaXT, + Gamma::Algebra::SigmaYZ, + Gamma::Algebra::SigmaYT, + Gamma::Algebra::SigmaZT + }); + + int nt = env().getDim().back(); + int N_i = w.size(); + int N_j = v.size(); + int ngamma = gammas.size(); + int nmom = par().mom.size(); + int block = par().block; + int cacheBlock = par().cacheBlock; + + /////////////////////////////////////////////// + // Momentum setup + /////////////////////////////////////////////// + auto &ph = envGet(std::vector, momphName_); + + if (!hasPhase_) + { + MODULE_TIMER("Momentum phases"); + for (unsigned int j = 0; j < nmom; ++j) + { + Complex i(0.0,1.0); + std::vector p; + + envGetTmp(LatticeComplex, coor); + p = strToVec(par().mom[j]); + ph[j] = zero; + for(unsigned int mu = 0; mu < p.size(); mu++) + { + LatticeCoordinate(coor, mu); + ph[j] = ph[j] + (p[mu]/env().getDim(mu))*coor; + } + ph[j] = exp((Real)(2*M_PI)*i*ph[j]); + } + hasPhase_ = true; + } + LOG(Message) << "MesonField size " << N_i << "x" << N_j << "x" << nt << std::endl; + + ////////////////////////////////////////////////////////////////////////// + // i,j is first loop over SchurBlock factors reusing 5D matrices + // ii,jj is second loop over cacheBlock factors for high perf contractoin + // iii,jjj are loops within cacheBlock + // Total index is sum of these i+ii+iii etc... + ////////////////////////////////////////////////////////////////////////// + + double flops = 0.0; + double bytes = 0.0; + double vol = env().getVolume(); + double t_schur=0; + double t_contr=0; + double t_int_0=0; + double t_int_1=0; + double t_int_2=0; + double t_int_3=0; + + double t0 = usecond(); + int NBlock_i = N_i/block + (((N_i % block) != 0) ? 1 : 0); + int NBlock_j = N_j/block + (((N_j % block) != 0) ? 1 : 0); + + for(int i=0;i mfBlock(nmom,ngamma,nt,N_ii,N_jj); + + /////////////////////////////////////////////////////////////// + // Series of cache blocked chunks of the contractions within this block + /////////////////////////////////////////////////////////////// + for(int ii=0;ii mfCache(nmom,ngamma,nt,N_iii,N_jjj); + + t_contr-=usecond(); + makeBlock(mfCache, &w[i+ii], &v[j+jj], gammas, ph, + env().getNd() - 1, t_int_0, t_int_1, t_int_2, t_int_3); + t_contr+=usecond(); + + // flops for general N_c & N_s + flops += vol * ( 2 * 8.0 + 6.0 + 8.0*nmom) * N_iii*N_jjj*ngamma; + bytes += vol * (12.0 * sizeof(Complex) ) * N_iii*N_jjj + + vol * ( 2.0 * sizeof(Complex) *nmom ) * N_iii*N_jjj* ngamma; + + MODULE_TIMER("Cache copy"); + for(int iii=0;iii< N_iii;iii++) + for(int jjj=0;jjj< N_jjj;jjj++) + for(int m =0;m< nmom;m++) + for(int g =0;g< ngamma;g++) + for(int t =0;t< nt;t++) + { + mfBlock(m,g,t,ii+iii,jj+jjj) = mfCache(m,g,t,iii,jjj); + } + } + } + + double nodes = env().getGrid()->NodeCount(); + double t_kernel = t_int_0 + t_int_1; + + LOG(Message) << "Perf " << flops/(t_kernel)/1.0e3/nodes << " Gflop/s/node " << std::endl; + LOG(Message) << "Perf " << bytes/(t_kernel)/1.0e3/nodes << " GB/s/node " << std::endl; +} ////////////////////////////////////////////////////////////////////////////////// // Cache blocked arithmetic routine // Could move to Grid ??? ////////////////////////////////////////////////////////////////////////////////// template -void TA2AMesonField::MesonField(Eigen::Tensor &mat, +void TA2AMesonField::makeBlock(Eigen::Tensor &mat, const LatticeFermion *lhs_wi, const LatticeFermion *rhs_vj, std::vector gammas, @@ -142,315 +294,178 @@ void TA2AMesonField::MesonField(Eigen::Tensor &mat, double &t2, double &t3) { - typedef typename FImpl::SiteSpinor vobj; + typedef typename FImpl::SiteSpinor vobj; - typedef typename vobj::scalar_object sobj; - typedef typename vobj::scalar_type scalar_type; - typedef typename vobj::vector_type vector_type; + typedef typename vobj::scalar_object sobj; + typedef typename vobj::scalar_type scalar_type; + typedef typename vobj::vector_type vector_type; - typedef iSpinMatrix SpinMatrix_v; - typedef iSpinMatrix SpinMatrix_s; - - int Lblock = mat.dimension(3); - int Rblock = mat.dimension(4); + typedef iSpinMatrix SpinMatrix_v; + typedef iSpinMatrix SpinMatrix_s; + + int Lblock = mat.dimension(3); + int Rblock = mat.dimension(4); - GridBase *grid = lhs_wi[0]._grid; - - const int Nd = grid->_ndimension; - const int Nsimd = grid->Nsimd(); + GridBase *grid = lhs_wi[0]._grid; + + const int Nd = grid->_ndimension; + const int Nsimd = grid->Nsimd(); - int Nt = grid->GlobalDimensions()[orthogdim]; - int Ngamma = gammas.size(); - int Nmom = mom.size(); + int Nt = grid->GlobalDimensions()[orthogdim]; + int Ngamma = gammas.size(); + int Nmom = mom.size(); - int fd=grid->_fdimensions[orthogdim]; - int ld=grid->_ldimensions[orthogdim]; - int rd=grid->_rdimensions[orthogdim]; + int fd=grid->_fdimensions[orthogdim]; + int ld=grid->_ldimensions[orthogdim]; + int rd=grid->_rdimensions[orthogdim]; - // will locally sum vectors first - // sum across these down to scalars - // splitting the SIMD - int MFrvol = rd*Lblock*Rblock*Nmom; - int MFlvol = ld*Lblock*Rblock*Nmom; + // will locally sum vectors first + // sum across these down to scalars + // splitting the SIMD + int MFrvol = rd*Lblock*Rblock*Nmom; + int MFlvol = ld*Lblock*Rblock*Nmom; - Vector lvSum(MFrvol); - parallel_for (int r = 0; r < MFrvol; r++) - { - lvSum[r] = zero; - } - - Vector lsSum(MFlvol); - parallel_for (int r = 0; r < MFlvol; r++){ - lsSum[r]=scalar_type(0.0); - } - - int e1= grid->_slice_nblock[orthogdim]; - int e2= grid->_slice_block [orthogdim]; - int stride=grid->_slice_stride[orthogdim]; - - t0-=usecond(); - MODULE_TIMER("Colour trace * mom."); - // Nested parallelism would be ok - // Wasting cores here. Test case r - parallel_for(int r=0;r_ostride[orthogdim]; // base offset for start of plane - - for(int n=0;n lvSum(MFrvol); + parallel_for (int r = 0; r < MFrvol; r++) { - int ss= so+n*stride+b; - - for(int i=0;i icoor(Nd); - std::vector extracted(Nsimd); - - for(int i=0;iiCoorFromIindex(icoor,idx); - - int ldx = rt+icoor[orthogdim]*rd; - int ij_ldx = m+Nmom*i+Nmom*Lblock*j+Nmom*Lblock*Rblock*ldx; - - lsSum[ij_ldx]=lsSum[ij_ldx]+extracted[idx]; - } + Vector lsSum(MFlvol); + parallel_for (int r = 0; r < MFlvol; r++){ + lsSum[r]=scalar_type(0.0); } - } - t1+=usecond(); - assert(mat.dimension(0) == Nmom); - assert(mat.dimension(1) == Ngamma); - assert(mat.dimension(2) == Nt); - t2-=usecond(); - // ld loop and local only?? - MODULE_TIMER("Spin trace"); - int pd = grid->_processors[orthogdim]; - int pc = grid->_processor_coor[orthogdim]; - parallel_for_nest2(int lt=0;lt_slice_nblock[orthogdim]; + int e2= grid->_slice_block [orthogdim]; + int stride=grid->_slice_stride[orthogdim]; + + t0-=usecond(); + MODULE_TIMER("Colour trace * mom."); + // Nested parallelism would be ok + // Wasting cores here. Test case r + parallel_for(int r=0;r_ostride[orthogdim]; // base offset for start of plane - for(int mu=0;mu icoor(Nd); + std::vector extracted(Nsimd); for(int i=0;iiCoorFromIindex(icoor,idx); + + int ldx = rt+icoor[orthogdim]*rd; + int ij_ldx = m+Nmom*i+Nmom*Lblock*j+Nmom*Lblock*Rblock*ldx; + + lsSum[ij_ldx]=lsSum[ij_ldx]+extracted[idx]; + } + } } - } - t2+=usecond(); - //////////////////////////////////////////////////////////////////// - // This global sum is taking as much as 50% of time on 16 nodes - // Vector size is 7 x 16 x 32 x 16 x 16 x sizeof(complex) = 2MB - 60MB depending on volume - // Healthy size that should suffice - //////////////////////////////////////////////////////////////////// - t3-=usecond(); - MODULE_TIMER("Global sum"); - grid->GlobalSumVector(&mat(0,0,0,0,0),Nmom*Ngamma*Nt*Lblock*Rblock); - t3+=usecond(); -} + t1+=usecond(); + assert(mat.dimension(0) == Nmom); + assert(mat.dimension(1) == Ngamma); + assert(mat.dimension(2) == Nt); + t2-=usecond(); -// execution /////////////////////////////////////////////////////////////////// -template -void TA2AMesonField::execute(void) -{ - LOG(Message) << "Computing A2A meson field" << std::endl; - - auto &v = envGet(std::vector, par().v); - auto &w = envGet(std::vector, par().w); - - // 2+6+4+4 = 16 gammas - // Ordering defined here - std::vector gammas ( { - Gamma::Algebra::Gamma5, - Gamma::Algebra::Identity, - Gamma::Algebra::GammaX, - Gamma::Algebra::GammaY, - Gamma::Algebra::GammaZ, - Gamma::Algebra::GammaT, - Gamma::Algebra::GammaXGamma5, - Gamma::Algebra::GammaYGamma5, - Gamma::Algebra::GammaZGamma5, - Gamma::Algebra::GammaTGamma5, - Gamma::Algebra::SigmaXY, - Gamma::Algebra::SigmaXZ, - Gamma::Algebra::SigmaXT, - Gamma::Algebra::SigmaYZ, - Gamma::Algebra::SigmaYT, - Gamma::Algebra::SigmaZT - }); - - /////////////////////////////////////////////// - // Square assumption for now Nl = Nr = N - /////////////////////////////////////////////// - int nt = env().getDim(Tp); - int nx = env().getDim(Xp); - int ny = env().getDim(Yp); - int nz = env().getDim(Zp); - int N_i = w.size(); - int N_j = v.size(); - int ngamma = gammas.size(); - int schurBlock = par().schurBlock; - int cacheBlock = par().cacheBlock; - int nmom = par().Nmom; - std::vector corr(nt,ComplexD(0.0)); - - /////////////////////////////////////////////// - // Momentum setup - /////////////////////////////////////////////// - GridBase *grid = env().getGrid(); - std::vector phases(nmom,grid); - - for(int m=0;m mesonFieldBlocked(nmom,ngamma,nt,N_ii,N_jj); - - /////////////////////////////////////////////////////////////// - // Series of cache blocked chunks of the contractions within this SchurBlock - /////////////////////////////////////////////////////////////// - for(int ii=0;ii_processors[orthogdim]; + int pc = grid->_processor_coor[orthogdim]; + parallel_for_nest2(int lt=0;lt mesonFieldCache(nmom,ngamma,nt,N_iii,N_jjj); + for(int pt=0;ptNodeCount(); - double t_kernel = t_int_0 + t_int_1; - - LOG(Message) << "Perf " << flops/(t_kernel)/1.0e3/nodes << " Gflop/s/node " << std::endl; - LOG(Message) << "Perf " << bytes/(t_kernel)/1.0e3/nodes << " GB/s/node " << std::endl; + t2+=usecond(); + //////////////////////////////////////////////////////////////////// + // This global sum is taking as much as 50% of time on 16 nodes + // Vector size is 7 x 16 x 32 x 16 x 16 x sizeof(complex) = 2MB - 60MB depending on volume + // Healthy size that should suffice + //////////////////////////////////////////////////////////////////// + t3-=usecond(); + MODULE_TIMER("Global sum"); + grid->GlobalSumVector(&mat(0,0,0,0,0),Nmom*Ngamma*Nt*Lblock*Rblock); + t3+=usecond(); } END_MODULE_NAMESPACE From 503259f9c975ed3873cc52b9e809276fb655af22 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Sun, 12 Aug 2018 16:52:12 +0100 Subject: [PATCH 245/267] Hadrons: meson field HDF5 IO done and tested --- .../Modules/MContraction/A2AMesonField.hpp | 232 +++++++++++++----- lib/serialisation/Hdf5IO.cc | 2 +- 2 files changed, 173 insertions(+), 61 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index ba849b0c..5bb4b4c3 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -35,6 +35,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include +#include BEGIN_HADRONS_NAMESPACE @@ -46,7 +47,7 @@ BEGIN_MODULE_NAMESPACE(MContraction) typedef std::pair GammaPair; -class A2AMesonFieldPar : Serializable +class A2AMesonFieldPar: Serializable { public: GRID_SERIALIZABLE_CLASS_MEMBERS(A2AMesonFieldPar, @@ -62,8 +63,9 @@ template class TA2AMesonField : public Module { public: - FERM_TYPE_ALIASES(FImpl, ); - SOLVER_TYPE_ALIASES(FImpl, ); + FERM_TYPE_ALIASES(FImpl,); + SOLVER_TYPE_ALIASES(FImpl,); + typedef Eigen::Tensor MesonField; public: // constructor TA2AMesonField(const std::string name); @@ -77,20 +79,29 @@ public: // execution virtual void execute(void); private: - // Arithmetic help. Move to Grid?? - virtual void makeBlock(Eigen::Tensor &mat, - const LatticeFermion *lhs, - const LatticeFermion *rhs, - std::vector gammas, - const std::vector &mom, - int orthogdim, - double &t0, - double &t1, - double &t2, - double &t3); + // Arithmetic kernel. Move to Grid?? + void makeBlock(MesonField &mat, + const FermionField *lhs, + const FermionField *rhs, + std::vector gamma, + const std::vector &mom, + int orthogdim, + double &t0, + double &t1, + double &t2, + double &t3); + // IO + std::string ioname(unsigned int m, unsigned int g) const; + std::string filename(unsigned int m, unsigned int g) const; + void initFile(unsigned int m, unsigned int g); + void saveBlock(const MesonField &mf, + unsigned int m, unsigned int g, + unsigned int i, unsigned int j); private: - bool hasPhase_{false}; - std::string momphName_; + bool hasPhase_{false}; + std::string momphName_; + std::vector gamma_; + std::vector> mom_; }; MODULE_REGISTER(A2AMesonField, ARG(TA2AMesonField), MContraction); @@ -128,23 +139,7 @@ std::vector TA2AMesonField::getOutput(void) template void TA2AMesonField::setup(void) { - envCache(std::vector, momphName_, 1, - par().mom.size(), env().getGrid()); - envTmpLat(LatticeComplex, "coor"); -} - -// execution /////////////////////////////////////////////////////////////////// -template -void TA2AMesonField::execute(void) -{ - LOG(Message) << "Computing all-to-all meson fields" << std::endl; - - auto &v = envGet(std::vector, par().v); - auto &w = envGet(std::vector, par().w); - - // 2+6+4+4 = 16 gammas - // Ordering defined here - std::vector gammas ( { + gamma_ = { Gamma::Algebra::Gamma5, Gamma::Algebra::Identity, Gamma::Algebra::GammaX, @@ -161,12 +156,26 @@ void TA2AMesonField::execute(void) Gamma::Algebra::SigmaYZ, Gamma::Algebra::SigmaYT, Gamma::Algebra::SigmaZT - }); + }; + + envCache(std::vector, momphName_, 1, + par().mom.size(), env().getGrid()); + envTmpLat(LatticeComplex, "coor"); +} + +// execution /////////////////////////////////////////////////////////////////// +template +void TA2AMesonField::execute(void) +{ + LOG(Message) << "Computing all-to-all meson fields" << std::endl; + + auto &v = envGet(std::vector, par().v); + auto &w = envGet(std::vector, par().w); int nt = env().getDim().back(); int N_i = w.size(); int N_j = v.size(); - int ngamma = gammas.size(); + int ngamma = gamma_.size(); int nmom = par().mom.size(); int block = par().block; int cacheBlock = par().cacheBlock; @@ -185,12 +194,12 @@ void TA2AMesonField::execute(void) std::vector p; envGetTmp(LatticeComplex, coor); - p = strToVec(par().mom[j]); + mom_.push_back(strToVec(par().mom[j])); ph[j] = zero; - for(unsigned int mu = 0; mu < p.size(); mu++) + for(unsigned int mu = 0; mu < mom_[j].size(); mu++) { LatticeCoordinate(coor, mu); - ph[j] = ph[j] + (p[mu]/env().getDim(mu))*coor; + ph[j] = ph[j] + (mom_[j][mu]/env().getDim(mu))*coor; } ph[j] = exp((Real)(2*M_PI)*i*ph[j]); } @@ -222,9 +231,7 @@ void TA2AMesonField::execute(void) for(int i=0;i::execute(void) << i+N_ii-1 << ", " << j <<" .. " << j+N_jj-1 << "]" << std::endl; - Eigen::Tensor mfBlock(nmom,ngamma,nt,N_ii,N_jj); + MesonField mfBlock(nmom,ngamma,nt,N_ii,N_jj); - /////////////////////////////////////////////////////////////// // Series of cache blocked chunks of the contractions within this block - /////////////////////////////////////////////////////////////// for(int ii=0;ii mfCache(nmom,ngamma,nt,N_iii,N_jjj); + MesonField mfCache(nmom,ngamma,nt,N_iii,N_jjj); t_contr-=usecond(); - makeBlock(mfCache, &w[i+ii], &v[j+jj], gammas, ph, + makeBlock(mfCache, &w[i+ii], &v[j+jj], gamma_, ph, env().getNd() - 1, t_int_0, t_int_1, t_int_2, t_int_3); t_contr+=usecond(); @@ -269,13 +274,25 @@ void TA2AMesonField::execute(void) mfBlock(m,g,t,ii+iii,jj+jjj) = mfCache(m,g,t,iii,jjj); } } + + // IO + MODULE_TIMER("IO"); + for(int m = 0; m < nmom; m++) + for(int g = 0; g < ngamma; g++) + { + if ((i == 0) and (j == 0)) + { + initFile(m, g); + } + saveBlock(mfBlock, m, g, i, j); + } } double nodes = env().getGrid()->NodeCount(); double t_kernel = t_int_0 + t_int_1; - LOG(Message) << "Perf " << flops/(t_kernel)/1.0e3/nodes << " Gflop/s/node " << std::endl; - LOG(Message) << "Perf " << bytes/(t_kernel)/1.0e3/nodes << " GB/s/node " << std::endl; + LOG(Message) << "Perf " << flops/t_kernel/1.0e3/nodes << " Gflop/s/node " << std::endl; + LOG(Message) << "Perf " << bytes/t_kernel/1.0e3/nodes << " GB/s/node " << std::endl; } ////////////////////////////////////////////////////////////////////////////////// @@ -283,16 +300,16 @@ void TA2AMesonField::execute(void) // Could move to Grid ??? ////////////////////////////////////////////////////////////////////////////////// template -void TA2AMesonField::makeBlock(Eigen::Tensor &mat, - const LatticeFermion *lhs_wi, - const LatticeFermion *rhs_vj, - std::vector gammas, - const std::vector &mom, - int orthogdim, - double &t0, - double &t1, - double &t2, - double &t3) +void TA2AMesonField::makeBlock(MesonField &mat, + const FermionField *lhs_wi, + const FermionField *rhs_vj, + std::vector gamma, + const std::vector &mom, + int orthogdim, + double &t0, + double &t1, + double &t2, + double &t3) { typedef typename FImpl::SiteSpinor vobj; @@ -312,7 +329,7 @@ void TA2AMesonField::makeBlock(Eigen::Tensor &mat, const int Nsimd = grid->Nsimd(); int Nt = grid->GlobalDimensions()[orthogdim]; - int Ngamma = gammas.size(); + int Ngamma = gamma.size(); int Nmom = mom.size(); int fd=grid->_fdimensions[orthogdim]; @@ -436,9 +453,9 @@ void TA2AMesonField::makeBlock(Eigen::Tensor &mat, int ij_dx = m+Nmom*i + Nmom*Lblock * j + Nmom*Lblock * Rblock * lt; for(int mu=0;mu::makeBlock(Eigen::Tensor &mat, t3+=usecond(); } +// IO +template +std::string TA2AMesonField::ioname(unsigned int m, unsigned int g) const +{ + std::stringstream ss; + + ss << gamma_[g] << "_"; + for (unsigned int mu = 0; mu < mom_[m].size(); ++mu) + { + ss << mom_[m][mu] << ((mu == mom_[m].size() - 1) ? "" : "_"); + } + + return ss.str(); +} + +template +std::string TA2AMesonField::filename(unsigned int m, unsigned int g) const +{ + return par().output + "." + std::to_string(vm().getTrajectory()) + + "/" + ioname(m, g) + ".h5"; +} + +template +void TA2AMesonField::initFile(unsigned int m, unsigned int g) +{ +#ifdef HAVE_HDF5 + std::string f = filename(m, g); + GridBase *grid = env().getGrid(); + auto &v = envGet(std::vector, par().v); + auto &w = envGet(std::vector, par().w); + int nt = env().getDim().back(); + int N_i = w.size(); + int N_j = v.size(); + + makeFileDir(f, grid); + if (grid->IsBoss()) + { + Hdf5Writer writer(f); + std::vector dim = {static_cast(nt), + static_cast(N_i), + static_cast(N_j)}; + H5NS::DataSpace dataspace(dim.size(), dim.data()); + H5NS::DataSet dataset; + + push(writer, ioname(m, g)); + write(writer, "momentum", mom_[m]); + write(writer, "gamma", gamma_[g]); + auto &group = writer.getGroup(); + dataset = group.createDataSet("mesonField", Hdf5Type::type(), + dataspace); + } +#else + HADRONS_ERROR(Implementation, "meson field I/O needs HDF5 library"); +#endif +} + +template +void TA2AMesonField::saveBlock(const MesonField &mf, + unsigned int m, unsigned int g, + unsigned int i, unsigned int j) +{ +#ifdef HAVE_HDF5 + std::string f = filename(m, g); + GridBase *grid = env().getGrid(); + + if (grid->IsBoss()) + { + Hdf5Reader reader(f); + hsize_t nt = mf.dimension(2), + Ni = mf.dimension(3), + Nj = mf.dimension(4); + std::vector count = {nt, Ni, Nj}, + offset = {0, static_cast(i), + static_cast(j)}, + stride = {1, 1, 1}, + block = {1, 1, 1}; + H5NS::DataSpace memspace(count.size(), count.data()), dataspace; + H5NS::DataSet dataset; + size_t shift; + + push(reader, ioname(m, g)); + auto &group = reader.getGroup(); + dataset = group.openDataSet("mesonField"); + dataspace = dataset.getSpace(); + dataspace.selectHyperslab(H5S_SELECT_SET, count.data(), offset.data(), + stride.data(), block.data()); + shift = (m*mf.dimension(1) + g)*nt*Ni*Nj; + dataset.write(mf.data() + shift, Hdf5Type::type(), memspace, + dataspace); + } +#else + HADRONS_ERROR(Implementation, "meson field I/O needs HDF5 library"); +#endif +} + END_MODULE_NAMESPACE END_HADRONS_NAMESPACE diff --git a/lib/serialisation/Hdf5IO.cc b/lib/serialisation/Hdf5IO.cc index b915a988..ca2457fa 100644 --- a/lib/serialisation/Hdf5IO.cc +++ b/lib/serialisation/Hdf5IO.cc @@ -63,7 +63,7 @@ Group & Hdf5Writer::getGroup(void) // Reader implementation /////////////////////////////////////////////////////// Hdf5Reader::Hdf5Reader(const std::string &fileName) : fileName_(fileName) -, file_(fileName.c_str(), H5F_ACC_RDONLY) +, file_(fileName.c_str(), H5F_ACC_RDWR) { group_ = file_.openGroup("/"); readSingleAttribute(dataSetThres_, HDF5_GRID_GUARD "dataset_threshold", From 07a0ef3f957f45757d0a9cf67de1ddb8439f1883 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 13 Aug 2018 16:44:57 +0100 Subject: [PATCH 246/267] Hadrons: global measurement time profile --- extras/Hadrons/VirtualMachine.cc | 8 ++++++++ extras/Hadrons/VirtualMachine.hpp | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index 74579588..c38b61ee 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -664,6 +664,7 @@ void VirtualMachine::executeProgram(const Program &p) // program execution LOG(Debug) << "Executing program..." << std::endl; + totalTime_ = GridTime::zero(); for (unsigned int i = 0; i < p.size(); ++i) { // execute module @@ -693,6 +694,8 @@ void VirtualMachine::executeProgram(const Program &p) LOG(Message) << "* CUSTOM TIMERS" << std::endl; printTimeProfile(ctiming, total); } + timeProfile_[module_[p[i]].name] = total; + totalTime_ += total; // print used memory after execution LOG(Message) << SMALL_SEP << " Memory management" << std::endl; LOG(Message) << "Allocated objects: " << MEM_MSG(sizeBefore) @@ -719,6 +722,11 @@ void VirtualMachine::executeProgram(const Program &p) LOG(Message) << "Nothing to free" << std::endl; } } + // print total time profile + LOG(Message) << SEP << " Measurement time profile" << SEP << std::endl; + LOG(Message) << "Total measurement time: " << totalTime_ << " us" << std::endl; + LOG(Message) << SMALL_SEP << " Module breakdown" << std::endl; + printTimeProfile(timeProfile_, totalTime_); } void VirtualMachine::executeProgram(const std::vector &p) diff --git a/extras/Hadrons/VirtualMachine.hpp b/extras/Hadrons/VirtualMachine.hpp index 1fa2daa9..7e6e36c2 100644 --- a/extras/Hadrons/VirtualMachine.hpp +++ b/extras/Hadrons/VirtualMachine.hpp @@ -165,7 +165,10 @@ private: Graph graph_; // memory profile bool memoryProfileOutdated_{true}; - MemoryProfile profile_; + MemoryProfile profile_; + // time profile + GridTime totalTime_; + std::map timeProfile_; }; /****************************************************************************** From 603d59f3890b4954d1e74a12c18895bfc28438ec Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 13 Aug 2018 20:17:24 +0100 Subject: [PATCH 247/267] Hadrons: code cleaning --- extras/Hadrons/Application.cc | 2 +- extras/Hadrons/Global.cc | 2 ++ extras/Hadrons/VirtualMachine.cc | 4 ---- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/extras/Hadrons/Application.cc b/extras/Hadrons/Application.cc index cff1b619..b2a1987e 100644 --- a/extras/Hadrons/Application.cc +++ b/extras/Hadrons/Application.cc @@ -60,7 +60,7 @@ Application::Application(void) LOG(Message) << "MPI partition : " << mpi << std::endl; LOG(Message) << "Local lattice : " << loc << std::endl; LOG(Message) << std::endl; - LOG(Message) << "** Default parameters (and associated C macro)" << std::endl; + LOG(Message) << "** Default parameters (and associated C macros)" << std::endl; LOG(Message) << "ASCII output precision : " << MACOUT(DEFAULT_ASCII_PREC) << std::endl; LOG(Message) << "Fermion implementation : " << MACOUTS(FIMPL) << std::endl; LOG(Message) << "z-Fermion implementation: " << MACOUTS(ZFIMPL) << std::endl; diff --git a/extras/Hadrons/Global.cc b/extras/Hadrons/Global.cc index 8c0cf799..a173bd8b 100644 --- a/extras/Hadrons/Global.cc +++ b/extras/Hadrons/Global.cc @@ -182,6 +182,7 @@ void Hadrons::printTimeProfile(const std::map &timing, std::map> rtiming; const double dtotal = static_cast(total.count()); auto cf = std::cout.flags(); + auto p = std::cout.precision(); unsigned int width = 0; for (auto &t: timing) @@ -198,4 +199,5 @@ void Hadrons::printTimeProfile(const std::map &timing, << std::endl; } std::cout.flags(cf); + std::cout.precision(p); } diff --git a/extras/Hadrons/VirtualMachine.cc b/extras/Hadrons/VirtualMachine.cc index c38b61ee..17aaaf63 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/extras/Hadrons/VirtualMachine.cc @@ -637,10 +637,6 @@ VirtualMachine::Program VirtualMachine::schedule(const GeneticPar &par) #define SEP "----------------" #define SMALL_SEP "................" #define MEM_MSG(size) sizeString(size) -#define PRINT_TIME(name, t, total) \ -std::right << std::setw(30) << name << ": " << t.count() << " us (" \ -<< std::fixed << std::setprecision(1) \ -<< static_cast((t).count())/total*100 << "%)" void VirtualMachine::executeProgram(const Program &p) { From 3c27bb36d482879ffa1d11e9bdb1fb114beaff99 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 13 Aug 2018 20:17:45 +0100 Subject: [PATCH 248/267] Hadrons: direct timer access --- extras/Hadrons/Module.cc | 18 ++++++++++++++++++ extras/Hadrons/Module.hpp | 1 + 2 files changed, 19 insertions(+) diff --git a/extras/Hadrons/Module.cc b/extras/Hadrons/Module.cc index 8ac33ccf..f0f3def1 100644 --- a/extras/Hadrons/Module.cc +++ b/extras/Hadrons/Module.cc @@ -75,6 +75,24 @@ void ModuleBase::startTimer(const std::string &name) } } +GridTime ModuleBase::getTimer(const std::string &name) +{ + GridTime t; + + if (!name.empty()) + { + stopTimer(name); + t = timer_.at(name).Elapsed(); + startTimer(name); + } + else + { + t = GridTime::zero(); + } + + return t; +} + void ModuleBase::startCurrentTimer(const std::string &name) { if (!name.empty()) diff --git a/extras/Hadrons/Module.hpp b/extras/Hadrons/Module.hpp index f3d87c2d..8f260c19 100644 --- a/extras/Hadrons/Module.hpp +++ b/extras/Hadrons/Module.hpp @@ -165,6 +165,7 @@ public: void operator()(void); // timers void startTimer(const std::string &name); + GridTime getTimer(const std::string &name); void startCurrentTimer(const std::string &name); void stopTimer(const std::string &name); void stopCurrentTimer(void); From f2d3e41cf2bed1cb13614cdc0333b83e606032a9 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 13 Aug 2018 20:18:33 +0100 Subject: [PATCH 249/267] Hadrons: meson field: HDF5 perf, gamma input and Eigen tensors allocated by Grid --- .../Modules/MContraction/A2AMesonField.hpp | 75 +++++++++++++++---- 1 file changed, 62 insertions(+), 13 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index 5bb4b4c3..e0818874 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -56,6 +56,7 @@ class A2AMesonFieldPar: Serializable std::string, v, std::string, w, std::string, output, + std::string, gammas, std::vector, mom); }; @@ -65,7 +66,7 @@ class TA2AMesonField : public Module public: FERM_TYPE_ALIASES(FImpl,); SOLVER_TYPE_ALIASES(FImpl,); - typedef Eigen::Tensor MesonField; + typedef Eigen::TensorMap> MesonField; public: // constructor TA2AMesonField(const std::string name); @@ -139,6 +140,10 @@ std::vector TA2AMesonField::getOutput(void) template void TA2AMesonField::setup(void) { + gamma_.clear(); + mom_.clear(); + if (par().gammas == "all") + { gamma_ = { Gamma::Algebra::Gamma5, Gamma::Algebra::Identity, @@ -157,18 +162,38 @@ void TA2AMesonField::setup(void) Gamma::Algebra::SigmaYT, Gamma::Algebra::SigmaZT }; + } + else + { + gamma_ = strToVec(par().gammas); + } + for (auto &pstr: par().mom) + { + auto p = strToVec(pstr); + if (p.size() != env().getNd() - 1) + { + HADRONS_ERROR(Size, "Momentum has " + std::to_string(p.size()) + + " components instead of " + + std::to_string(env().getNd() - 1)); + } + mom_.push_back(p); + } + envCache(std::vector, momphName_, 1, par().mom.size(), env().getGrid()); envTmpLat(LatticeComplex, "coor"); + // preallocate memory for meson field block + auto tgp = env().getDim().back()*gamma_.size()*mom_.size(); + + envTmp(Vector, "mfBuf", 1, tgp*par().block*par().block); + envTmp(Vector, "mfCache", 1, tgp*par().cacheBlock*par().cacheBlock); } // execution /////////////////////////////////////////////////////////////////// template void TA2AMesonField::execute(void) { - LOG(Message) << "Computing all-to-all meson fields" << std::endl; - auto &v = envGet(std::vector, par().v); auto &w = envGet(std::vector, par().w); @@ -176,10 +201,25 @@ void TA2AMesonField::execute(void) int N_i = w.size(); int N_j = v.size(); int ngamma = gamma_.size(); - int nmom = par().mom.size(); + int nmom = mom_.size(); int block = par().block; int cacheBlock = par().cacheBlock; + LOG(Message) << "Computing all-to-all meson fields" << std::endl; + LOG(Message) << "W: '" << par().w << "' V: '" << par().v << "'" << std::endl; + LOG(Message) << "Meson field size: " << nt << "*" << N_i << "*" << N_j + << " (" << sizeString(nt*N_i*N_j*sizeof(Complex)) << ")" << std::endl; + LOG(Message) << "Momenta:" << std::endl; + for (auto &p: mom_) + { + LOG(Message) << " " << p << std::endl; + } + LOG(Message) << "Spin structures:" << std::endl; + for (auto &g: gamma_) + { + LOG(Message) << " " << g << std::endl; + } + /////////////////////////////////////////////// // Momentum setup /////////////////////////////////////////////// @@ -194,7 +234,6 @@ void TA2AMesonField::execute(void) std::vector p; envGetTmp(LatticeComplex, coor); - mom_.push_back(strToVec(par().mom[j])); ph[j] = zero; for(unsigned int mu = 0; mu < mom_[j].size(); mu++) { @@ -205,7 +244,7 @@ void TA2AMesonField::execute(void) } hasPhase_ = true; } - LOG(Message) << "MesonField size " << N_i << "x" << N_j << "x" << nt << std::endl; + ////////////////////////////////////////////////////////////////////////// // i,j is first loop over SchurBlock factors reusing 5D matrices @@ -224,6 +263,9 @@ void TA2AMesonField::execute(void) double t_int_2=0; double t_int_3=0; + envGetTmp(Vector, mfBuf); + envGetTmp(Vector, mfCache); + double t0 = usecond(); int NBlock_i = N_i/block + (((N_i % block) != 0) ? 1 : 0); int NBlock_j = N_j/block + (((N_j % block) != 0) ? 1 : 0); @@ -244,7 +286,7 @@ void TA2AMesonField::execute(void) << i+N_ii-1 << ", " << j <<" .. " << j+N_jj-1 << "]" << std::endl; - MesonField mfBlock(nmom,ngamma,nt,N_ii,N_jj); + MesonField mfBlock(mfBuf.data(),nmom,ngamma,nt,N_ii,N_jj); // Series of cache blocked chunks of the contractions within this block for(int ii=0;ii::execute(void) { int N_iii = MIN(N_ii-ii,cacheBlock); int N_jjj = MIN(N_jj-jj,cacheBlock); - MesonField mfCache(nmom,ngamma,nt,N_iii,N_jjj); + MesonField mfCacheBlock(mfCache.data(),nmom,ngamma,nt,N_iii,N_jjj); t_contr-=usecond(); - makeBlock(mfCache, &w[i+ii], &v[j+jj], gamma_, ph, + makeBlock(mfCacheBlock, &w[i+ii], &v[j+jj], gamma_, ph, env().getNd() - 1, t_int_0, t_int_1, t_int_2, t_int_3); t_contr+=usecond(); @@ -271,11 +313,13 @@ void TA2AMesonField::execute(void) for(int g =0;g< ngamma;g++) for(int t =0;t< nt;t++) { - mfBlock(m,g,t,ii+iii,jj+jjj) = mfCache(m,g,t,iii,jjj); + mfBlock(m,g,t,ii+iii,jj+jjj) = mfCacheBlock(m,g,t,iii,jjj); } } // IO + double blockSize, ioTime; + MODULE_TIMER("IO"); for(int m = 0; m < nmom; m++) for(int g = 0; g < ngamma; g++) @@ -286,13 +330,17 @@ void TA2AMesonField::execute(void) } saveBlock(mfBlock, m, g, i, j); } + blockSize = static_cast(nmom*ngamma*nt*N_ii*N_jj*sizeof(Complex)); + ioTime = static_cast(this->getTimer("IO").count()); + LOG(Message) << "HDF5 IO " << blockSize/ioTime*1.0e6/1024/1024 + << " MB/s" << std::endl; } double nodes = env().getGrid()->NodeCount(); double t_kernel = t_int_0 + t_int_1; - LOG(Message) << "Perf " << flops/t_kernel/1.0e3/nodes << " Gflop/s/node " << std::endl; - LOG(Message) << "Perf " << bytes/t_kernel/1.0e3/nodes << " GB/s/node " << std::endl; + LOG(Message) << "Perf " << flops/(t_kernel)/1.0e3/nodes << " Gflop/s/node " << std::endl; + LOG(Message) << "Perf " << bytes/(t_kernel)/1.0e3/nodes << " GB/s/node " << std::endl; } ////////////////////////////////////////////////////////////////////////////////// @@ -349,7 +397,8 @@ void TA2AMesonField::makeBlock(MesonField &mat, } Vector lsSum(MFlvol); - parallel_for (int r = 0; r < MFlvol; r++){ + parallel_for (int r = 0; r < MFlvol; r++) + { lsSum[r]=scalar_type(0.0); } From 89d2fac92e17921f701ff78b1fb8bd53b4054b13 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 14 Aug 2018 12:15:24 +0100 Subject: [PATCH 250/267] Hadrons: copyright update --- extras/Hadrons/A2AVectors.hpp | 2 +- extras/Hadrons/DilutedNoise.hpp | 2 +- extras/Hadrons/Global.cc | 2 +- extras/Hadrons/Module.cc | 22 +- extras/Hadrons/Module.hpp | 3 +- extras/Hadrons/Modules.hpp | 35 +++ .../Modules/MContraction/A2AMesonField.cc | 1 + .../Modules/MContraction/A2AMesonField.hpp | 282 +++--------------- .../MContraction/A2AMesonFieldKernels.hpp | 226 ++++++++++++++ extras/Hadrons/Modules/MFermion/FreeProp.cc | 1 + extras/Hadrons/Modules/MGauge/UnitEm.cc | 1 + extras/Hadrons/Modules/MGauge/UnitEm.hpp | 1 + extras/Hadrons/Modules/MScalar/ScalarVP.cc | 1 + extras/Hadrons/Modules/MScalar/ScalarVP.hpp | 1 + .../Hadrons/Modules/MScalar/VPCounterTerms.cc | 1 + .../Modules/MScalar/VPCounterTerms.hpp | 1 + extras/Hadrons/Modules/MSolver/A2AVectors.hpp | 14 +- .../Modules/MUtilities/RandomVectors.cc | 27 ++ .../Modules/MUtilities/RandomVectors.hpp | 27 ++ extras/Hadrons/modules.inc | 1 + 20 files changed, 401 insertions(+), 250 deletions(-) create mode 100644 extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp diff --git a/extras/Hadrons/A2AVectors.hpp b/extras/Hadrons/A2AVectors.hpp index 4cbc7f2a..6e865203 100644 --- a/extras/Hadrons/A2AVectors.hpp +++ b/extras/Hadrons/A2AVectors.hpp @@ -219,4 +219,4 @@ void A2AVectorsSchurDiagTwo::makeHighModeW5D(FermionField &wout_4d, END_HADRONS_NAMESPACE -#endif // A2A_Vectors_hpp_ \ No newline at end of file +#endif // A2A_Vectors_hpp_ diff --git a/extras/Hadrons/DilutedNoise.hpp b/extras/Hadrons/DilutedNoise.hpp index 16561c99..250f8445 100644 --- a/extras/Hadrons/DilutedNoise.hpp +++ b/extras/Hadrons/DilutedNoise.hpp @@ -188,4 +188,4 @@ void TimeDilutedSpinColorDiagonalNoise::generateNoise(GridParallelRNG &rn END_HADRONS_NAMESPACE -#endif // Hadrons_DilutedNoise_hpp_ \ No newline at end of file +#endif // Hadrons_DilutedNoise_hpp_ diff --git a/extras/Hadrons/Global.cc b/extras/Hadrons/Global.cc index a173bd8b..1e747cda 100644 --- a/extras/Hadrons/Global.cc +++ b/extras/Hadrons/Global.cc @@ -192,7 +192,7 @@ void Hadrons::printTimeProfile(const std::map &timing, } for (auto &rt: rtiming) { - LOG(Message) << std::right << std::setw(width) << rt.second << ": " + LOG(Message) << std::setw(width) << rt.second << ": " << rt.first << " us (" << std::fixed << std::setprecision(1) << static_cast(rt.first)/dtotal*100 << "%)" diff --git a/extras/Hadrons/Module.cc b/extras/Hadrons/Module.cc index f0f3def1..8e915f6b 100644 --- a/extras/Hadrons/Module.cc +++ b/extras/Hadrons/Module.cc @@ -78,12 +78,21 @@ void ModuleBase::startTimer(const std::string &name) GridTime ModuleBase::getTimer(const std::string &name) { GridTime t; - + if (!name.empty()) { - stopTimer(name); - t = timer_.at(name).Elapsed(); - startTimer(name); + try + { + bool running = timer_.at(name).isRunning(); + + if (running) stopTimer(name); + t = timer_.at(name).Elapsed(); + if (running) startTimer(name); + } + catch (std::out_of_range &) + { + t = GridTime::zero(); + } } else { @@ -93,6 +102,11 @@ GridTime ModuleBase::getTimer(const std::string &name) return t; } +double ModuleBase::getDTimer(const std::string &name) +{ + return static_cast(getTimer(name).count()); +} + void ModuleBase::startCurrentTimer(const std::string &name) { if (!name.empty()) diff --git a/extras/Hadrons/Module.hpp b/extras/Hadrons/Module.hpp index 8f260c19..02a20e5f 100644 --- a/extras/Hadrons/Module.hpp +++ b/extras/Hadrons/Module.hpp @@ -129,8 +129,6 @@ if (env().getGrid()->IsBoss() and !ioStem.empty())\ }\ } -#define MODULE_TIMER(name) this->startCurrentTimer(name) - /****************************************************************************** * Module class * ******************************************************************************/ @@ -166,6 +164,7 @@ public: // timers void startTimer(const std::string &name); GridTime getTimer(const std::string &name); + double getDTimer(const std::string &name); void startCurrentTimer(const std::string &name); void stopTimer(const std::string &name); void stopCurrentTimer(void); diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp index 5cce335a..86d50755 100644 --- a/extras/Hadrons/Modules.hpp +++ b/extras/Hadrons/Modules.hpp @@ -1,5 +1,40 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli +Author: Guido Cossu +Author: James Harrison +Author: Lanny91 +Author: Peter Boyle +Author: Vera Guelpers +Author: fionnoh +Author: pretidav + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include #include +#include #include #include #include diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.cc b/extras/Hadrons/Modules/MContraction/A2AMesonField.cc index ffc45e22..3d85acb5 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.cc +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.cc @@ -6,6 +6,7 @@ Source file: extras/Hadrons/Modules/MContraction/A2AMesonField.cc Copyright (C) 2015-2018 +Author: Antonin Portelli Author: paboyle This program is free software; you can redistribute it and/or modify diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index e0818874..568985bc 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -34,8 +34,8 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #include -#include #include +#include BEGIN_HADRONS_NAMESPACE @@ -44,9 +44,6 @@ BEGIN_HADRONS_NAMESPACE ******************************************************************************/ BEGIN_MODULE_NAMESPACE(MContraction) -typedef std::pair GammaPair; - - class A2AMesonFieldPar: Serializable { public: @@ -66,7 +63,6 @@ class TA2AMesonField : public Module public: FERM_TYPE_ALIASES(FImpl,); SOLVER_TYPE_ALIASES(FImpl,); - typedef Eigen::TensorMap> MesonField; public: // constructor TA2AMesonField(const std::string name); @@ -144,24 +140,24 @@ void TA2AMesonField::setup(void) mom_.clear(); if (par().gammas == "all") { - gamma_ = { - Gamma::Algebra::Gamma5, - Gamma::Algebra::Identity, - Gamma::Algebra::GammaX, - Gamma::Algebra::GammaY, - Gamma::Algebra::GammaZ, - Gamma::Algebra::GammaT, - Gamma::Algebra::GammaXGamma5, - Gamma::Algebra::GammaYGamma5, - Gamma::Algebra::GammaZGamma5, - Gamma::Algebra::GammaTGamma5, - Gamma::Algebra::SigmaXY, - Gamma::Algebra::SigmaXZ, - Gamma::Algebra::SigmaXT, - Gamma::Algebra::SigmaYZ, - Gamma::Algebra::SigmaYT, - Gamma::Algebra::SigmaZT - }; + gamma_ = { + Gamma::Algebra::Gamma5, + Gamma::Algebra::Identity, + Gamma::Algebra::GammaX, + Gamma::Algebra::GammaY, + Gamma::Algebra::GammaZ, + Gamma::Algebra::GammaT, + Gamma::Algebra::GammaXGamma5, + Gamma::Algebra::GammaYGamma5, + Gamma::Algebra::GammaZGamma5, + Gamma::Algebra::GammaTGamma5, + Gamma::Algebra::SigmaXY, + Gamma::Algebra::SigmaXZ, + Gamma::Algebra::SigmaXT, + Gamma::Algebra::SigmaYZ, + Gamma::Algebra::SigmaYT, + Gamma::Algebra::SigmaZT + }; } else { @@ -227,7 +223,7 @@ void TA2AMesonField::execute(void) if (!hasPhase_) { - MODULE_TIMER("Momentum phases"); + startTimer("Momentum phases"); for (unsigned int j = 0; j < nmom; ++j) { Complex i(0.0,1.0); @@ -243,9 +239,9 @@ void TA2AMesonField::execute(void) ph[j] = exp((Real)(2*M_PI)*i*ph[j]); } hasPhase_ = true; + stopTimer("Momentum phases"); } - ////////////////////////////////////////////////////////////////////////// // i,j is first loop over SchurBlock factors reusing 5D matrices // ii,jj is second loop over cacheBlock factors for high perf contractoin @@ -256,12 +252,8 @@ void TA2AMesonField::execute(void) double flops = 0.0; double bytes = 0.0; double vol = env().getVolume(); - double t_schur=0; double t_contr=0; - double t_int_0=0; - double t_int_1=0; - double t_int_2=0; - double t_int_3=0; + envGetTmp(Vector, mfBuf); envGetTmp(Vector, mfCache); @@ -277,9 +269,6 @@ void TA2AMesonField::execute(void) int N_ii = MIN(N_i-i,block); int N_jj = MIN(N_j-j,block); - t_schur-=usecond(); - t_schur+=usecond(); - LOG(Message) << "Meson field block " << j/block + NBlock_j*i/block + 1 << "/" << NBlock_i*NBlock_j << " [" << i <<" .. " @@ -296,17 +285,17 @@ void TA2AMesonField::execute(void) int N_jjj = MIN(N_jj-jj,cacheBlock); MesonField mfCacheBlock(mfCache.data(),nmom,ngamma,nt,N_iii,N_jjj); - t_contr-=usecond(); - makeBlock(mfCacheBlock, &w[i+ii], &v[j+jj], gamma_, ph, - env().getNd() - 1, t_int_0, t_int_1, t_int_2, t_int_3); - t_contr+=usecond(); + startTimer("contraction: total"); + makeMesonFieldBlock(mfCacheBlock, &w[i+ii], &v[j+jj], gamma_, ph, + env().getNd() - 1, this); + stopTimer("contraction: total"); // flops for general N_c & N_s flops += vol * ( 2 * 8.0 + 6.0 + 8.0*nmom) * N_iii*N_jjj*ngamma; bytes += vol * (12.0 * sizeof(Complex) ) * N_iii*N_jjj + vol * ( 2.0 * sizeof(Complex) *nmom ) * N_iii*N_jjj* ngamma; - MODULE_TIMER("Cache copy"); + startTimer("cache copy"); for(int iii=0;iii< N_iii;iii++) for(int jjj=0;jjj< N_jjj;jjj++) for(int m =0;m< nmom;m++) @@ -315,223 +304,44 @@ void TA2AMesonField::execute(void) { mfBlock(m,g,t,ii+iii,jj+jjj) = mfCacheBlock(m,g,t,iii,jjj); } + stopTimer("cache copy"); } // IO + if (!par().output.empty()) + { double blockSize, ioTime; - MODULE_TIMER("IO"); + LOG(Message) << "Writing block to disk" << std::endl; + ioTime = -getDTimer("IO: write block"); + startTimer("IO: total"); for(int m = 0; m < nmom; m++) for(int g = 0; g < ngamma; g++) { if ((i == 0) and (j == 0)) { + startTimer("IO: file creation"); initFile(m, g); + stopTimer("IO: file creation"); } + startTimer("IO: write block"); saveBlock(mfBlock, m, g, i, j); + stopTimer("IO: write block"); } - blockSize = static_cast(nmom*ngamma*nt*N_ii*N_jj*sizeof(Complex)); - ioTime = static_cast(this->getTimer("IO").count()); - LOG(Message) << "HDF5 IO " << blockSize/ioTime*1.0e6/1024/1024 + stopTimer("IO: total"); + blockSize = static_cast(nmom*ngamma*nt*N_ii*N_jj*sizeof(Complex)); + ioTime += getDTimer("IO: write block"); + LOG(Message) << "HDF5 IO done " << blockSize/ioTime*1.0e6/1024/1024 << " MB/s" << std::endl; } + } double nodes = env().getGrid()->NodeCount(); - double t_kernel = t_int_0 + t_int_1; + double t_kernel = getDTimer("contraction: colour trace & mom.") + + getDTimer("contraction: local space sum"); - LOG(Message) << "Perf " << flops/(t_kernel)/1.0e3/nodes << " Gflop/s/node " << std::endl; - LOG(Message) << "Perf " << bytes/(t_kernel)/1.0e3/nodes << " GB/s/node " << std::endl; -} - -////////////////////////////////////////////////////////////////////////////////// -// Cache blocked arithmetic routine -// Could move to Grid ??? -////////////////////////////////////////////////////////////////////////////////// -template -void TA2AMesonField::makeBlock(MesonField &mat, - const FermionField *lhs_wi, - const FermionField *rhs_vj, - std::vector gamma, - const std::vector &mom, - int orthogdim, - double &t0, - double &t1, - double &t2, - double &t3) -{ - typedef typename FImpl::SiteSpinor vobj; - - typedef typename vobj::scalar_object sobj; - typedef typename vobj::scalar_type scalar_type; - typedef typename vobj::vector_type vector_type; - - typedef iSpinMatrix SpinMatrix_v; - typedef iSpinMatrix SpinMatrix_s; - - int Lblock = mat.dimension(3); - int Rblock = mat.dimension(4); - - GridBase *grid = lhs_wi[0]._grid; - - const int Nd = grid->_ndimension; - const int Nsimd = grid->Nsimd(); - - int Nt = grid->GlobalDimensions()[orthogdim]; - int Ngamma = gamma.size(); - int Nmom = mom.size(); - - int fd=grid->_fdimensions[orthogdim]; - int ld=grid->_ldimensions[orthogdim]; - int rd=grid->_rdimensions[orthogdim]; - - // will locally sum vectors first - // sum across these down to scalars - // splitting the SIMD - int MFrvol = rd*Lblock*Rblock*Nmom; - int MFlvol = ld*Lblock*Rblock*Nmom; - - Vector lvSum(MFrvol); - parallel_for (int r = 0; r < MFrvol; r++) - { - lvSum[r] = zero; - } - - Vector lsSum(MFlvol); - parallel_for (int r = 0; r < MFlvol; r++) - { - lsSum[r]=scalar_type(0.0); - } - - int e1= grid->_slice_nblock[orthogdim]; - int e2= grid->_slice_block [orthogdim]; - int stride=grid->_slice_stride[orthogdim]; - - t0-=usecond(); - MODULE_TIMER("Colour trace * mom."); - // Nested parallelism would be ok - // Wasting cores here. Test case r - parallel_for(int r=0;r_ostride[orthogdim]; // base offset for start of plane - - for(int n=0;n icoor(Nd); - std::vector extracted(Nsimd); - - for(int i=0;iiCoorFromIindex(icoor,idx); - - int ldx = rt+icoor[orthogdim]*rd; - int ij_ldx = m+Nmom*i+Nmom*Lblock*j+Nmom*Lblock*Rblock*ldx; - - lsSum[ij_ldx]=lsSum[ij_ldx]+extracted[idx]; - } - } - } - t1+=usecond(); - assert(mat.dimension(0) == Nmom); - assert(mat.dimension(1) == Ngamma); - assert(mat.dimension(2) == Nt); - t2-=usecond(); - - // ld loop and local only?? - MODULE_TIMER("Spin trace"); - int pd = grid->_processors[orthogdim]; - int pc = grid->_processor_coor[orthogdim]; - parallel_for_nest2(int lt=0;ltGlobalSumVector(&mat(0,0,0,0,0),Nmom*Ngamma*Nt*Lblock*Rblock); - t3+=usecond(); + LOG(Message) << "Perf " << flops/t_kernel/1.0e3/nodes << " Gflop/s/node " << std::endl; + LOG(Message) << "Perf " << bytes/t_kernel/1.0e3/nodes << " GB/s/node " << std::endl; } // IO diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp new file mode 100644 index 00000000..4d06f796 --- /dev/null +++ b/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp @@ -0,0 +1,226 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli +Author: Peter Boyle + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ +#ifndef Hadrons_MContraction_A2AMesonFieldKernels_hpp_ +#define Hadrons_MContraction_A2AMesonFieldKernels_hpp_ + +#include +#include +#include + +BEGIN_HADRONS_NAMESPACE + +BEGIN_MODULE_NAMESPACE(MContraction) + +typedef Eigen::TensorMap> MesonField; + +//////////////////////////////////////////////////////////////////////////////// +// Cache blocked arithmetic routine +// Could move to Grid ??? +//////////////////////////////////////////////////////////////////////////////// +template +void makeMesonFieldBlock(MesonField &mat, + const Field *lhs_wi, + const Field *rhs_vj, + std::vector gamma, + const std::vector &mom, + int orthogdim, + ModuleBase *caller = nullptr) +{ + typedef typename Field::vector_object vobj; + typedef typename vobj::scalar_object sobj; + typedef typename vobj::scalar_type scalar_type; + typedef typename vobj::vector_type vector_type; + + typedef iSpinMatrix SpinMatrix_v; + typedef iSpinMatrix SpinMatrix_s; + + int Lblock = mat.dimension(3); + int Rblock = mat.dimension(4); + + GridBase *grid = lhs_wi[0]._grid; + + const int Nd = grid->_ndimension; + const int Nsimd = grid->Nsimd(); + + int Nt = grid->GlobalDimensions()[orthogdim]; + int Ngamma = gamma.size(); + int Nmom = mom.size(); + + int fd=grid->_fdimensions[orthogdim]; + int ld=grid->_ldimensions[orthogdim]; + int rd=grid->_rdimensions[orthogdim]; + + // will locally sum vectors first + // sum across these down to scalars + // splitting the SIMD + int MFrvol = rd*Lblock*Rblock*Nmom; + int MFlvol = ld*Lblock*Rblock*Nmom; + + Vector lvSum(MFrvol); + parallel_for (int r = 0; r < MFrvol; r++) + { + lvSum[r] = zero; + } + + Vector lsSum(MFlvol); + parallel_for (int r = 0; r < MFlvol; r++) + { + lsSum[r]=scalar_type(0.0); + } + + int e1= grid->_slice_nblock[orthogdim]; + int e2= grid->_slice_block [orthogdim]; + int stride=grid->_slice_stride[orthogdim]; + + if (caller) caller->startTimer("contraction: colour trace & mom."); + // Nested parallelism would be ok + // Wasting cores here. Test case r + parallel_for(int r=0;r_ostride[orthogdim]; // base offset for start of plane + + for(int n=0;nstopTimer("contraction: colour trace & mom."); + + // Sum across simd lanes in the plane, breaking out orthog dir. + if (caller) caller->startTimer("contraction: local space sum"); + parallel_for(int rt=0;rt icoor(Nd); + std::vector extracted(Nsimd); + + for(int i=0;iiCoorFromIindex(icoor,idx); + + int ldx = rt+icoor[orthogdim]*rd; + int ij_ldx = m+Nmom*i+Nmom*Lblock*j+Nmom*Lblock*Rblock*ldx; + + lsSum[ij_ldx]=lsSum[ij_ldx]+extracted[idx]; + } + } + } + if (caller) caller->stopTimer("contraction: local space sum"); + + // ld loop and local only?? + if (caller) caller->startTimer("contraction: spin trace"); + int pd = grid->_processors[orthogdim]; + int pc = grid->_processor_coor[orthogdim]; + parallel_for_nest2(int lt=0;ltstopTimer("contraction: spin trace"); + //////////////////////////////////////////////////////////////////// + // This global sum is taking as much as 50% of time on 16 nodes + // Vector size is 7 x 16 x 32 x 16 x 16 x sizeof(complex) = 2MB - 60MB depending on volume + // Healthy size that should suffice + //////////////////////////////////////////////////////////////////// + if (caller) caller->startTimer("contraction: global sum"); + grid->GlobalSumVector(&mat(0,0,0,0,0),Nmom*Ngamma*Nt*Lblock*Rblock); + if (caller) caller->stopTimer("contraction: global sum"); +} + +END_MODULE_NAMESPACE + +END_HADRONS_NAMESPACE + +#endif //Hadrons_MContraction_A2AMesonField_hpp_ diff --git a/extras/Hadrons/Modules/MFermion/FreeProp.cc b/extras/Hadrons/Modules/MFermion/FreeProp.cc index 7b3a0ce5..0ff07887 100644 --- a/extras/Hadrons/Modules/MFermion/FreeProp.cc +++ b/extras/Hadrons/Modules/MFermion/FreeProp.cc @@ -6,6 +6,7 @@ Source file: extras/Hadrons/Modules/MFermion/FreeProp.cc Copyright (C) 2015-2018 +Author: Antonin Portelli Author: Vera Guelpers This program is free software; you can redistribute it and/or modify diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.cc b/extras/Hadrons/Modules/MGauge/UnitEm.cc index 6b3be47e..5c076592 100644 --- a/extras/Hadrons/Modules/MGauge/UnitEm.cc +++ b/extras/Hadrons/Modules/MGauge/UnitEm.cc @@ -6,6 +6,7 @@ Source file: extras/Hadrons/Modules/MGauge/UnitEm.cc Copyright (C) 2015-2018 +Author: Antonin Portelli Author: James Harrison This program is free software; you can redistribute it and/or modify diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.hpp b/extras/Hadrons/Modules/MGauge/UnitEm.hpp index a9cb9dfa..c6c89bb0 100644 --- a/extras/Hadrons/Modules/MGauge/UnitEm.hpp +++ b/extras/Hadrons/Modules/MGauge/UnitEm.hpp @@ -6,6 +6,7 @@ Source file: extras/Hadrons/Modules/MGauge/UnitEm.hpp Copyright (C) 2015-2018 +Author: Antonin Portelli Author: James Harrison This program is free software; you can redistribute it and/or modify diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/extras/Hadrons/Modules/MScalar/ScalarVP.cc index d560ec5a..b43b0c9f 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.cc @@ -6,6 +6,7 @@ Source file: extras/Hadrons/Modules/MScalar/ScalarVP.cc Copyright (C) 2015-2018 +Author: Antonin Portelli Author: James Harrison This program is free software; you can redistribute it and/or modify diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp index e1b2dc3d..191348d3 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/extras/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -6,6 +6,7 @@ Source file: extras/Hadrons/Modules/MScalar/ScalarVP.hpp Copyright (C) 2015-2018 +Author: Antonin Portelli Author: James Harrison This program is free software; you can redistribute it and/or modify diff --git a/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc b/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc index 86867788..4c3fab85 100644 --- a/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc +++ b/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc @@ -6,6 +6,7 @@ Source file: extras/Hadrons/Modules/MScalar/VPCounterTerms.cc Copyright (C) 2015-2018 +Author: Antonin Portelli Author: James Harrison This program is free software; you can redistribute it and/or modify diff --git a/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp b/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp index a2ccbb56..92d37686 100644 --- a/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp +++ b/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp @@ -6,6 +6,7 @@ Source file: extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp Copyright (C) 2015-2018 +Author: Antonin Portelli Author: James Harrison This program is free software; you can redistribute it and/or modify diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp index 6d150499..7022b90b 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp +++ b/extras/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -178,7 +178,7 @@ void TA2AVectors::execute(void) { auto &epack = envGet(Pack, par().eigenPack); - MODULE_TIMER("V low mode"); + startTimer("V low mode"); LOG(Message) << "V vector i = " << il << " (low mode)" << std::endl; if (Ls == 1) { @@ -189,7 +189,8 @@ void TA2AVectors::execute(void) envGetTmp(FermionField, f5); a2a.makeLowModeV5D(v[il], f5, epack.evec[il], epack.eval[il]); } - MODULE_TIMER("W low mode"); + stopTimer("V low mode"); + startTimer("W low mode"); LOG(Message) << "W vector i = " << il << " (low mode)" << std::endl; if (Ls == 1) { @@ -199,13 +200,14 @@ void TA2AVectors::execute(void) { envGetTmp(FermionField, f5); a2a.makeLowModeW5D(w[il], f5, epack.evec[il], epack.eval[il]); - } + } + stopTimer("W low mode"); } // High modes for (unsigned int ih = 0; ih < noise.size(); ih++) { - MODULE_TIMER("V high mode"); + startTimer("V high mode"); LOG(Message) << "V vector i = " << Nl_ + ih << " (" << ((Nl_ > 0) ? "high " : "") << "stochastic mode)" << std::endl; @@ -218,7 +220,8 @@ void TA2AVectors::execute(void) envGetTmp(FermionField, f5); a2a.makeHighModeV5D(v[Nl_ + ih], f5, noise[ih]); } - MODULE_TIMER("W high mode"); + stopTimer("V high mode"); + startTimer("W high mode"); LOG(Message) << "W vector i = " << Nl_ + ih << " (" << ((Nl_ > 0) ? "high " : "") << "stochastic mode)" << std::endl; @@ -231,6 +234,7 @@ void TA2AVectors::execute(void) envGetTmp(FermionField, f5); a2a.makeHighModeW5D(w[Nl_ + ih], f5, noise[ih]); } + stopTimer("W high mode"); } } diff --git a/extras/Hadrons/Modules/MUtilities/RandomVectors.cc b/extras/Hadrons/Modules/MUtilities/RandomVectors.cc index cc122c90..7da32322 100644 --- a/extras/Hadrons/Modules/MUtilities/RandomVectors.cc +++ b/extras/Hadrons/Modules/MUtilities/RandomVectors.cc @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MUtilities/RandomVectors.cc + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #include using namespace Grid; diff --git a/extras/Hadrons/Modules/MUtilities/RandomVectors.hpp b/extras/Hadrons/Modules/MUtilities/RandomVectors.hpp index 590ef224..4da84506 100644 --- a/extras/Hadrons/Modules/MUtilities/RandomVectors.hpp +++ b/extras/Hadrons/Modules/MUtilities/RandomVectors.hpp @@ -1,3 +1,30 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules/MUtilities/RandomVectors.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ #ifndef Hadrons_MUtilities_RandomVectors_hpp_ #define Hadrons_MUtilities_RandomVectors_hpp_ diff --git a/extras/Hadrons/modules.inc b/extras/Hadrons/modules.inc index 6bc07618..eef12b0d 100644 --- a/extras/Hadrons/modules.inc +++ b/extras/Hadrons/modules.inc @@ -61,6 +61,7 @@ modules_cc =\ modules_hpp =\ Modules/MContraction/Baryon.hpp \ Modules/MContraction/A2AMesonField.hpp \ + Modules/MContraction/A2AMesonFieldKernels.hpp \ Modules/MContraction/Meson.hpp \ Modules/MContraction/WeakHamiltonian.hpp \ Modules/MContraction/WeakHamiltonianNonEye.hpp \ From f4878d3a13ff762a9f4aa5017a880ede1dd4346c Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 14 Aug 2018 14:02:37 +0100 Subject: [PATCH 251/267] Hadrons: meson field threaded cache copy --- .../Modules/MContraction/A2AMesonField.hpp | 25 ++++++++++--------- .../MContraction/A2AMesonFieldKernels.hpp | 2 +- lib/cshift/Cshift_common.h | 6 ++--- lib/lattice/Lattice_reduction.h | 2 +- lib/threads/Threads.h | 4 ++- 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index 568985bc..4465e567 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -296,7 +296,8 @@ void TA2AMesonField::execute(void) + vol * ( 2.0 * sizeof(Complex) *nmom ) * N_iii*N_jjj* ngamma; startTimer("cache copy"); - for(int iii=0;iii< N_iii;iii++) + + parallel_for_nest(5)(int iii=0;iii< N_iii;iii++) for(int jjj=0;jjj< N_jjj;jjj++) for(int m =0;m< nmom;m++) for(int g =0;g< ngamma;g++) @@ -310,30 +311,30 @@ void TA2AMesonField::execute(void) // IO if (!par().output.empty()) { - double blockSize, ioTime; + double blockSize, ioTime; LOG(Message) << "Writing block to disk" << std::endl; ioTime = -getDTimer("IO: write block"); startTimer("IO: total"); - for(int m = 0; m < nmom; m++) - for(int g = 0; g < ngamma; g++) - { - if ((i == 0) and (j == 0)) + for(int m = 0; m < nmom; m++) + for(int g = 0; g < ngamma; g++) { + if ((i == 0) and (j == 0)) + { startTimer("IO: file creation"); - initFile(m, g); + initFile(m, g); stopTimer("IO: file creation"); - } + } startTimer("IO: write block"); - saveBlock(mfBlock, m, g, i, j); + saveBlock(mfBlock, m, g, i, j); stopTimer("IO: write block"); - } + } stopTimer("IO: total"); blockSize = static_cast(nmom*ngamma*nt*N_ii*N_jj*sizeof(Complex)); ioTime += getDTimer("IO: write block"); LOG(Message) << "HDF5 IO done " << blockSize/ioTime*1.0e6/1024/1024 - << " MB/s" << std::endl; - } + << " MB/s" << std::endl; + } } double nodes = env().getGrid()->NodeCount(); diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp index 4d06f796..d1956f61 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp @@ -174,7 +174,7 @@ void makeMesonFieldBlock(MesonField &mat, if (caller) caller->startTimer("contraction: spin trace"); int pd = grid->_processors[orthogdim]; int pc = grid->_processor_coor[orthogdim]; - parallel_for_nest2(int lt=0;lt &rhs,std::vector_slice_stride[dimension]; if ( cbmask ==0x3){ - parallel_for_nest2(int n=0;n &rhs,std::vector void Scatter_plane_merge(Lattice &rhs,std::vector_slice_block[dimension]; if(cbmask ==0x3 ) { - parallel_for_nest2(int n=0;n_slice_stride[dimension]; int offset = b+n*rhs._grid->_slice_block[dimension]; diff --git a/lib/lattice/Lattice_reduction.h b/lib/lattice/Lattice_reduction.h index 41351c98..343b580c 100644 --- a/lib/lattice/Lattice_reduction.h +++ b/lib/lattice/Lattice_reduction.h @@ -522,7 +522,7 @@ static void sliceMaddVector(Lattice &R,std::vector &a,const Lattice tensor_reduced at; at=av; - parallel_for_nest2(int n=0;n #define PARALLEL_FOR_LOOP _Pragma("omp parallel for schedule(static)") #define PARALLEL_FOR_LOOP_INTERN _Pragma("omp for schedule(static)") #define PARALLEL_NESTED_LOOP2 _Pragma("omp parallel for collapse(2)") +#define PARALLEL_NESTED_LOOP(n) _Pragma("omp parallel for collapse(n)") #define PARALLEL_REGION _Pragma("omp parallel") #define PARALLEL_CRITICAL _Pragma("omp critical") #else #define PARALLEL_FOR_LOOP #define PARALLEL_FOR_LOOP_INTERN #define PARALLEL_NESTED_LOOP2 +#define PARALLEL_NESTED_LOOP(n) #define PARALLEL_REGION #define PARALLEL_CRITICAL #endif @@ -54,7 +56,7 @@ Author: paboyle #define parallel_region PARALLEL_REGION #define parallel_for PARALLEL_FOR_LOOP for #define parallel_for_internal PARALLEL_FOR_LOOP_INTERN for -#define parallel_for_nest2 PARALLEL_NESTED_LOOP2 for +#define parallel_for_nest(n) PARALLEL_NESTED_LOOP(n) for namespace Grid { From 6e5a2b7922b480a275e05e426c087a2500765780 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 14 Aug 2018 14:07:54 +0100 Subject: [PATCH 252/267] fix previous commit --- extras/Hadrons/Modules/MContraction/A2AMesonField.hpp | 2 +- .../Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp | 2 +- lib/cshift/Cshift_common.h | 6 +++--- lib/lattice/Lattice_reduction.h | 2 +- lib/threads/Threads.h | 7 ++++--- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index 4465e567..2efe902d 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -297,7 +297,7 @@ void TA2AMesonField::execute(void) startTimer("cache copy"); - parallel_for_nest(5)(int iii=0;iii< N_iii;iii++) + parallel_for_nest5(int iii=0;iii< N_iii;iii++) for(int jjj=0;jjj< N_jjj;jjj++) for(int m =0;m< nmom;m++) for(int g =0;g< ngamma;g++) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp index d1956f61..4d06f796 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp @@ -174,7 +174,7 @@ void makeMesonFieldBlock(MesonField &mat, if (caller) caller->startTimer("contraction: spin trace"); int pd = grid->_processors[orthogdim]; int pc = grid->_processor_coor[orthogdim]; - parallel_for_nest(2)(int lt=0;lt &rhs,std::vector_slice_stride[dimension]; if ( cbmask ==0x3){ - parallel_for_nest(2)(int n=0;n &rhs,std::vector void Scatter_plane_merge(Lattice &rhs,std::vector_slice_block[dimension]; if(cbmask ==0x3 ) { - parallel_for_nest(2)(int n=0;n_slice_stride[dimension]; int offset = b+n*rhs._grid->_slice_block[dimension]; diff --git a/lib/lattice/Lattice_reduction.h b/lib/lattice/Lattice_reduction.h index 343b580c..41351c98 100644 --- a/lib/lattice/Lattice_reduction.h +++ b/lib/lattice/Lattice_reduction.h @@ -522,7 +522,7 @@ static void sliceMaddVector(Lattice &R,std::vector &a,const Lattice tensor_reduced at; at=av; - parallel_for_nest(2)(int n=0;n #define PARALLEL_FOR_LOOP _Pragma("omp parallel for schedule(static)") #define PARALLEL_FOR_LOOP_INTERN _Pragma("omp for schedule(static)") #define PARALLEL_NESTED_LOOP2 _Pragma("omp parallel for collapse(2)") -#define PARALLEL_NESTED_LOOP(n) _Pragma("omp parallel for collapse(n)") +#define PARALLEL_NESTED_LOOP5 _Pragma("omp parallel for collapse(5)") #define PARALLEL_REGION _Pragma("omp parallel") #define PARALLEL_CRITICAL _Pragma("omp critical") #else #define PARALLEL_FOR_LOOP #define PARALLEL_FOR_LOOP_INTERN #define PARALLEL_NESTED_LOOP2 -#define PARALLEL_NESTED_LOOP(n) +#define PARALLEL_NESTED_LOOP5 #define PARALLEL_REGION #define PARALLEL_CRITICAL #endif @@ -56,7 +56,8 @@ Author: paboyle #define parallel_region PARALLEL_REGION #define parallel_for PARALLEL_FOR_LOOP for #define parallel_for_internal PARALLEL_FOR_LOOP_INTERN for -#define parallel_for_nest(n) PARALLEL_NESTED_LOOP(n) for +#define parallel_for_nest2 PARALLEL_NESTED_LOOP2 for +#define parallel_for_nest5 PARALLEL_NESTED_LOOP5 for namespace Grid { From cc2780bea32e57be733fe11f54cf1ea4244dd0b6 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 14 Aug 2018 14:55:13 +0100 Subject: [PATCH 253/267] Hadrons: meson field parallel IO --- .../Modules/MContraction/A2AMesonField.hpp | 128 +++++++++++------- 1 file changed, 80 insertions(+), 48 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index 2efe902d..8cb859b8 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -37,6 +37,8 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include +#define MF_PARALLEL_IO + BEGIN_HADRONS_NAMESPACE /****************************************************************************** @@ -99,6 +101,7 @@ private: std::string momphName_; std::vector gamma_; std::vector> mom_; + std::vector> nodeFile_; }; MODULE_REGISTER(A2AMesonField, ARG(TA2AMesonField), MContraction); @@ -311,14 +314,30 @@ void TA2AMesonField::execute(void) // IO if (!par().output.empty()) { - double blockSize, ioTime; + double blockSize, ioTime; + unsigned int myRank = env().getGrid()->ThisRank(), + nRank = env().getGrid()->RankCount(); LOG(Message) << "Writing block to disk" << std::endl; ioTime = -getDTimer("IO: write block"); startTimer("IO: total"); - for(int m = 0; m < nmom; m++) - for(int g = 0; g < ngamma; g++) + makeFileDir(filename(0, 0), env().getGrid()); +#ifdef MF_PARALLEL_IO + env().getGrid()->Barrier(); + nodeFile_.clear(); + for(int f = myRank; f < nmom*ngamma; f += nRank) { + std::pair file; + + file.first = f/ngamma; + file.second = f % ngamma; + nodeFile_.push_back(file); + } + // parallel IO + for (auto &f: nodeFile_) + { + auto m = f.first, g = f.second; + if ((i == 0) and (j == 0)) { startTimer("IO: file creation"); @@ -329,6 +348,29 @@ void TA2AMesonField::execute(void) saveBlock(mfBlock, m, g, i, j); stopTimer("IO: write block"); } + env().getGrid()->Barrier(); +#else + // serial IO + for(int m = 0; m < nmom; m++) + for(int g = 0; g < ngamma; g++) + { + if ((i == 0) and (j == 0)) + { + startTimer("IO: file creation"); + if (env().getGrid()->IsBoss()) + { + initFile(m, g); + } + stopTimer("IO: file creation"); + } + startTimer("IO: write block"); + if (env().getGrid()->IsBoss()) + { + saveBlock(mfBlock, m, g, i, j); + } + stopTimer("IO: write block"); + } +#endif stopTimer("IO: total"); blockSize = static_cast(nmom*ngamma*nt*N_ii*N_jj*sizeof(Complex)); ioTime += getDTimer("IO: write block"); @@ -372,30 +414,25 @@ void TA2AMesonField::initFile(unsigned int m, unsigned int g) { #ifdef HAVE_HDF5 std::string f = filename(m, g); - GridBase *grid = env().getGrid(); auto &v = envGet(std::vector, par().v); auto &w = envGet(std::vector, par().w); int nt = env().getDim().back(); int N_i = w.size(); int N_j = v.size(); - makeFileDir(f, grid); - if (grid->IsBoss()) - { - Hdf5Writer writer(f); - std::vector dim = {static_cast(nt), - static_cast(N_i), - static_cast(N_j)}; - H5NS::DataSpace dataspace(dim.size(), dim.data()); - H5NS::DataSet dataset; - - push(writer, ioname(m, g)); - write(writer, "momentum", mom_[m]); - write(writer, "gamma", gamma_[g]); - auto &group = writer.getGroup(); - dataset = group.createDataSet("mesonField", Hdf5Type::type(), - dataspace); - } + Hdf5Writer writer(f); + std::vector dim = {static_cast(nt), + static_cast(N_i), + static_cast(N_j)}; + H5NS::DataSpace dataspace(dim.size(), dim.data()); + H5NS::DataSet dataset; + + push(writer, ioname(m, g)); + write(writer, "momentum", mom_[m]); + write(writer, "gamma", gamma_[g]); + auto &group = writer.getGroup(); + dataset = group.createDataSet("mesonField", Hdf5Type::type(), + dataspace); #else HADRONS_ERROR(Implementation, "meson field I/O needs HDF5 library"); #endif @@ -407,34 +444,29 @@ void TA2AMesonField::saveBlock(const MesonField &mf, unsigned int i, unsigned int j) { #ifdef HAVE_HDF5 - std::string f = filename(m, g); - GridBase *grid = env().getGrid(); + std::string f = filename(m, g); + Hdf5Reader reader(f); + hsize_t nt = mf.dimension(2), + Ni = mf.dimension(3), + Nj = mf.dimension(4); + std::vector count = {nt, Ni, Nj}, + offset = {0, static_cast(i), + static_cast(j)}, + stride = {1, 1, 1}, + block = {1, 1, 1}; + H5NS::DataSpace memspace(count.size(), count.data()), dataspace; + H5NS::DataSet dataset; + size_t shift; - if (grid->IsBoss()) - { - Hdf5Reader reader(f); - hsize_t nt = mf.dimension(2), - Ni = mf.dimension(3), - Nj = mf.dimension(4); - std::vector count = {nt, Ni, Nj}, - offset = {0, static_cast(i), - static_cast(j)}, - stride = {1, 1, 1}, - block = {1, 1, 1}; - H5NS::DataSpace memspace(count.size(), count.data()), dataspace; - H5NS::DataSet dataset; - size_t shift; - - push(reader, ioname(m, g)); - auto &group = reader.getGroup(); - dataset = group.openDataSet("mesonField"); - dataspace = dataset.getSpace(); - dataspace.selectHyperslab(H5S_SELECT_SET, count.data(), offset.data(), - stride.data(), block.data()); - shift = (m*mf.dimension(1) + g)*nt*Ni*Nj; - dataset.write(mf.data() + shift, Hdf5Type::type(), memspace, - dataspace); - } + push(reader, ioname(m, g)); + auto &group = reader.getGroup(); + dataset = group.openDataSet("mesonField"); + dataspace = dataset.getSpace(); + dataspace.selectHyperslab(H5S_SELECT_SET, count.data(), offset.data(), + stride.data(), block.data()); + shift = (m*mf.dimension(1) + g)*nt*Ni*Nj; + dataset.write(mf.data() + shift, Hdf5Type::type(), memspace, + dataspace); #else HADRONS_ERROR(Implementation, "meson field I/O needs HDF5 library"); #endif From dc6d8686ded60995a2005bc804187454f4a6dded Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 14 Aug 2018 16:40:29 +0100 Subject: [PATCH 254/267] Hadrons: meson field chunked HDF5 IO --- .../Modules/MContraction/A2AMesonField.hpp | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index 8cb859b8..b85fc6a3 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -374,8 +374,10 @@ void TA2AMesonField::execute(void) stopTimer("IO: total"); blockSize = static_cast(nmom*ngamma*nt*N_ii*N_jj*sizeof(Complex)); ioTime += getDTimer("IO: write block"); - LOG(Message) << "HDF5 IO done " << blockSize/ioTime*1.0e6/1024/1024 - << " MB/s" << std::endl; + LOG(Message) << "HDF5 IO done " << sizeString(blockSize) << " in " + << getTimer("IO: write block") << " us (" + << blockSize/ioTime*1.0e6/1024/1024 + << " MB/s)" << std::endl; } } @@ -420,19 +422,24 @@ void TA2AMesonField::initFile(unsigned int m, unsigned int g) int N_i = w.size(); int N_j = v.size(); - Hdf5Writer writer(f); - std::vector dim = {static_cast(nt), - static_cast(N_i), - static_cast(N_j)}; - H5NS::DataSpace dataspace(dim.size(), dim.data()); - H5NS::DataSet dataset; + Hdf5Writer writer(f); + std::vector dim = {static_cast(nt), + static_cast(N_i), + static_cast(N_j)}, + chunk = {static_cast(nt), + static_cast(par().block), + static_cast(par().block)}; + H5NS::DataSpace dataspace(dim.size(), dim.data()); + H5NS::DataSet dataset; + H5NS::DSetCreatPropList plist; push(writer, ioname(m, g)); write(writer, "momentum", mom_[m]); write(writer, "gamma", gamma_[g]); auto &group = writer.getGroup(); + plist.setChunk(chunk.size(), chunk.data()); dataset = group.createDataSet("mesonField", Hdf5Type::type(), - dataspace); + dataspace, plist); #else HADRONS_ERROR(Implementation, "meson field I/O needs HDF5 library"); #endif From 2c67304716ae8f59331fad027355b5cc060c07a1 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 14 Aug 2018 17:00:05 +0100 Subject: [PATCH 255/267] Hadrons: meson field code cleaning --- .../Hadrons/Modules/MContraction/A2AMesonField.hpp | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index b85fc6a3..6123491a 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -78,17 +78,6 @@ public: // execution virtual void execute(void); private: - // Arithmetic kernel. Move to Grid?? - void makeBlock(MesonField &mat, - const FermionField *lhs, - const FermionField *rhs, - std::vector gamma, - const std::vector &mom, - int orthogdim, - double &t0, - double &t1, - double &t2, - double &t3); // IO std::string ioname(unsigned int m, unsigned int g) const; std::string filename(unsigned int m, unsigned int g) const; @@ -375,7 +364,7 @@ void TA2AMesonField::execute(void) blockSize = static_cast(nmom*ngamma*nt*N_ii*N_jj*sizeof(Complex)); ioTime += getDTimer("IO: write block"); LOG(Message) << "HDF5 IO done " << sizeString(blockSize) << " in " - << getTimer("IO: write block") << " us (" + << ioTime << " us (" << blockSize/ioTime*1.0e6/1024/1024 << " MB/s)" << std::endl; } From 09001aedca2e15547e38521e00bc9bc626479489 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 14 Aug 2018 17:19:38 +0100 Subject: [PATCH 256/267] Hadrons: meson fields saved in single precision --- .../Modules/MContraction/A2AMesonField.hpp | 53 ++++++++++--------- .../MContraction/A2AMesonFieldKernels.hpp | 4 +- 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index 6123491a..e30f966b 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -38,6 +38,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #define MF_PARALLEL_IO +#ifndef MF_IO_TYPE +#define MF_IO_TYPE ComplexF +#endif BEGIN_HADRONS_NAMESPACE @@ -65,6 +68,8 @@ class TA2AMesonField : public Module public: FERM_TYPE_ALIASES(FImpl,); SOLVER_TYPE_ALIASES(FImpl,); + typedef Eigen::TensorMap> MesonField; + typedef Eigen::TensorMap> MesonFieldIo; public: // constructor TA2AMesonField(const std::string name); @@ -82,14 +87,14 @@ private: std::string ioname(unsigned int m, unsigned int g) const; std::string filename(unsigned int m, unsigned int g) const; void initFile(unsigned int m, unsigned int g); - void saveBlock(const MesonField &mf, + void saveBlock(const MesonFieldIo &mf, unsigned int m, unsigned int g, unsigned int i, unsigned int j); private: - bool hasPhase_{false}; - std::string momphName_; - std::vector gamma_; - std::vector> mom_; + bool hasPhase_{false}; + std::string momphName_; + std::vector gamma_; + std::vector> mom_; std::vector> nodeFile_; }; @@ -174,7 +179,7 @@ void TA2AMesonField::setup(void) // preallocate memory for meson field block auto tgp = env().getDim().back()*gamma_.size()*mom_.size(); - envTmp(Vector, "mfBuf", 1, tgp*par().block*par().block); + envTmp(Vector, "mfBuf", 1, tgp*par().block*par().block); envTmp(Vector, "mfCache", 1, tgp*par().cacheBlock*par().cacheBlock); } @@ -195,18 +200,19 @@ void TA2AMesonField::execute(void) LOG(Message) << "Computing all-to-all meson fields" << std::endl; LOG(Message) << "W: '" << par().w << "' V: '" << par().v << "'" << std::endl; - LOG(Message) << "Meson field size: " << nt << "*" << N_i << "*" << N_j - << " (" << sizeString(nt*N_i*N_j*sizeof(Complex)) << ")" << std::endl; LOG(Message) << "Momenta:" << std::endl; for (auto &p: mom_) { LOG(Message) << " " << p << std::endl; } - LOG(Message) << "Spin structures:" << std::endl; + LOG(Message) << "Spin bilinears:" << std::endl; for (auto &g: gamma_) { LOG(Message) << " " << g << std::endl; } + LOG(Message) << "Meson field size: " << nt << "*" << N_i << "*" << N_j + << " (filesize " << sizeString(nt*N_i*N_j*sizeof(MF_IO_TYPE)) + << "/momentum/bilinear)" << std::endl; /////////////////////////////////////////////// // Momentum setup @@ -246,8 +252,7 @@ void TA2AMesonField::execute(void) double vol = env().getVolume(); double t_contr=0; - - envGetTmp(Vector, mfBuf); + envGetTmp(Vector, mfBuf); envGetTmp(Vector, mfCache); double t0 = usecond(); @@ -267,7 +272,7 @@ void TA2AMesonField::execute(void) << i+N_ii-1 << ", " << j <<" .. " << j+N_jj-1 << "]" << std::endl; - MesonField mfBlock(mfBuf.data(),nmom,ngamma,nt,N_ii,N_jj); + MesonFieldIo mfBlock(mfBuf.data(),nmom,ngamma,nt,N_ii,N_jj); // Series of cache blocked chunks of the contractions within this block for(int ii=0;ii::execute(void) } #endif stopTimer("IO: total"); - blockSize = static_cast(nmom*ngamma*nt*N_ii*N_jj*sizeof(Complex)); + blockSize = static_cast(nmom*ngamma*nt*N_ii*N_jj*sizeof(MF_IO_TYPE)); ioTime += getDTimer("IO: write block"); LOG(Message) << "HDF5 IO done " << sizeString(blockSize) << " in " << ioTime << " us (" @@ -427,7 +432,7 @@ void TA2AMesonField::initFile(unsigned int m, unsigned int g) write(writer, "gamma", gamma_[g]); auto &group = writer.getGroup(); plist.setChunk(chunk.size(), chunk.data()); - dataset = group.createDataSet("mesonField", Hdf5Type::type(), + dataset = group.createDataSet("mesonField", Hdf5Type::type(), dataspace, plist); #else HADRONS_ERROR(Implementation, "meson field I/O needs HDF5 library"); @@ -435,7 +440,7 @@ void TA2AMesonField::initFile(unsigned int m, unsigned int g) } template -void TA2AMesonField::saveBlock(const MesonField &mf, +void TA2AMesonField::saveBlock(const MesonFieldIo &mf, unsigned int m, unsigned int g, unsigned int i, unsigned int j) { @@ -443,13 +448,13 @@ void TA2AMesonField::saveBlock(const MesonField &mf, std::string f = filename(m, g); Hdf5Reader reader(f); hsize_t nt = mf.dimension(2), - Ni = mf.dimension(3), - Nj = mf.dimension(4); + Ni = mf.dimension(3), + Nj = mf.dimension(4); std::vector count = {nt, Ni, Nj}, - offset = {0, static_cast(i), - static_cast(j)}, - stride = {1, 1, 1}, - block = {1, 1, 1}; + offset = {0, static_cast(i), + static_cast(j)}, + stride = {1, 1, 1}, + block = {1, 1, 1}; H5NS::DataSpace memspace(count.size(), count.data()), dataspace; H5NS::DataSet dataset; size_t shift; @@ -459,10 +464,10 @@ void TA2AMesonField::saveBlock(const MesonField &mf, dataset = group.openDataSet("mesonField"); dataspace = dataset.getSpace(); dataspace.selectHyperslab(H5S_SELECT_SET, count.data(), offset.data(), - stride.data(), block.data()); + stride.data(), block.data()); shift = (m*mf.dimension(1) + g)*nt*Ni*Nj; - dataset.write(mf.data() + shift, Hdf5Type::type(), memspace, - dataspace); + dataset.write(mf.data() + shift, Hdf5Type::type(), memspace, + dataspace); #else HADRONS_ERROR(Implementation, "meson field I/O needs HDF5 library"); #endif diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp index 4d06f796..649f9fdf 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp @@ -37,13 +37,11 @@ BEGIN_HADRONS_NAMESPACE BEGIN_MODULE_NAMESPACE(MContraction) -typedef Eigen::TensorMap> MesonField; - //////////////////////////////////////////////////////////////////////////////// // Cache blocked arithmetic routine // Could move to Grid ??? //////////////////////////////////////////////////////////////////////////////// -template +template void makeMesonFieldBlock(MesonField &mat, const Field *lhs_wi, const Field *rhs_vj, From 08c47328ba9de5cdf9661b215e1c6f1b12e34466 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 14 Aug 2018 17:35:42 +0100 Subject: [PATCH 257/267] Hadrons: meson field kernel performance for each block --- .../Modules/MContraction/A2AMesonField.hpp | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index e30f966b..c0463791 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -247,10 +247,12 @@ void TA2AMesonField::execute(void) // Total index is sum of these i+ii+iii etc... ////////////////////////////////////////////////////////////////////////// - double flops = 0.0; - double bytes = 0.0; - double vol = env().getVolume(); - double t_contr=0; + double flops; + double bytes; + double vol = env().getVolume(); + double t_kernel = 0.0; + double nodes = env().getGrid()->NodeCount(); + double tot_kernel; envGetTmp(Vector, mfBuf); envGetTmp(Vector, mfCache); @@ -275,6 +277,8 @@ void TA2AMesonField::execute(void) MesonFieldIo mfBlock(mfBuf.data(),nmom,ngamma,nt,N_ii,N_jj); // Series of cache blocked chunks of the contractions within this block + flops = 0.0; + bytes = 0.0; for(int ii=0;ii::execute(void) // flops for general N_c & N_s flops += vol * ( 2 * 8.0 + 6.0 + 8.0*nmom) * N_iii*N_jjj*ngamma; bytes += vol * (12.0 * sizeof(Complex) ) * N_iii*N_jjj - + vol * ( 2.0 * sizeof(Complex) *nmom ) * N_iii*N_jjj* ngamma; + + vol * ( 2.0 * sizeof(Complex) *nmom ) * N_iii*N_jjj* ngamma; startTimer("cache copy"); @@ -305,6 +309,16 @@ void TA2AMesonField::execute(void) stopTimer("cache copy"); } + // perf + tot_kernel = getDTimer("contraction: colour trace & mom.") + + getDTimer("contraction: local space sum"); + t_kernel = tot_kernel - t_kernel; + LOG(Message) << "Kernel perf " << flops/t_kernel/1.0e3/nodes + << " Gflop/s/node " << std::endl; + LOG(Message) << "Kernel perf " << bytes/t_kernel*1.0e6/1024/1024/1024/nodes + << " GB/s/node " << std::endl; + t_kernel = tot_kernel; + // IO if (!par().output.empty()) { @@ -374,13 +388,6 @@ void TA2AMesonField::execute(void) << " MB/s)" << std::endl; } } - - double nodes = env().getGrid()->NodeCount(); - double t_kernel = getDTimer("contraction: colour trace & mom.") - + getDTimer("contraction: local space sum"); - - LOG(Message) << "Perf " << flops/t_kernel/1.0e3/nodes << " Gflop/s/node " << std::endl; - LOG(Message) << "Perf " << bytes/t_kernel/1.0e3/nodes << " GB/s/node " << std::endl; } // IO From c4115544a55ff9a76d042bc17b85292d971ce956 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 14 Aug 2018 20:03:53 +0100 Subject: [PATCH 258/267] Hadrons: application option to save graph --- extras/Hadrons/Application.cc | 5 +++++ extras/Hadrons/Application.hpp | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/extras/Hadrons/Application.cc b/extras/Hadrons/Application.cc index b2a1987e..91d1f431 100644 --- a/extras/Hadrons/Application.cc +++ b/extras/Hadrons/Application.cc @@ -110,6 +110,11 @@ void Application::run(void) LOG(Message) << "RUN ID '" << getPar().runId << "'" << std::endl; vm().setRunId(getPar().runId); vm().printContent(); + if (!getPar().graphFile.empty()) + { + makeFileDir(getPar().graphFile, env().getGrid()); + vm().dumpModuleGraph(getPar().graphFile); + } env().printContent(); schedule(); printSchedule(); diff --git a/extras/Hadrons/Application.hpp b/extras/Hadrons/Application.hpp index ef463dd6..82307d62 100644 --- a/extras/Hadrons/Application.hpp +++ b/extras/Hadrons/Application.hpp @@ -55,7 +55,8 @@ public: GRID_SERIALIZABLE_CLASS_MEMBERS(GlobalPar, TrajRange, trajCounter, VirtualMachine::GeneticPar, genetic, - std::string, runId); + std::string, runId, + std::string, graphFile); }; public: // constructors From 7727e811133fb1ad751c08d5d8a7dfe043a1ce36 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 14 Aug 2018 20:18:47 +0100 Subject: [PATCH 259/267] Hadrons: slight improvement on previous commit --- extras/Hadrons/Application.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extras/Hadrons/Application.cc b/extras/Hadrons/Application.cc index 91d1f431..17e833dd 100644 --- a/extras/Hadrons/Application.cc +++ b/extras/Hadrons/Application.cc @@ -110,14 +110,14 @@ void Application::run(void) LOG(Message) << "RUN ID '" << getPar().runId << "'" << std::endl; vm().setRunId(getPar().runId); vm().printContent(); + env().printContent(); + schedule(); + printSchedule(); if (!getPar().graphFile.empty()) { makeFileDir(getPar().graphFile, env().getGrid()); vm().dumpModuleGraph(getPar().graphFile); } - env().printContent(); - schedule(); - printSchedule(); configLoop(); } From 5f206df775c54dc2b863bacb5ade177ee58032a8 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Wed, 15 Aug 2018 17:29:44 +0100 Subject: [PATCH 260/267] Hadrons: meson field cache friendly cache copy --- extras/Hadrons/Modules/MContraction/A2AMesonField.hpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp index c0463791..27c599f0 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -297,12 +297,11 @@ void TA2AMesonField::execute(void) + vol * ( 2.0 * sizeof(Complex) *nmom ) * N_iii*N_jjj* ngamma; startTimer("cache copy"); - - parallel_for_nest5(int iii=0;iii< N_iii;iii++) - for(int jjj=0;jjj< N_jjj;jjj++) - for(int m =0;m< nmom;m++) + parallel_for_nest5(int m =0;m< nmom;m++) for(int g =0;g< ngamma;g++) for(int t =0;t< nt;t++) + for(int iii=0;iii< N_iii;iii++) + for(int jjj=0;jjj< N_jjj;jjj++) { mfBlock(m,g,t,ii+iii,jj+jjj) = mfCacheBlock(m,g,t,iii,jjj); } From fb7d021b9d0cd162587280702d09e48299d5a929 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 28 Aug 2018 15:00:40 +0100 Subject: [PATCH 261/267] Hadrons: moving Hadrons to root directory, build system improvements --- {lib => Grid}/DisableWarnings.h | 0 {lib => Grid}/Grid.h | 0 {lib => Grid}/GridCore.h | 0 {lib => Grid}/GridQCDcore.h | 0 {lib => Grid}/GridStd.h | 0 {lib => Grid}/Grid_Eigen_Dense.h | 0 {lib => Grid}/Makefile.am | 2 +- {lib => Grid}/algorithms/Algorithms.h | 0 {lib => Grid}/algorithms/CoarsenedMatrix.h | 0 {lib => Grid}/algorithms/FFT.h | 0 {lib => Grid}/algorithms/LinearOperator.h | 0 {lib => Grid}/algorithms/Preconditioner.h | 0 {lib => Grid}/algorithms/SparseMatrix.h | 0 {lib => Grid}/algorithms/approx/Chebyshev.h | 0 {lib => Grid}/algorithms/approx/Forecast.h | 0 {lib => Grid}/algorithms/approx/LICENSE | 0 .../algorithms/approx/MultiShiftFunction.cc | 0 .../algorithms/approx/MultiShiftFunction.h | 0 {lib => Grid}/algorithms/approx/README | 0 {lib => Grid}/algorithms/approx/Remez.cc | 0 {lib => Grid}/algorithms/approx/Remez.h | 0 {lib => Grid}/algorithms/approx/Zolotarev.cc | 0 {lib => Grid}/algorithms/approx/Zolotarev.h | 0 {lib => Grid}/algorithms/approx/bigfloat.h | 0 .../algorithms/approx/bigfloat_double.h | 0 .../algorithms/iterative/AdefGeneric.h | 0 .../iterative/BlockConjugateGradient.h | 0 .../algorithms/iterative/ConjugateGradient.h | 0 .../iterative/ConjugateGradientMixedPrec.h | 0 .../iterative/ConjugateGradientMultiShift.h | 0 .../ConjugateGradientReliableUpdate.h | 0 .../algorithms/iterative/ConjugateResidual.h | 0 .../algorithms/iterative/Deflation.h | 0 .../iterative/ImplicitlyRestartedLanczos.h | 0 .../iterative/LocalCoherenceLanczos.h | 0 .../algorithms/iterative/NormalEquations.h | 0 .../iterative/PrecConjugateResidual.h | 0 .../PrecGeneralisedConjugateResidual.h | 0 .../algorithms/iterative/SchurRedBlack.h | 0 {lib => Grid}/allocator/AlignedAllocator.cc | 0 {lib => Grid}/allocator/AlignedAllocator.h | 0 {lib => Grid}/cartesian/Cartesian.h | 0 {lib => Grid}/cartesian/Cartesian_base.h | 0 {lib => Grid}/cartesian/Cartesian_full.h | 0 {lib => Grid}/cartesian/Cartesian_red_black.h | 0 {lib => Grid}/communicator/Communicator.h | 0 .../communicator/Communicator_base.cc | 0 .../communicator/Communicator_base.h | 0 .../communicator/Communicator_mpi3.cc | 0 .../communicator/Communicator_none.cc | 0 {lib => Grid}/communicator/SharedMemory.cc | 0 {lib => Grid}/communicator/SharedMemory.h | 0 {lib => Grid}/communicator/SharedMemoryMPI.cc | 0 .../communicator/SharedMemoryNone.cc | 0 {lib => Grid}/cshift/Cshift.h | 0 {lib => Grid}/cshift/Cshift_common.h | 0 {lib => Grid}/cshift/Cshift_mpi.h | 0 {lib => Grid}/cshift/Cshift_none.h | 0 {lib => Grid}/json/json.hpp | 0 {lib => Grid}/lattice/Lattice.h | 0 {lib => Grid}/lattice/Lattice_ET.h | 0 {lib => Grid}/lattice/Lattice_arith.h | 0 {lib => Grid}/lattice/Lattice_base.h | 0 {lib => Grid}/lattice/Lattice_comparison.h | 0 .../lattice/Lattice_comparison_utils.h | 0 {lib => Grid}/lattice/Lattice_conformable.h | 0 {lib => Grid}/lattice/Lattice_coordinate.h | 0 {lib => Grid}/lattice/Lattice_local.h | 0 {lib => Grid}/lattice/Lattice_overload.h | 0 {lib => Grid}/lattice/Lattice_peekpoke.h | 0 {lib => Grid}/lattice/Lattice_reality.h | 0 {lib => Grid}/lattice/Lattice_reduction.h | 0 {lib => Grid}/lattice/Lattice_rng.h | 0 {lib => Grid}/lattice/Lattice_trace.h | 0 {lib => Grid}/lattice/Lattice_transfer.h | 0 {lib => Grid}/lattice/Lattice_transpose.h | 0 {lib => Grid}/lattice/Lattice_unary.h | 0 {lib => Grid}/lattice/Lattice_where.h | 0 {lib => Grid}/log/Log.cc | 0 {lib => Grid}/log/Log.h | 0 {lib => Grid}/parallelIO/BinaryIO.h | 0 {lib => Grid}/parallelIO/IldgIO.h | 0 {lib => Grid}/parallelIO/IldgIOtypes.h | 0 {lib => Grid}/parallelIO/MetaData.h | 0 {lib => Grid}/parallelIO/NerscIO.h | 0 {lib => Grid}/perfmon/PerfCount.cc | 0 {lib => Grid}/perfmon/PerfCount.h | 0 {lib => Grid}/perfmon/Stat.cc | 0 {lib => Grid}/perfmon/Stat.h | 0 {lib => Grid}/perfmon/Timer.h | 0 {lib => Grid}/pugixml/pugiconfig.hpp | 0 {lib => Grid}/pugixml/pugixml.cc | 0 {lib => Grid}/pugixml/pugixml.h | 0 {lib => Grid}/pugixml/readme.txt | 0 {lib => Grid}/qcd/LatticeTheories.h | 0 {lib => Grid}/qcd/QCD.h | 0 {lib => Grid}/qcd/action/Action.h | 0 {lib => Grid}/qcd/action/ActionBase.h | 0 {lib => Grid}/qcd/action/ActionCore.h | 0 {lib => Grid}/qcd/action/ActionParams.h | 0 {lib => Grid}/qcd/action/ActionSet.h | 0 .../qcd/action/fermion/AbstractEOFAFermion.h | 0 .../qcd/action/fermion/CayleyFermion5D.cc | 0 .../qcd/action/fermion/CayleyFermion5D.h | 0 .../action/fermion/CayleyFermion5Dcache.cc | 0 .../action/fermion/CayleyFermion5Ddense.cc | 0 .../qcd/action/fermion/CayleyFermion5Dssp.cc | 0 .../qcd/action/fermion/CayleyFermion5Dvec.cc | 0 .../fermion/ContinuedFractionFermion5D.cc | 0 .../fermion/ContinuedFractionFermion5D.h | 0 .../action/fermion/DomainWallEOFAFermion.cc | 0 .../action/fermion/DomainWallEOFAFermion.h | 0 .../fermion/DomainWallEOFAFermioncache.cc | 0 .../fermion/DomainWallEOFAFermiondense.cc | 0 .../fermion/DomainWallEOFAFermionssp.cc | 0 .../fermion/DomainWallEOFAFermionvec.cc | 0 .../qcd/action/fermion/DomainWallFermion.h | 0 {lib => Grid}/qcd/action/fermion/Fermion.h | 0 .../qcd/action/fermion/FermionCore.h | 0 .../qcd/action/fermion/FermionOperator.h | 0 .../qcd/action/fermion/FermionOperatorImpl.h | 0 .../fermion/ImprovedStaggeredFermion.cc | 0 .../action/fermion/ImprovedStaggeredFermion.h | 0 .../fermion/ImprovedStaggeredFermion5D.cc | 0 .../fermion/ImprovedStaggeredFermion5D.h | 0 .../qcd/action/fermion/MobiusEOFAFermion.cc | 0 .../qcd/action/fermion/MobiusEOFAFermion.h | 0 .../action/fermion/MobiusEOFAFermioncache.cc | 0 .../action/fermion/MobiusEOFAFermiondense.cc | 0 .../action/fermion/MobiusEOFAFermionssp.cc | 0 .../action/fermion/MobiusEOFAFermionvec.cc | 0 .../qcd/action/fermion/MobiusFermion.h | 0 .../action/fermion/MobiusZolotarevFermion.h | 0 .../fermion/OverlapWilsonCayleyTanhFermion.h | 0 .../OverlapWilsonCayleyZolotarevFermion.h | 0 .../OverlapWilsonContfracTanhFermion.h | 0 .../OverlapWilsonContfracZolotarevFermion.h | 0 .../OverlapWilsonPartialFractionTanhFermion.h | 0 ...lapWilsonPartialFractionZolotarevFermion.h | 0 .../fermion/PartialFractionFermion5D.cc | 0 .../action/fermion/PartialFractionFermion5D.h | 0 .../qcd/action/fermion/ScaledShamirFermion.h | 0 .../qcd/action/fermion/SchurDiagTwoKappa.h | 0 .../action/fermion/ShamirZolotarevFermion.h | 0 .../qcd/action/fermion/StaggeredKernels.cc | 0 .../qcd/action/fermion/StaggeredKernels.h | 0 .../qcd/action/fermion/StaggeredKernelsAsm.cc | 0 .../action/fermion/StaggeredKernelsHand.cc | 0 .../qcd/action/fermion/WilsonCloverFermion.cc | 0 .../qcd/action/fermion/WilsonCloverFermion.h | 0 .../qcd/action/fermion/WilsonCompressor.h | 0 .../qcd/action/fermion/WilsonFermion.cc | 0 .../qcd/action/fermion/WilsonFermion.h | 0 .../qcd/action/fermion/WilsonFermion5D.cc | 0 .../qcd/action/fermion/WilsonFermion5D.h | 0 .../qcd/action/fermion/WilsonKernels.cc | 0 .../qcd/action/fermion/WilsonKernels.h | 0 .../qcd/action/fermion/WilsonKernelsAsm.cc | 0 .../action/fermion/WilsonKernelsAsmAvx512.h | 0 .../qcd/action/fermion/WilsonKernelsAsmBody.h | 0 .../action/fermion/WilsonKernelsAsmBody.h.ab | 0 .../action/fermion/WilsonKernelsAsmBody.h.abc | 0 .../qcd/action/fermion/WilsonKernelsAsmQPX.h | 0 .../qcd/action/fermion/WilsonKernelsHand.cc | 0 .../fermion/WilsonKernelsHandGparity.cc | 0 .../qcd/action/fermion/WilsonTMFermion.cc | 0 .../qcd/action/fermion/WilsonTMFermion.h | 0 .../qcd/action/fermion/ZMobiusFermion.h | 0 .../qcd/action/fermion/g5HermitianLinop.h | 0 {lib => Grid}/qcd/action/gauge/Gauge.h | 0 .../qcd/action/gauge/GaugeImplTypes.h | 0 .../qcd/action/gauge/GaugeImplementations.h | 0 {lib => Grid}/qcd/action/gauge/Photon.h | 0 .../action/gauge/PlaqPlusRectangleAction.h | 0 .../qcd/action/gauge/WilsonGaugeAction.h | 0 .../EvenOddSchurDifferentiable.h | 0 .../pseudofermion/ExactOneFlavourRatio.h | 0 .../pseudofermion/OneFlavourEvenOddRational.h | 0 .../OneFlavourEvenOddRationalRatio.h | 0 .../action/pseudofermion/OneFlavourRational.h | 0 .../pseudofermion/OneFlavourRationalRatio.h | 0 .../qcd/action/pseudofermion/PseudoFermion.h | 0 .../qcd/action/pseudofermion/TwoFlavour.h | 0 .../action/pseudofermion/TwoFlavourEvenOdd.h | 0 .../pseudofermion/TwoFlavourEvenOddRatio.h | 0 .../action/pseudofermion/TwoFlavourRatio.h | 0 {lib => Grid}/qcd/action/scalar/Scalar.h | 0 .../qcd/action/scalar/ScalarAction.h | 0 {lib => Grid}/qcd/action/scalar/ScalarImpl.h | 0 .../action/scalar/ScalarInteractionAction.h | 0 {lib => Grid}/qcd/hmc/GenericHMCrunner.h | 0 {lib => Grid}/qcd/hmc/HMC.h | 0 {lib => Grid}/qcd/hmc/HMCModules.h | 0 {lib => Grid}/qcd/hmc/HMCResourceManager.h | 0 {lib => Grid}/qcd/hmc/HMCRunnerModule.h | 0 {lib => Grid}/qcd/hmc/HMC_GridModules.h | 0 {lib => Grid}/qcd/hmc/HMC_aggregate.h | 0 {lib => Grid}/qcd/hmc/UsingHMC.md | 0 .../qcd/hmc/checkpointers/BaseCheckpointer.h | 0 .../hmc/checkpointers/BinaryCheckpointer.h | 0 .../hmc/checkpointers/CheckPointerModules.h | 0 .../qcd/hmc/checkpointers/CheckPointers.h | 0 .../qcd/hmc/checkpointers/ILDGCheckpointer.h | 0 .../qcd/hmc/checkpointers/NerscCheckpointer.h | 0 .../hmc/checkpointers/ScidacCheckpointer.h | 0 .../qcd/hmc/integrators/Integrator.h | 0 .../hmc/integrators/Integrator_algorithm.h | 0 {lib => Grid}/qcd/modules/ActionModules.h | 0 {lib => Grid}/qcd/modules/Factory.h | 0 .../qcd/modules/FermionOperatorModules.h | 0 {lib => Grid}/qcd/modules/Modules.cc | 0 {lib => Grid}/qcd/modules/Modules.h | 0 {lib => Grid}/qcd/modules/ObservableModules.h | 0 {lib => Grid}/qcd/modules/Registration.h | 0 {lib => Grid}/qcd/modules/SolverModules.h | 0 {lib => Grid}/qcd/modules/mods.h | 0 .../qcd/observables/hmc_observable.h | 0 {lib => Grid}/qcd/observables/plaquette.h | 0 {lib => Grid}/qcd/observables/polyakov_loop.h | 0 .../qcd/observables/topological_charge.h | 0 .../qcd/representations/Representations.h | 0 {lib => Grid}/qcd/representations/adjoint.h | 0 .../qcd/representations/fundamental.h | 0 {lib => Grid}/qcd/representations/hmc_types.h | 0 {lib => Grid}/qcd/representations/two_index.h | 0 {lib => Grid}/qcd/smearing/APEsmearing.h | 0 {lib => Grid}/qcd/smearing/BaseSmearing.h | 0 .../qcd/smearing/GaugeConfiguration.h | 0 {lib => Grid}/qcd/smearing/Smearing.h | 0 {lib => Grid}/qcd/smearing/StoutSmearing.h | 0 {lib => Grid}/qcd/smearing/WilsonFlow.h | 0 {lib => Grid}/qcd/spin/Dirac.h | 0 {lib => Grid}/qcd/spin/Gamma.cc | 0 {lib => Grid}/qcd/spin/Gamma.h | 0 {lib => Grid}/qcd/spin/Spin.h | 0 {lib => Grid}/qcd/spin/TwoSpinor.h | 0 {lib => Grid}/qcd/spin/gamma-gen/gamma-gen.nb | 0 {lib => Grid}/qcd/utils/CovariantCshift.h | 0 {lib => Grid}/qcd/utils/CovariantLaplacian.h | 0 {lib => Grid}/qcd/utils/GaugeFix.h | 0 {lib => Grid}/qcd/utils/LinalgUtils.h | 0 {lib => Grid}/qcd/utils/Metric.h | 0 {lib => Grid}/qcd/utils/SUn.h | 0 {lib => Grid}/qcd/utils/SUnAdjoint.h | 0 {lib => Grid}/qcd/utils/SUnTwoIndex.h | 0 {lib => Grid}/qcd/utils/ScalarObjs.h | 0 {lib => Grid}/qcd/utils/SpaceTimeGrid.cc | 0 {lib => Grid}/qcd/utils/SpaceTimeGrid.h | 0 {lib => Grid}/qcd/utils/Utils.h | 0 {lib => Grid}/qcd/utils/WilsonLoops.h | 0 {lib => Grid}/serialisation/BaseIO.h | 0 {lib => Grid}/serialisation/BinaryIO.cc | 0 {lib => Grid}/serialisation/BinaryIO.h | 0 {lib => Grid}/serialisation/Hdf5IO.cc | 0 {lib => Grid}/serialisation/Hdf5IO.h | 0 {lib => Grid}/serialisation/Hdf5Type.h | 0 {lib => Grid}/serialisation/JSON_IO.cc | 0 {lib => Grid}/serialisation/JSON_IO.h | 0 {lib => Grid}/serialisation/MacroMagic.h | 0 {lib => Grid}/serialisation/Serialisation.h | 0 {lib => Grid}/serialisation/TextIO.cc | 0 {lib => Grid}/serialisation/TextIO.h | 0 {lib => Grid}/serialisation/VectorUtils.h | 0 {lib => Grid}/serialisation/XmlIO.cc | 0 {lib => Grid}/serialisation/XmlIO.h | 0 {lib => Grid}/simd/BGQQPX.h | 0 {lib => Grid}/simd/Grid_avx.h | 0 {lib => Grid}/simd/Grid_avx512.h | 0 {lib => Grid}/simd/Grid_generic.h | 0 {lib => Grid}/simd/Grid_generic_types.h | 0 {lib => Grid}/simd/Grid_imci.h | 0 {lib => Grid}/simd/Grid_neon.h | 0 {lib => Grid}/simd/Grid_qpx.h | 0 {lib => Grid}/simd/Grid_sse4.h | 0 {lib => Grid}/simd/Grid_vector_types.h | 0 {lib => Grid}/simd/Grid_vector_unops.h | 0 {lib => Grid}/simd/IBM_qpx.h | 0 {lib => Grid}/simd/IBM_qpx_double.h | 0 {lib => Grid}/simd/IBM_qpx_single.h | 0 {lib => Grid}/simd/Intel512avx.h | 0 {lib => Grid}/simd/Intel512common.h | 0 {lib => Grid}/simd/Intel512double.h | 0 {lib => Grid}/simd/Intel512imci.h | 0 {lib => Grid}/simd/Intel512single.h | 0 {lib => Grid}/simd/Intel512wilson.h | 0 {lib => Grid}/simd/Simd.h | 0 {lib => Grid}/simd/l1p.h | 0 {lib => Grid}/sitmo_rng/README | 0 {lib => Grid}/sitmo_rng/sitmo_prng_engine.hpp | 0 {lib => Grid}/stencil/Lebesgue.cc | 0 {lib => Grid}/stencil/Lebesgue.h | 0 {lib => Grid}/stencil/SimpleCompressor.h | 0 {lib => Grid}/stencil/Stencil.cc | 0 {lib => Grid}/stencil/Stencil.h | 0 {lib => Grid}/tensors/Tensor_Ta.h | 0 {lib => Grid}/tensors/Tensor_arith.h | 0 {lib => Grid}/tensors/Tensor_arith_add.h | 0 {lib => Grid}/tensors/Tensor_arith_mac.h | 0 {lib => Grid}/tensors/Tensor_arith_mul.h | 0 {lib => Grid}/tensors/Tensor_arith_scalar.h | 0 {lib => Grid}/tensors/Tensor_arith_sub.h | 0 {lib => Grid}/tensors/Tensor_class.h | 0 {lib => Grid}/tensors/Tensor_determinant.h | 0 {lib => Grid}/tensors/Tensor_exp.h | 0 {lib => Grid}/tensors/Tensor_extract_merge.h | 0 {lib => Grid}/tensors/Tensor_index.h | 0 {lib => Grid}/tensors/Tensor_inner.h | 0 {lib => Grid}/tensors/Tensor_logical.h | 0 {lib => Grid}/tensors/Tensor_outer.h | 0 {lib => Grid}/tensors/Tensor_reality.h | 0 {lib => Grid}/tensors/Tensor_trace.h | 0 {lib => Grid}/tensors/Tensor_traits.h | 0 {lib => Grid}/tensors/Tensor_transpose.h | 0 {lib => Grid}/tensors/Tensor_unary.h | 0 {lib => Grid}/tensors/Tensors.h | 0 {lib => Grid}/threads/Threads.h | 0 {lib => Grid}/util/CompilerCompatible.h | 0 {lib => Grid}/util/Init.cc | 0 {lib => Grid}/util/Init.h | 0 {lib => Grid}/util/Lexicographic.h | 0 {lib => Grid}/util/Profiling.h | 0 {lib => Grid}/util/Sha.h | 0 {lib => Grid}/util/Util.h | 0 {lib => Grid}/util/version.cc | 0 Grid/version.h | 1 + {extras/Hadrons => Hadrons}/A2AVectors.hpp | 6 +- {extras/Hadrons => Hadrons}/Application.cc | 6 +- {extras/Hadrons => Hadrons}/Application.hpp | 6 +- {extras/Hadrons => Hadrons}/DilutedNoise.hpp | 2 +- {extras/Hadrons => Hadrons}/EigenPack.hpp | 2 +- {extras/Hadrons => Hadrons}/Environment.cc | 6 +- {extras/Hadrons => Hadrons}/Environment.hpp | 2 +- {extras/Hadrons => Hadrons}/Exceptions.cc | 6 +- {extras/Hadrons => Hadrons}/Exceptions.hpp | 2 +- {extras/Hadrons => Hadrons}/Factory.hpp | 2 +- .../Hadrons => Hadrons}/GeneticScheduler.hpp | 4 +- {extras/Hadrons => Hadrons}/Global.cc | 2 +- {extras/Hadrons => Hadrons}/Global.hpp | 2 +- {extras/Hadrons => Hadrons}/Graph.hpp | 2 +- {extras/Hadrons => Hadrons}/HadronsXmlRun.cc | 2 +- {extras/Hadrons => Hadrons}/Makefile.am | 2 +- {extras/Hadrons => Hadrons}/Module.cc | 2 +- {extras/Hadrons => Hadrons}/Module.hpp | 4 +- {extras/Hadrons => Hadrons}/ModuleFactory.hpp | 6 +- Hadrons/Modules.hpp | 96 +++++++ .../Modules/MAction/DWF.cc | 2 +- .../Modules/MAction/DWF.hpp | 6 +- .../Modules/MAction/MobiusDWF.cc | 2 +- .../Modules/MAction/MobiusDWF.hpp | 6 +- .../Modules/MAction/ScaledDWF.cc | 2 +- .../Modules/MAction/ScaledDWF.hpp | 6 +- .../Modules/MAction/Wilson.cc | 2 +- .../Modules/MAction/Wilson.hpp | 6 +- .../Modules/MAction/WilsonClover.cc | 2 +- .../Modules/MAction/WilsonClover.hpp | 6 +- .../Modules/MAction/ZMobiusDWF.cc | 2 +- .../Modules/MAction/ZMobiusDWF.hpp | 6 +- .../Modules/MContraction/A2AMesonField.cc | 2 +- .../Modules/MContraction/A2AMesonField.hpp | 12 +- .../MContraction/A2AMesonFieldKernels.hpp | 4 +- .../Modules/MContraction/Baryon.cc | 2 +- .../Modules/MContraction/Baryon.hpp | 6 +- .../Modules/MContraction/DiscLoop.cc | 2 +- .../Modules/MContraction/DiscLoop.hpp | 6 +- .../Modules/MContraction/Gamma3pt.cc | 2 +- .../Modules/MContraction/Gamma3pt.hpp | 6 +- .../Modules/MContraction/Meson.cc | 2 +- .../Modules/MContraction/Meson.hpp | 6 +- .../Modules/MContraction/WardIdentity.cc | 2 +- .../Modules/MContraction/WardIdentity.hpp | 6 +- .../Modules/MContraction/WeakHamiltonian.hpp | 6 +- .../MContraction/WeakHamiltonianEye.cc | 2 +- .../MContraction/WeakHamiltonianEye.hpp | 2 +- .../MContraction/WeakHamiltonianNonEye.cc | 2 +- .../MContraction/WeakHamiltonianNonEye.hpp | 2 +- .../MContraction/WeakNeutral4ptDisc.cc | 2 +- .../MContraction/WeakNeutral4ptDisc.hpp | 2 +- .../Modules/MFermion/FreeProp.cc | 2 +- .../Modules/MFermion/FreeProp.hpp | 6 +- .../Modules/MFermion/GaugeProp.cc | 2 +- .../Modules/MFermion/GaugeProp.hpp | 8 +- .../Modules/MGauge/FundtoHirep.cc | 2 +- .../Modules/MGauge/FundtoHirep.hpp | 6 +- .../Modules/MGauge/Random.cc | 2 +- .../Modules/MGauge/Random.hpp | 6 +- .../Modules/MGauge/StochEm.cc | 2 +- .../Modules/MGauge/StochEm.hpp | 6 +- .../Modules/MGauge/StoutSmearing.cc | 2 +- .../Modules/MGauge/StoutSmearing.hpp | 6 +- .../Modules/MGauge/Unit.cc | 2 +- .../Modules/MGauge/Unit.hpp | 6 +- .../Modules/MGauge/UnitEm.cc | 2 +- .../Modules/MGauge/UnitEm.hpp | 6 +- .../Modules/MIO/LoadBinary.cc | 2 +- .../Modules/MIO/LoadBinary.hpp | 6 +- .../Modules/MIO/LoadCoarseEigenPack.cc | 2 +- .../Modules/MIO/LoadCoarseEigenPack.hpp | 8 +- .../Modules/MIO/LoadEigenPack.cc | 2 +- .../Modules/MIO/LoadEigenPack.hpp | 8 +- .../Modules/MIO/LoadNersc.cc | 2 +- .../Modules/MIO/LoadNersc.hpp | 6 +- .../Modules/MLoop/NoiseLoop.cc | 2 +- .../Modules/MLoop/NoiseLoop.hpp | 6 +- .../MNoise/TimeDilutedSpinColorDiagonal.cc | 2 +- .../MNoise/TimeDilutedSpinColorDiagonal.hpp | 8 +- .../Modules/MScalar/ChargedProp.cc | 4 +- .../Modules/MScalar/ChargedProp.hpp | 6 +- .../Modules/MScalar/FreeProp.cc | 4 +- .../Modules/MScalar/FreeProp.hpp | 6 +- .../Modules/MScalar/Scalar.hpp | 0 .../Modules/MScalar/ScalarVP.cc | 6 +- .../Modules/MScalar/ScalarVP.hpp | 6 +- .../Modules/MScalar/VPCounterTerms.cc | 4 +- .../Modules/MScalar/VPCounterTerms.hpp | 6 +- .../Modules/MScalarSUN/Div.cc | 2 +- .../Modules/MScalarSUN/Div.hpp | 8 +- .../Modules/MScalarSUN/EMT.cc | 2 +- .../Modules/MScalarSUN/EMT.hpp | 8 +- .../Modules/MScalarSUN/Grad.cc | 2 +- .../Modules/MScalarSUN/Grad.hpp | 8 +- .../Modules/MScalarSUN/ShiftProbe.cc | 2 +- .../Modules/MScalarSUN/ShiftProbe.hpp | 8 +- .../Modules/MScalarSUN/StochFreeField.cc | 2 +- .../Modules/MScalarSUN/StochFreeField.hpp | 6 +- .../Modules/MScalarSUN/TimeMomProbe.cc | 2 +- .../Modules/MScalarSUN/TimeMomProbe.hpp | 8 +- .../Modules/MScalarSUN/TrKinetic.cc | 2 +- .../Modules/MScalarSUN/TrKinetic.hpp | 8 +- .../Modules/MScalarSUN/TrMag.cc | 2 +- .../Modules/MScalarSUN/TrMag.hpp | 8 +- .../Modules/MScalarSUN/TrPhi.cc | 2 +- .../Modules/MScalarSUN/TrPhi.hpp | 8 +- .../Modules/MScalarSUN/TransProj.cc | 2 +- .../Modules/MScalarSUN/TransProj.hpp | 8 +- .../Modules/MScalarSUN/TwoPoint.cc | 2 +- .../Modules/MScalarSUN/TwoPoint.hpp | 8 +- .../Modules/MScalarSUN/TwoPointNPR.cc | 2 +- .../Modules/MScalarSUN/TwoPointNPR.hpp | 8 +- .../Modules/MScalarSUN/Utils.hpp | 4 +- .../Modules/MSink/Point.cc | 2 +- .../Modules/MSink/Point.hpp | 6 +- .../Modules/MSink/Smear.cc | 2 +- .../Modules/MSink/Smear.hpp | 6 +- .../Modules/MSolver/A2AVectors.cc | 2 +- .../Modules/MSolver/A2AVectors.hpp | 14 +- .../Modules/MSolver/LocalCoherenceLanczos.cc | 2 +- .../Modules/MSolver/LocalCoherenceLanczos.hpp | 8 +- .../Modules/MSolver/RBPrecCG.cc | 2 +- .../Modules/MSolver/RBPrecCG.hpp | 10 +- .../Modules/MSource/Point.cc | 2 +- .../Modules/MSource/Point.hpp | 6 +- .../Modules/MSource/SeqConserved.cc | 2 +- .../Modules/MSource/SeqConserved.hpp | 6 +- .../Modules/MSource/SeqGamma.cc | 2 +- .../Modules/MSource/SeqGamma.hpp | 6 +- .../Modules/MSource/Wall.cc | 2 +- .../Modules/MSource/Wall.hpp | 6 +- .../Hadrons => Hadrons}/Modules/MSource/Z2.cc | 2 +- .../Modules/MSource/Z2.hpp | 6 +- .../Modules/MUtilities/RandomVectors.cc | 2 +- .../Modules/MUtilities/RandomVectors.hpp | 6 +- .../Modules/MUtilities/TestSeqConserved.cc | 2 +- .../Modules/MUtilities/TestSeqConserved.hpp | 6 +- .../Modules/MUtilities/TestSeqGamma.cc | 2 +- .../Modules/MUtilities/TestSeqGamma.hpp | 6 +- .../templates/Module_in_NS.cc.template | 0 .../templates/Module_in_NS.hpp.template | 0 .../templates/Module_tmp_in_NS.cc.template | 0 .../templates/Module_tmp_in_NS.hpp.template | 0 {extras/Hadrons => Hadrons}/Solver.hpp | 2 +- {extras/Hadrons => Hadrons}/VirtualMachine.cc | 6 +- .../Hadrons => Hadrons}/VirtualMachine.hpp | 6 +- {extras/Hadrons => Hadrons}/add_module.sh | 0 .../add_module_template.sh | 0 .../Hadrons => Hadrons}/make_module_inst.sh | 0 .../Hadrons => Hadrons}/make_module_list.sh | 0 {extras/Hadrons => Hadrons}/modules.inc | 0 Makefile.am | 4 +- configure.ac | 15 +- extras/Hadrons/Modules.hpp | 96 ------- extras/Makefile.am | 1 - extras/qed-fvol/Global.cc | 11 - extras/qed-fvol/Global.hpp | 42 --- extras/qed-fvol/Makefile.am | 9 - extras/qed-fvol/WilsonLoops.h | 265 ------------------ extras/qed-fvol/qed-fvol.cc | 88 ------ lib/.dirstamp | 0 lib/Hadrons | 1 - lib/qcd/hmc/.dirstamp | 0 lib/qcd/hmc/integrators/.dirstamp | 0 lib/simd/.dirstamp | 0 scripts/filelist | 2 +- scripts/update_eigen.sh | 12 +- tests/hadrons/Test_QED.cc | 4 +- tests/hadrons/Test_free_prop.cc | 4 +- tests/hadrons/Test_hadrons.hpp | 4 +- tests/hadrons/Test_hadrons_meson_3pt.cc | 4 +- tests/hadrons/Test_hadrons_spectrum.cc | 4 +- tests/hadrons/Test_hadrons_wilsonFund.cc | 4 +- 499 files changed, 429 insertions(+), 846 deletions(-) rename {lib => Grid}/DisableWarnings.h (100%) rename {lib => Grid}/Grid.h (100%) rename {lib => Grid}/GridCore.h (100%) rename {lib => Grid}/GridQCDcore.h (100%) rename {lib => Grid}/GridStd.h (100%) rename {lib => Grid}/Grid_Eigen_Dense.h (100%) rename {lib => Grid}/Makefile.am (94%) rename {lib => Grid}/algorithms/Algorithms.h (100%) rename {lib => Grid}/algorithms/CoarsenedMatrix.h (100%) rename {lib => Grid}/algorithms/FFT.h (100%) rename {lib => Grid}/algorithms/LinearOperator.h (100%) rename {lib => Grid}/algorithms/Preconditioner.h (100%) rename {lib => Grid}/algorithms/SparseMatrix.h (100%) rename {lib => Grid}/algorithms/approx/Chebyshev.h (100%) rename {lib => Grid}/algorithms/approx/Forecast.h (100%) rename {lib => Grid}/algorithms/approx/LICENSE (100%) rename {lib => Grid}/algorithms/approx/MultiShiftFunction.cc (100%) rename {lib => Grid}/algorithms/approx/MultiShiftFunction.h (100%) rename {lib => Grid}/algorithms/approx/README (100%) rename {lib => Grid}/algorithms/approx/Remez.cc (100%) rename {lib => Grid}/algorithms/approx/Remez.h (100%) rename {lib => Grid}/algorithms/approx/Zolotarev.cc (100%) rename {lib => Grid}/algorithms/approx/Zolotarev.h (100%) rename {lib => Grid}/algorithms/approx/bigfloat.h (100%) rename {lib => Grid}/algorithms/approx/bigfloat_double.h (100%) rename {lib => Grid}/algorithms/iterative/AdefGeneric.h (100%) rename {lib => Grid}/algorithms/iterative/BlockConjugateGradient.h (100%) rename {lib => Grid}/algorithms/iterative/ConjugateGradient.h (100%) rename {lib => Grid}/algorithms/iterative/ConjugateGradientMixedPrec.h (100%) rename {lib => Grid}/algorithms/iterative/ConjugateGradientMultiShift.h (100%) rename {lib => Grid}/algorithms/iterative/ConjugateGradientReliableUpdate.h (100%) rename {lib => Grid}/algorithms/iterative/ConjugateResidual.h (100%) rename {lib => Grid}/algorithms/iterative/Deflation.h (100%) rename {lib => Grid}/algorithms/iterative/ImplicitlyRestartedLanczos.h (100%) rename {lib => Grid}/algorithms/iterative/LocalCoherenceLanczos.h (100%) rename {lib => Grid}/algorithms/iterative/NormalEquations.h (100%) rename {lib => Grid}/algorithms/iterative/PrecConjugateResidual.h (100%) rename {lib => Grid}/algorithms/iterative/PrecGeneralisedConjugateResidual.h (100%) rename {lib => Grid}/algorithms/iterative/SchurRedBlack.h (100%) rename {lib => Grid}/allocator/AlignedAllocator.cc (100%) rename {lib => Grid}/allocator/AlignedAllocator.h (100%) rename {lib => Grid}/cartesian/Cartesian.h (100%) rename {lib => Grid}/cartesian/Cartesian_base.h (100%) rename {lib => Grid}/cartesian/Cartesian_full.h (100%) rename {lib => Grid}/cartesian/Cartesian_red_black.h (100%) rename {lib => Grid}/communicator/Communicator.h (100%) rename {lib => Grid}/communicator/Communicator_base.cc (100%) rename {lib => Grid}/communicator/Communicator_base.h (100%) rename {lib => Grid}/communicator/Communicator_mpi3.cc (100%) rename {lib => Grid}/communicator/Communicator_none.cc (100%) rename {lib => Grid}/communicator/SharedMemory.cc (100%) rename {lib => Grid}/communicator/SharedMemory.h (100%) rename {lib => Grid}/communicator/SharedMemoryMPI.cc (100%) rename {lib => Grid}/communicator/SharedMemoryNone.cc (100%) rename {lib => Grid}/cshift/Cshift.h (100%) rename {lib => Grid}/cshift/Cshift_common.h (100%) rename {lib => Grid}/cshift/Cshift_mpi.h (100%) rename {lib => Grid}/cshift/Cshift_none.h (100%) rename {lib => Grid}/json/json.hpp (100%) rename {lib => Grid}/lattice/Lattice.h (100%) rename {lib => Grid}/lattice/Lattice_ET.h (100%) rename {lib => Grid}/lattice/Lattice_arith.h (100%) rename {lib => Grid}/lattice/Lattice_base.h (100%) rename {lib => Grid}/lattice/Lattice_comparison.h (100%) rename {lib => Grid}/lattice/Lattice_comparison_utils.h (100%) rename {lib => Grid}/lattice/Lattice_conformable.h (100%) rename {lib => Grid}/lattice/Lattice_coordinate.h (100%) rename {lib => Grid}/lattice/Lattice_local.h (100%) rename {lib => Grid}/lattice/Lattice_overload.h (100%) rename {lib => Grid}/lattice/Lattice_peekpoke.h (100%) rename {lib => Grid}/lattice/Lattice_reality.h (100%) rename {lib => Grid}/lattice/Lattice_reduction.h (100%) rename {lib => Grid}/lattice/Lattice_rng.h (100%) rename {lib => Grid}/lattice/Lattice_trace.h (100%) rename {lib => Grid}/lattice/Lattice_transfer.h (100%) rename {lib => Grid}/lattice/Lattice_transpose.h (100%) rename {lib => Grid}/lattice/Lattice_unary.h (100%) rename {lib => Grid}/lattice/Lattice_where.h (100%) rename {lib => Grid}/log/Log.cc (100%) rename {lib => Grid}/log/Log.h (100%) rename {lib => Grid}/parallelIO/BinaryIO.h (100%) rename {lib => Grid}/parallelIO/IldgIO.h (100%) rename {lib => Grid}/parallelIO/IldgIOtypes.h (100%) rename {lib => Grid}/parallelIO/MetaData.h (100%) rename {lib => Grid}/parallelIO/NerscIO.h (100%) rename {lib => Grid}/perfmon/PerfCount.cc (100%) rename {lib => Grid}/perfmon/PerfCount.h (100%) rename {lib => Grid}/perfmon/Stat.cc (100%) rename {lib => Grid}/perfmon/Stat.h (100%) rename {lib => Grid}/perfmon/Timer.h (100%) rename {lib => Grid}/pugixml/pugiconfig.hpp (100%) rename {lib => Grid}/pugixml/pugixml.cc (100%) rename {lib => Grid}/pugixml/pugixml.h (100%) rename {lib => Grid}/pugixml/readme.txt (100%) rename {lib => Grid}/qcd/LatticeTheories.h (100%) rename {lib => Grid}/qcd/QCD.h (100%) rename {lib => Grid}/qcd/action/Action.h (100%) rename {lib => Grid}/qcd/action/ActionBase.h (100%) rename {lib => Grid}/qcd/action/ActionCore.h (100%) rename {lib => Grid}/qcd/action/ActionParams.h (100%) rename {lib => Grid}/qcd/action/ActionSet.h (100%) rename {lib => Grid}/qcd/action/fermion/AbstractEOFAFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/CayleyFermion5D.cc (100%) rename {lib => Grid}/qcd/action/fermion/CayleyFermion5D.h (100%) rename {lib => Grid}/qcd/action/fermion/CayleyFermion5Dcache.cc (100%) rename {lib => Grid}/qcd/action/fermion/CayleyFermion5Ddense.cc (100%) rename {lib => Grid}/qcd/action/fermion/CayleyFermion5Dssp.cc (100%) rename {lib => Grid}/qcd/action/fermion/CayleyFermion5Dvec.cc (100%) rename {lib => Grid}/qcd/action/fermion/ContinuedFractionFermion5D.cc (100%) rename {lib => Grid}/qcd/action/fermion/ContinuedFractionFermion5D.h (100%) rename {lib => Grid}/qcd/action/fermion/DomainWallEOFAFermion.cc (100%) rename {lib => Grid}/qcd/action/fermion/DomainWallEOFAFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/DomainWallEOFAFermioncache.cc (100%) rename {lib => Grid}/qcd/action/fermion/DomainWallEOFAFermiondense.cc (100%) rename {lib => Grid}/qcd/action/fermion/DomainWallEOFAFermionssp.cc (100%) rename {lib => Grid}/qcd/action/fermion/DomainWallEOFAFermionvec.cc (100%) rename {lib => Grid}/qcd/action/fermion/DomainWallFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/Fermion.h (100%) rename {lib => Grid}/qcd/action/fermion/FermionCore.h (100%) rename {lib => Grid}/qcd/action/fermion/FermionOperator.h (100%) rename {lib => Grid}/qcd/action/fermion/FermionOperatorImpl.h (100%) rename {lib => Grid}/qcd/action/fermion/ImprovedStaggeredFermion.cc (100%) rename {lib => Grid}/qcd/action/fermion/ImprovedStaggeredFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/ImprovedStaggeredFermion5D.cc (100%) rename {lib => Grid}/qcd/action/fermion/ImprovedStaggeredFermion5D.h (100%) rename {lib => Grid}/qcd/action/fermion/MobiusEOFAFermion.cc (100%) rename {lib => Grid}/qcd/action/fermion/MobiusEOFAFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/MobiusEOFAFermioncache.cc (100%) rename {lib => Grid}/qcd/action/fermion/MobiusEOFAFermiondense.cc (100%) rename {lib => Grid}/qcd/action/fermion/MobiusEOFAFermionssp.cc (100%) rename {lib => Grid}/qcd/action/fermion/MobiusEOFAFermionvec.cc (100%) rename {lib => Grid}/qcd/action/fermion/MobiusFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/MobiusZolotarevFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/OverlapWilsonCayleyTanhFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/OverlapWilsonCayleyZolotarevFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/OverlapWilsonContfracTanhFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/OverlapWilsonContfracZolotarevFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/OverlapWilsonPartialFractionTanhFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/OverlapWilsonPartialFractionZolotarevFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/PartialFractionFermion5D.cc (100%) rename {lib => Grid}/qcd/action/fermion/PartialFractionFermion5D.h (100%) rename {lib => Grid}/qcd/action/fermion/ScaledShamirFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/SchurDiagTwoKappa.h (100%) rename {lib => Grid}/qcd/action/fermion/ShamirZolotarevFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/StaggeredKernels.cc (100%) rename {lib => Grid}/qcd/action/fermion/StaggeredKernels.h (100%) rename {lib => Grid}/qcd/action/fermion/StaggeredKernelsAsm.cc (100%) rename {lib => Grid}/qcd/action/fermion/StaggeredKernelsHand.cc (100%) rename {lib => Grid}/qcd/action/fermion/WilsonCloverFermion.cc (100%) rename {lib => Grid}/qcd/action/fermion/WilsonCloverFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/WilsonCompressor.h (100%) rename {lib => Grid}/qcd/action/fermion/WilsonFermion.cc (100%) rename {lib => Grid}/qcd/action/fermion/WilsonFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/WilsonFermion5D.cc (100%) rename {lib => Grid}/qcd/action/fermion/WilsonFermion5D.h (100%) rename {lib => Grid}/qcd/action/fermion/WilsonKernels.cc (100%) rename {lib => Grid}/qcd/action/fermion/WilsonKernels.h (100%) rename {lib => Grid}/qcd/action/fermion/WilsonKernelsAsm.cc (100%) rename {lib => Grid}/qcd/action/fermion/WilsonKernelsAsmAvx512.h (100%) rename {lib => Grid}/qcd/action/fermion/WilsonKernelsAsmBody.h (100%) rename {lib => Grid}/qcd/action/fermion/WilsonKernelsAsmBody.h.ab (100%) rename {lib => Grid}/qcd/action/fermion/WilsonKernelsAsmBody.h.abc (100%) rename {lib => Grid}/qcd/action/fermion/WilsonKernelsAsmQPX.h (100%) rename {lib => Grid}/qcd/action/fermion/WilsonKernelsHand.cc (100%) rename {lib => Grid}/qcd/action/fermion/WilsonKernelsHandGparity.cc (100%) rename {lib => Grid}/qcd/action/fermion/WilsonTMFermion.cc (100%) rename {lib => Grid}/qcd/action/fermion/WilsonTMFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/ZMobiusFermion.h (100%) rename {lib => Grid}/qcd/action/fermion/g5HermitianLinop.h (100%) rename {lib => Grid}/qcd/action/gauge/Gauge.h (100%) rename {lib => Grid}/qcd/action/gauge/GaugeImplTypes.h (100%) rename {lib => Grid}/qcd/action/gauge/GaugeImplementations.h (100%) rename {lib => Grid}/qcd/action/gauge/Photon.h (100%) rename {lib => Grid}/qcd/action/gauge/PlaqPlusRectangleAction.h (100%) rename {lib => Grid}/qcd/action/gauge/WilsonGaugeAction.h (100%) rename {lib => Grid}/qcd/action/pseudofermion/EvenOddSchurDifferentiable.h (100%) rename {lib => Grid}/qcd/action/pseudofermion/ExactOneFlavourRatio.h (100%) rename {lib => Grid}/qcd/action/pseudofermion/OneFlavourEvenOddRational.h (100%) rename {lib => Grid}/qcd/action/pseudofermion/OneFlavourEvenOddRationalRatio.h (100%) rename {lib => Grid}/qcd/action/pseudofermion/OneFlavourRational.h (100%) rename {lib => Grid}/qcd/action/pseudofermion/OneFlavourRationalRatio.h (100%) rename {lib => Grid}/qcd/action/pseudofermion/PseudoFermion.h (100%) rename {lib => Grid}/qcd/action/pseudofermion/TwoFlavour.h (100%) rename {lib => Grid}/qcd/action/pseudofermion/TwoFlavourEvenOdd.h (100%) rename {lib => Grid}/qcd/action/pseudofermion/TwoFlavourEvenOddRatio.h (100%) rename {lib => Grid}/qcd/action/pseudofermion/TwoFlavourRatio.h (100%) rename {lib => Grid}/qcd/action/scalar/Scalar.h (100%) rename {lib => Grid}/qcd/action/scalar/ScalarAction.h (100%) rename {lib => Grid}/qcd/action/scalar/ScalarImpl.h (100%) rename {lib => Grid}/qcd/action/scalar/ScalarInteractionAction.h (100%) rename {lib => Grid}/qcd/hmc/GenericHMCrunner.h (100%) rename {lib => Grid}/qcd/hmc/HMC.h (100%) rename {lib => Grid}/qcd/hmc/HMCModules.h (100%) rename {lib => Grid}/qcd/hmc/HMCResourceManager.h (100%) rename {lib => Grid}/qcd/hmc/HMCRunnerModule.h (100%) rename {lib => Grid}/qcd/hmc/HMC_GridModules.h (100%) rename {lib => Grid}/qcd/hmc/HMC_aggregate.h (100%) rename {lib => Grid}/qcd/hmc/UsingHMC.md (100%) rename {lib => Grid}/qcd/hmc/checkpointers/BaseCheckpointer.h (100%) rename {lib => Grid}/qcd/hmc/checkpointers/BinaryCheckpointer.h (100%) rename {lib => Grid}/qcd/hmc/checkpointers/CheckPointerModules.h (100%) rename {lib => Grid}/qcd/hmc/checkpointers/CheckPointers.h (100%) rename {lib => Grid}/qcd/hmc/checkpointers/ILDGCheckpointer.h (100%) rename {lib => Grid}/qcd/hmc/checkpointers/NerscCheckpointer.h (100%) rename {lib => Grid}/qcd/hmc/checkpointers/ScidacCheckpointer.h (100%) rename {lib => Grid}/qcd/hmc/integrators/Integrator.h (100%) rename {lib => Grid}/qcd/hmc/integrators/Integrator_algorithm.h (100%) rename {lib => Grid}/qcd/modules/ActionModules.h (100%) rename {lib => Grid}/qcd/modules/Factory.h (100%) rename {lib => Grid}/qcd/modules/FermionOperatorModules.h (100%) rename {lib => Grid}/qcd/modules/Modules.cc (100%) rename {lib => Grid}/qcd/modules/Modules.h (100%) rename {lib => Grid}/qcd/modules/ObservableModules.h (100%) rename {lib => Grid}/qcd/modules/Registration.h (100%) rename {lib => Grid}/qcd/modules/SolverModules.h (100%) rename {lib => Grid}/qcd/modules/mods.h (100%) rename {lib => Grid}/qcd/observables/hmc_observable.h (100%) rename {lib => Grid}/qcd/observables/plaquette.h (100%) rename {lib => Grid}/qcd/observables/polyakov_loop.h (100%) rename {lib => Grid}/qcd/observables/topological_charge.h (100%) rename {lib => Grid}/qcd/representations/Representations.h (100%) rename {lib => Grid}/qcd/representations/adjoint.h (100%) rename {lib => Grid}/qcd/representations/fundamental.h (100%) rename {lib => Grid}/qcd/representations/hmc_types.h (100%) rename {lib => Grid}/qcd/representations/two_index.h (100%) rename {lib => Grid}/qcd/smearing/APEsmearing.h (100%) rename {lib => Grid}/qcd/smearing/BaseSmearing.h (100%) rename {lib => Grid}/qcd/smearing/GaugeConfiguration.h (100%) rename {lib => Grid}/qcd/smearing/Smearing.h (100%) rename {lib => Grid}/qcd/smearing/StoutSmearing.h (100%) rename {lib => Grid}/qcd/smearing/WilsonFlow.h (100%) rename {lib => Grid}/qcd/spin/Dirac.h (100%) rename {lib => Grid}/qcd/spin/Gamma.cc (100%) rename {lib => Grid}/qcd/spin/Gamma.h (100%) rename {lib => Grid}/qcd/spin/Spin.h (100%) rename {lib => Grid}/qcd/spin/TwoSpinor.h (100%) rename {lib => Grid}/qcd/spin/gamma-gen/gamma-gen.nb (100%) rename {lib => Grid}/qcd/utils/CovariantCshift.h (100%) rename {lib => Grid}/qcd/utils/CovariantLaplacian.h (100%) rename {lib => Grid}/qcd/utils/GaugeFix.h (100%) rename {lib => Grid}/qcd/utils/LinalgUtils.h (100%) rename {lib => Grid}/qcd/utils/Metric.h (100%) rename {lib => Grid}/qcd/utils/SUn.h (100%) rename {lib => Grid}/qcd/utils/SUnAdjoint.h (100%) rename {lib => Grid}/qcd/utils/SUnTwoIndex.h (100%) rename {lib => Grid}/qcd/utils/ScalarObjs.h (100%) rename {lib => Grid}/qcd/utils/SpaceTimeGrid.cc (100%) rename {lib => Grid}/qcd/utils/SpaceTimeGrid.h (100%) rename {lib => Grid}/qcd/utils/Utils.h (100%) rename {lib => Grid}/qcd/utils/WilsonLoops.h (100%) rename {lib => Grid}/serialisation/BaseIO.h (100%) rename {lib => Grid}/serialisation/BinaryIO.cc (100%) rename {lib => Grid}/serialisation/BinaryIO.h (100%) rename {lib => Grid}/serialisation/Hdf5IO.cc (100%) rename {lib => Grid}/serialisation/Hdf5IO.h (100%) rename {lib => Grid}/serialisation/Hdf5Type.h (100%) rename {lib => Grid}/serialisation/JSON_IO.cc (100%) rename {lib => Grid}/serialisation/JSON_IO.h (100%) rename {lib => Grid}/serialisation/MacroMagic.h (100%) rename {lib => Grid}/serialisation/Serialisation.h (100%) rename {lib => Grid}/serialisation/TextIO.cc (100%) rename {lib => Grid}/serialisation/TextIO.h (100%) rename {lib => Grid}/serialisation/VectorUtils.h (100%) rename {lib => Grid}/serialisation/XmlIO.cc (100%) rename {lib => Grid}/serialisation/XmlIO.h (100%) rename {lib => Grid}/simd/BGQQPX.h (100%) rename {lib => Grid}/simd/Grid_avx.h (100%) rename {lib => Grid}/simd/Grid_avx512.h (100%) rename {lib => Grid}/simd/Grid_generic.h (100%) rename {lib => Grid}/simd/Grid_generic_types.h (100%) rename {lib => Grid}/simd/Grid_imci.h (100%) rename {lib => Grid}/simd/Grid_neon.h (100%) rename {lib => Grid}/simd/Grid_qpx.h (100%) rename {lib => Grid}/simd/Grid_sse4.h (100%) rename {lib => Grid}/simd/Grid_vector_types.h (100%) rename {lib => Grid}/simd/Grid_vector_unops.h (100%) rename {lib => Grid}/simd/IBM_qpx.h (100%) rename {lib => Grid}/simd/IBM_qpx_double.h (100%) rename {lib => Grid}/simd/IBM_qpx_single.h (100%) rename {lib => Grid}/simd/Intel512avx.h (100%) rename {lib => Grid}/simd/Intel512common.h (100%) rename {lib => Grid}/simd/Intel512double.h (100%) rename {lib => Grid}/simd/Intel512imci.h (100%) rename {lib => Grid}/simd/Intel512single.h (100%) rename {lib => Grid}/simd/Intel512wilson.h (100%) rename {lib => Grid}/simd/Simd.h (100%) rename {lib => Grid}/simd/l1p.h (100%) rename {lib => Grid}/sitmo_rng/README (100%) rename {lib => Grid}/sitmo_rng/sitmo_prng_engine.hpp (100%) rename {lib => Grid}/stencil/Lebesgue.cc (100%) rename {lib => Grid}/stencil/Lebesgue.h (100%) rename {lib => Grid}/stencil/SimpleCompressor.h (100%) rename {lib => Grid}/stencil/Stencil.cc (100%) rename {lib => Grid}/stencil/Stencil.h (100%) rename {lib => Grid}/tensors/Tensor_Ta.h (100%) rename {lib => Grid}/tensors/Tensor_arith.h (100%) rename {lib => Grid}/tensors/Tensor_arith_add.h (100%) rename {lib => Grid}/tensors/Tensor_arith_mac.h (100%) rename {lib => Grid}/tensors/Tensor_arith_mul.h (100%) rename {lib => Grid}/tensors/Tensor_arith_scalar.h (100%) rename {lib => Grid}/tensors/Tensor_arith_sub.h (100%) rename {lib => Grid}/tensors/Tensor_class.h (100%) rename {lib => Grid}/tensors/Tensor_determinant.h (100%) rename {lib => Grid}/tensors/Tensor_exp.h (100%) rename {lib => Grid}/tensors/Tensor_extract_merge.h (100%) rename {lib => Grid}/tensors/Tensor_index.h (100%) rename {lib => Grid}/tensors/Tensor_inner.h (100%) rename {lib => Grid}/tensors/Tensor_logical.h (100%) rename {lib => Grid}/tensors/Tensor_outer.h (100%) rename {lib => Grid}/tensors/Tensor_reality.h (100%) rename {lib => Grid}/tensors/Tensor_trace.h (100%) rename {lib => Grid}/tensors/Tensor_traits.h (100%) rename {lib => Grid}/tensors/Tensor_transpose.h (100%) rename {lib => Grid}/tensors/Tensor_unary.h (100%) rename {lib => Grid}/tensors/Tensors.h (100%) rename {lib => Grid}/threads/Threads.h (100%) rename {lib => Grid}/util/CompilerCompatible.h (100%) rename {lib => Grid}/util/Init.cc (100%) rename {lib => Grid}/util/Init.h (100%) rename {lib => Grid}/util/Lexicographic.h (100%) rename {lib => Grid}/util/Profiling.h (100%) rename {lib => Grid}/util/Sha.h (100%) rename {lib => Grid}/util/Util.h (100%) rename {lib => Grid}/util/version.cc (100%) create mode 100644 Grid/version.h rename {extras/Hadrons => Hadrons}/A2AVectors.hpp (98%) rename {extras/Hadrons => Hadrons}/Application.cc (98%) rename {extras/Hadrons => Hadrons}/Application.hpp (97%) rename {extras/Hadrons => Hadrons}/DilutedNoise.hpp (99%) rename {extras/Hadrons => Hadrons}/EigenPack.hpp (99%) rename {extras/Hadrons => Hadrons}/Environment.cc (98%) rename {extras/Hadrons => Hadrons}/Environment.hpp (99%) rename {extras/Hadrons => Hadrons}/Exceptions.cc (96%) rename {extras/Hadrons => Hadrons}/Exceptions.hpp (99%) rename {extras/Hadrons => Hadrons}/Factory.hpp (98%) rename {extras/Hadrons => Hadrons}/GeneticScheduler.hpp (99%) rename {extras/Hadrons => Hadrons}/Global.cc (99%) rename {extras/Hadrons => Hadrons}/Global.hpp (99%) rename {extras/Hadrons => Hadrons}/Graph.hpp (99%) rename {extras/Hadrons => Hadrons}/HadronsXmlRun.cc (98%) rename {extras/Hadrons => Hadrons}/Makefile.am (94%) rename {extras/Hadrons => Hadrons}/Module.cc (99%) rename {extras/Hadrons => Hadrons}/Module.hpp (99%) rename {extras/Hadrons => Hadrons}/ModuleFactory.hpp (93%) create mode 100644 Hadrons/Modules.hpp rename {extras/Hadrons => Hadrons}/Modules/MAction/DWF.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MAction/DWF.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MAction/MobiusDWF.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MAction/MobiusDWF.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MAction/ScaledDWF.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MAction/ScaledDWF.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MAction/Wilson.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MAction/Wilson.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MAction/WilsonClover.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MAction/WilsonClover.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MAction/ZMobiusDWF.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MAction/ZMobiusDWF.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/A2AMesonField.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/A2AMesonField.hpp (98%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/A2AMesonFieldKernels.hpp (99%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/Baryon.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/Baryon.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/DiscLoop.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/DiscLoop.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/Gamma3pt.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/Gamma3pt.hpp (98%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/Meson.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/Meson.hpp (98%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/WardIdentity.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/WardIdentity.hpp (98%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/WeakHamiltonian.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/WeakHamiltonianEye.cc (98%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/WeakHamiltonianEye.hpp (96%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/WeakHamiltonianNonEye.cc (98%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/WeakHamiltonianNonEye.hpp (96%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/WeakNeutral4ptDisc.cc (98%) rename {extras/Hadrons => Hadrons}/Modules/MContraction/WeakNeutral4ptDisc.hpp (96%) rename {extras/Hadrons => Hadrons}/Modules/MFermion/FreeProp.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MFermion/FreeProp.hpp (98%) rename {extras/Hadrons => Hadrons}/Modules/MFermion/GaugeProp.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MFermion/GaugeProp.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MGauge/FundtoHirep.cc (97%) rename {extras/Hadrons => Hadrons}/Modules/MGauge/FundtoHirep.hpp (95%) rename {extras/Hadrons => Hadrons}/Modules/MGauge/Random.cc (97%) rename {extras/Hadrons => Hadrons}/Modules/MGauge/Random.hpp (94%) rename {extras/Hadrons => Hadrons}/Modules/MGauge/StochEm.cc (98%) rename {extras/Hadrons => Hadrons}/Modules/MGauge/StochEm.hpp (95%) rename {extras/Hadrons => Hadrons}/Modules/MGauge/StoutSmearing.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MGauge/StoutSmearing.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MGauge/Unit.cc (97%) rename {extras/Hadrons => Hadrons}/Modules/MGauge/Unit.hpp (94%) rename {extras/Hadrons => Hadrons}/Modules/MGauge/UnitEm.cc (97%) rename {extras/Hadrons => Hadrons}/Modules/MGauge/UnitEm.hpp (95%) rename {extras/Hadrons => Hadrons}/Modules/MIO/LoadBinary.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MIO/LoadBinary.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MIO/LoadCoarseEigenPack.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MIO/LoadCoarseEigenPack.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MIO/LoadEigenPack.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MIO/LoadEigenPack.hpp (96%) rename {extras/Hadrons => Hadrons}/Modules/MIO/LoadNersc.cc (98%) rename {extras/Hadrons => Hadrons}/Modules/MIO/LoadNersc.hpp (95%) rename {extras/Hadrons => Hadrons}/Modules/MLoop/NoiseLoop.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MLoop/NoiseLoop.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalar/ChargedProp.cc (99%) rename {extras/Hadrons => Hadrons}/Modules/MScalar/ChargedProp.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MScalar/FreeProp.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalar/FreeProp.hpp (95%) rename {extras/Hadrons => Hadrons}/Modules/MScalar/Scalar.hpp (100%) rename {extras/Hadrons => Hadrons}/Modules/MScalar/ScalarVP.cc (99%) rename {extras/Hadrons => Hadrons}/Modules/MScalar/ScalarVP.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MScalar/VPCounterTerms.cc (98%) rename {extras/Hadrons => Hadrons}/Modules/MScalar/VPCounterTerms.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/Div.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/Div.hpp (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/EMT.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/EMT.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/Grad.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/Grad.hpp (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/ShiftProbe.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/ShiftProbe.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/StochFreeField.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/StochFreeField.hpp (98%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/TimeMomProbe.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/TimeMomProbe.hpp (98%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/TrKinetic.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/TrKinetic.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/TrMag.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/TrMag.hpp (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/TrPhi.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/TrPhi.hpp (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/TransProj.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/TransProj.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/TwoPoint.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/TwoPoint.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/TwoPointNPR.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/TwoPointNPR.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MScalarSUN/Utils.hpp (98%) rename {extras/Hadrons => Hadrons}/Modules/MSink/Point.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MSink/Point.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MSink/Smear.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MSink/Smear.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MSolver/A2AVectors.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MSolver/A2AVectors.hpp (96%) rename {extras/Hadrons => Hadrons}/Modules/MSolver/LocalCoherenceLanczos.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MSolver/LocalCoherenceLanczos.hpp (98%) rename {extras/Hadrons => Hadrons}/Modules/MSolver/RBPrecCG.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MSolver/RBPrecCG.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MSource/Point.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MSource/Point.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MSource/SeqConserved.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MSource/SeqConserved.hpp (98%) rename {extras/Hadrons => Hadrons}/Modules/MSource/SeqGamma.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MSource/SeqGamma.hpp (98%) rename {extras/Hadrons => Hadrons}/Modules/MSource/Wall.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MSource/Wall.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MSource/Z2.cc (96%) rename {extras/Hadrons => Hadrons}/Modules/MSource/Z2.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MUtilities/RandomVectors.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MUtilities/RandomVectors.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/MUtilities/TestSeqConserved.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MUtilities/TestSeqConserved.hpp (98%) rename {extras/Hadrons => Hadrons}/Modules/MUtilities/TestSeqGamma.cc (95%) rename {extras/Hadrons => Hadrons}/Modules/MUtilities/TestSeqGamma.hpp (97%) rename {extras/Hadrons => Hadrons}/Modules/templates/Module_in_NS.cc.template (100%) rename {extras/Hadrons => Hadrons}/Modules/templates/Module_in_NS.hpp.template (100%) rename {extras/Hadrons => Hadrons}/Modules/templates/Module_tmp_in_NS.cc.template (100%) rename {extras/Hadrons => Hadrons}/Modules/templates/Module_tmp_in_NS.hpp.template (100%) rename {extras/Hadrons => Hadrons}/Solver.hpp (98%) rename {extras/Hadrons => Hadrons}/VirtualMachine.cc (99%) rename {extras/Hadrons => Hadrons}/VirtualMachine.hpp (98%) rename {extras/Hadrons => Hadrons}/add_module.sh (100%) rename {extras/Hadrons => Hadrons}/add_module_template.sh (100%) rename {extras/Hadrons => Hadrons}/make_module_inst.sh (100%) rename {extras/Hadrons => Hadrons}/make_module_list.sh (100%) rename {extras/Hadrons => Hadrons}/modules.inc (100%) delete mode 100644 extras/Hadrons/Modules.hpp delete mode 100644 extras/Makefile.am delete mode 100644 extras/qed-fvol/Global.cc delete mode 100644 extras/qed-fvol/Global.hpp delete mode 100644 extras/qed-fvol/Makefile.am delete mode 100644 extras/qed-fvol/WilsonLoops.h delete mode 100644 extras/qed-fvol/qed-fvol.cc delete mode 100644 lib/.dirstamp delete mode 120000 lib/Hadrons delete mode 100644 lib/qcd/hmc/.dirstamp delete mode 100644 lib/qcd/hmc/integrators/.dirstamp delete mode 100644 lib/simd/.dirstamp diff --git a/lib/DisableWarnings.h b/Grid/DisableWarnings.h similarity index 100% rename from lib/DisableWarnings.h rename to Grid/DisableWarnings.h diff --git a/lib/Grid.h b/Grid/Grid.h similarity index 100% rename from lib/Grid.h rename to Grid/Grid.h diff --git a/lib/GridCore.h b/Grid/GridCore.h similarity index 100% rename from lib/GridCore.h rename to Grid/GridCore.h diff --git a/lib/GridQCDcore.h b/Grid/GridQCDcore.h similarity index 100% rename from lib/GridQCDcore.h rename to Grid/GridQCDcore.h diff --git a/lib/GridStd.h b/Grid/GridStd.h similarity index 100% rename from lib/GridStd.h rename to Grid/GridStd.h diff --git a/lib/Grid_Eigen_Dense.h b/Grid/Grid_Eigen_Dense.h similarity index 100% rename from lib/Grid_Eigen_Dense.h rename to Grid/Grid_Eigen_Dense.h diff --git a/lib/Makefile.am b/Grid/Makefile.am similarity index 94% rename from lib/Makefile.am rename to Grid/Makefile.am index 6c94e2d6..5cd76b40 100644 --- a/lib/Makefile.am +++ b/Grid/Makefile.am @@ -33,5 +33,5 @@ CCFILES += $(extra_sources) HFILES += $(extra_headers) libGrid_a_SOURCES = $(CCFILES) -libGrid_adir = $(pkgincludedir) +libGrid_adir = $(includedir)/Grid nobase_dist_pkginclude_HEADERS = $(HFILES) $(eigen_files) $(eigen_unsupp_files) Config.h diff --git a/lib/algorithms/Algorithms.h b/Grid/algorithms/Algorithms.h similarity index 100% rename from lib/algorithms/Algorithms.h rename to Grid/algorithms/Algorithms.h diff --git a/lib/algorithms/CoarsenedMatrix.h b/Grid/algorithms/CoarsenedMatrix.h similarity index 100% rename from lib/algorithms/CoarsenedMatrix.h rename to Grid/algorithms/CoarsenedMatrix.h diff --git a/lib/algorithms/FFT.h b/Grid/algorithms/FFT.h similarity index 100% rename from lib/algorithms/FFT.h rename to Grid/algorithms/FFT.h diff --git a/lib/algorithms/LinearOperator.h b/Grid/algorithms/LinearOperator.h similarity index 100% rename from lib/algorithms/LinearOperator.h rename to Grid/algorithms/LinearOperator.h diff --git a/lib/algorithms/Preconditioner.h b/Grid/algorithms/Preconditioner.h similarity index 100% rename from lib/algorithms/Preconditioner.h rename to Grid/algorithms/Preconditioner.h diff --git a/lib/algorithms/SparseMatrix.h b/Grid/algorithms/SparseMatrix.h similarity index 100% rename from lib/algorithms/SparseMatrix.h rename to Grid/algorithms/SparseMatrix.h diff --git a/lib/algorithms/approx/Chebyshev.h b/Grid/algorithms/approx/Chebyshev.h similarity index 100% rename from lib/algorithms/approx/Chebyshev.h rename to Grid/algorithms/approx/Chebyshev.h diff --git a/lib/algorithms/approx/Forecast.h b/Grid/algorithms/approx/Forecast.h similarity index 100% rename from lib/algorithms/approx/Forecast.h rename to Grid/algorithms/approx/Forecast.h diff --git a/lib/algorithms/approx/LICENSE b/Grid/algorithms/approx/LICENSE similarity index 100% rename from lib/algorithms/approx/LICENSE rename to Grid/algorithms/approx/LICENSE diff --git a/lib/algorithms/approx/MultiShiftFunction.cc b/Grid/algorithms/approx/MultiShiftFunction.cc similarity index 100% rename from lib/algorithms/approx/MultiShiftFunction.cc rename to Grid/algorithms/approx/MultiShiftFunction.cc diff --git a/lib/algorithms/approx/MultiShiftFunction.h b/Grid/algorithms/approx/MultiShiftFunction.h similarity index 100% rename from lib/algorithms/approx/MultiShiftFunction.h rename to Grid/algorithms/approx/MultiShiftFunction.h diff --git a/lib/algorithms/approx/README b/Grid/algorithms/approx/README similarity index 100% rename from lib/algorithms/approx/README rename to Grid/algorithms/approx/README diff --git a/lib/algorithms/approx/Remez.cc b/Grid/algorithms/approx/Remez.cc similarity index 100% rename from lib/algorithms/approx/Remez.cc rename to Grid/algorithms/approx/Remez.cc diff --git a/lib/algorithms/approx/Remez.h b/Grid/algorithms/approx/Remez.h similarity index 100% rename from lib/algorithms/approx/Remez.h rename to Grid/algorithms/approx/Remez.h diff --git a/lib/algorithms/approx/Zolotarev.cc b/Grid/algorithms/approx/Zolotarev.cc similarity index 100% rename from lib/algorithms/approx/Zolotarev.cc rename to Grid/algorithms/approx/Zolotarev.cc diff --git a/lib/algorithms/approx/Zolotarev.h b/Grid/algorithms/approx/Zolotarev.h similarity index 100% rename from lib/algorithms/approx/Zolotarev.h rename to Grid/algorithms/approx/Zolotarev.h diff --git a/lib/algorithms/approx/bigfloat.h b/Grid/algorithms/approx/bigfloat.h similarity index 100% rename from lib/algorithms/approx/bigfloat.h rename to Grid/algorithms/approx/bigfloat.h diff --git a/lib/algorithms/approx/bigfloat_double.h b/Grid/algorithms/approx/bigfloat_double.h similarity index 100% rename from lib/algorithms/approx/bigfloat_double.h rename to Grid/algorithms/approx/bigfloat_double.h diff --git a/lib/algorithms/iterative/AdefGeneric.h b/Grid/algorithms/iterative/AdefGeneric.h similarity index 100% rename from lib/algorithms/iterative/AdefGeneric.h rename to Grid/algorithms/iterative/AdefGeneric.h diff --git a/lib/algorithms/iterative/BlockConjugateGradient.h b/Grid/algorithms/iterative/BlockConjugateGradient.h similarity index 100% rename from lib/algorithms/iterative/BlockConjugateGradient.h rename to Grid/algorithms/iterative/BlockConjugateGradient.h diff --git a/lib/algorithms/iterative/ConjugateGradient.h b/Grid/algorithms/iterative/ConjugateGradient.h similarity index 100% rename from lib/algorithms/iterative/ConjugateGradient.h rename to Grid/algorithms/iterative/ConjugateGradient.h diff --git a/lib/algorithms/iterative/ConjugateGradientMixedPrec.h b/Grid/algorithms/iterative/ConjugateGradientMixedPrec.h similarity index 100% rename from lib/algorithms/iterative/ConjugateGradientMixedPrec.h rename to Grid/algorithms/iterative/ConjugateGradientMixedPrec.h diff --git a/lib/algorithms/iterative/ConjugateGradientMultiShift.h b/Grid/algorithms/iterative/ConjugateGradientMultiShift.h similarity index 100% rename from lib/algorithms/iterative/ConjugateGradientMultiShift.h rename to Grid/algorithms/iterative/ConjugateGradientMultiShift.h diff --git a/lib/algorithms/iterative/ConjugateGradientReliableUpdate.h b/Grid/algorithms/iterative/ConjugateGradientReliableUpdate.h similarity index 100% rename from lib/algorithms/iterative/ConjugateGradientReliableUpdate.h rename to Grid/algorithms/iterative/ConjugateGradientReliableUpdate.h diff --git a/lib/algorithms/iterative/ConjugateResidual.h b/Grid/algorithms/iterative/ConjugateResidual.h similarity index 100% rename from lib/algorithms/iterative/ConjugateResidual.h rename to Grid/algorithms/iterative/ConjugateResidual.h diff --git a/lib/algorithms/iterative/Deflation.h b/Grid/algorithms/iterative/Deflation.h similarity index 100% rename from lib/algorithms/iterative/Deflation.h rename to Grid/algorithms/iterative/Deflation.h diff --git a/lib/algorithms/iterative/ImplicitlyRestartedLanczos.h b/Grid/algorithms/iterative/ImplicitlyRestartedLanczos.h similarity index 100% rename from lib/algorithms/iterative/ImplicitlyRestartedLanczos.h rename to Grid/algorithms/iterative/ImplicitlyRestartedLanczos.h diff --git a/lib/algorithms/iterative/LocalCoherenceLanczos.h b/Grid/algorithms/iterative/LocalCoherenceLanczos.h similarity index 100% rename from lib/algorithms/iterative/LocalCoherenceLanczos.h rename to Grid/algorithms/iterative/LocalCoherenceLanczos.h diff --git a/lib/algorithms/iterative/NormalEquations.h b/Grid/algorithms/iterative/NormalEquations.h similarity index 100% rename from lib/algorithms/iterative/NormalEquations.h rename to Grid/algorithms/iterative/NormalEquations.h diff --git a/lib/algorithms/iterative/PrecConjugateResidual.h b/Grid/algorithms/iterative/PrecConjugateResidual.h similarity index 100% rename from lib/algorithms/iterative/PrecConjugateResidual.h rename to Grid/algorithms/iterative/PrecConjugateResidual.h diff --git a/lib/algorithms/iterative/PrecGeneralisedConjugateResidual.h b/Grid/algorithms/iterative/PrecGeneralisedConjugateResidual.h similarity index 100% rename from lib/algorithms/iterative/PrecGeneralisedConjugateResidual.h rename to Grid/algorithms/iterative/PrecGeneralisedConjugateResidual.h diff --git a/lib/algorithms/iterative/SchurRedBlack.h b/Grid/algorithms/iterative/SchurRedBlack.h similarity index 100% rename from lib/algorithms/iterative/SchurRedBlack.h rename to Grid/algorithms/iterative/SchurRedBlack.h diff --git a/lib/allocator/AlignedAllocator.cc b/Grid/allocator/AlignedAllocator.cc similarity index 100% rename from lib/allocator/AlignedAllocator.cc rename to Grid/allocator/AlignedAllocator.cc diff --git a/lib/allocator/AlignedAllocator.h b/Grid/allocator/AlignedAllocator.h similarity index 100% rename from lib/allocator/AlignedAllocator.h rename to Grid/allocator/AlignedAllocator.h diff --git a/lib/cartesian/Cartesian.h b/Grid/cartesian/Cartesian.h similarity index 100% rename from lib/cartesian/Cartesian.h rename to Grid/cartesian/Cartesian.h diff --git a/lib/cartesian/Cartesian_base.h b/Grid/cartesian/Cartesian_base.h similarity index 100% rename from lib/cartesian/Cartesian_base.h rename to Grid/cartesian/Cartesian_base.h diff --git a/lib/cartesian/Cartesian_full.h b/Grid/cartesian/Cartesian_full.h similarity index 100% rename from lib/cartesian/Cartesian_full.h rename to Grid/cartesian/Cartesian_full.h diff --git a/lib/cartesian/Cartesian_red_black.h b/Grid/cartesian/Cartesian_red_black.h similarity index 100% rename from lib/cartesian/Cartesian_red_black.h rename to Grid/cartesian/Cartesian_red_black.h diff --git a/lib/communicator/Communicator.h b/Grid/communicator/Communicator.h similarity index 100% rename from lib/communicator/Communicator.h rename to Grid/communicator/Communicator.h diff --git a/lib/communicator/Communicator_base.cc b/Grid/communicator/Communicator_base.cc similarity index 100% rename from lib/communicator/Communicator_base.cc rename to Grid/communicator/Communicator_base.cc diff --git a/lib/communicator/Communicator_base.h b/Grid/communicator/Communicator_base.h similarity index 100% rename from lib/communicator/Communicator_base.h rename to Grid/communicator/Communicator_base.h diff --git a/lib/communicator/Communicator_mpi3.cc b/Grid/communicator/Communicator_mpi3.cc similarity index 100% rename from lib/communicator/Communicator_mpi3.cc rename to Grid/communicator/Communicator_mpi3.cc diff --git a/lib/communicator/Communicator_none.cc b/Grid/communicator/Communicator_none.cc similarity index 100% rename from lib/communicator/Communicator_none.cc rename to Grid/communicator/Communicator_none.cc diff --git a/lib/communicator/SharedMemory.cc b/Grid/communicator/SharedMemory.cc similarity index 100% rename from lib/communicator/SharedMemory.cc rename to Grid/communicator/SharedMemory.cc diff --git a/lib/communicator/SharedMemory.h b/Grid/communicator/SharedMemory.h similarity index 100% rename from lib/communicator/SharedMemory.h rename to Grid/communicator/SharedMemory.h diff --git a/lib/communicator/SharedMemoryMPI.cc b/Grid/communicator/SharedMemoryMPI.cc similarity index 100% rename from lib/communicator/SharedMemoryMPI.cc rename to Grid/communicator/SharedMemoryMPI.cc diff --git a/lib/communicator/SharedMemoryNone.cc b/Grid/communicator/SharedMemoryNone.cc similarity index 100% rename from lib/communicator/SharedMemoryNone.cc rename to Grid/communicator/SharedMemoryNone.cc diff --git a/lib/cshift/Cshift.h b/Grid/cshift/Cshift.h similarity index 100% rename from lib/cshift/Cshift.h rename to Grid/cshift/Cshift.h diff --git a/lib/cshift/Cshift_common.h b/Grid/cshift/Cshift_common.h similarity index 100% rename from lib/cshift/Cshift_common.h rename to Grid/cshift/Cshift_common.h diff --git a/lib/cshift/Cshift_mpi.h b/Grid/cshift/Cshift_mpi.h similarity index 100% rename from lib/cshift/Cshift_mpi.h rename to Grid/cshift/Cshift_mpi.h diff --git a/lib/cshift/Cshift_none.h b/Grid/cshift/Cshift_none.h similarity index 100% rename from lib/cshift/Cshift_none.h rename to Grid/cshift/Cshift_none.h diff --git a/lib/json/json.hpp b/Grid/json/json.hpp similarity index 100% rename from lib/json/json.hpp rename to Grid/json/json.hpp diff --git a/lib/lattice/Lattice.h b/Grid/lattice/Lattice.h similarity index 100% rename from lib/lattice/Lattice.h rename to Grid/lattice/Lattice.h diff --git a/lib/lattice/Lattice_ET.h b/Grid/lattice/Lattice_ET.h similarity index 100% rename from lib/lattice/Lattice_ET.h rename to Grid/lattice/Lattice_ET.h diff --git a/lib/lattice/Lattice_arith.h b/Grid/lattice/Lattice_arith.h similarity index 100% rename from lib/lattice/Lattice_arith.h rename to Grid/lattice/Lattice_arith.h diff --git a/lib/lattice/Lattice_base.h b/Grid/lattice/Lattice_base.h similarity index 100% rename from lib/lattice/Lattice_base.h rename to Grid/lattice/Lattice_base.h diff --git a/lib/lattice/Lattice_comparison.h b/Grid/lattice/Lattice_comparison.h similarity index 100% rename from lib/lattice/Lattice_comparison.h rename to Grid/lattice/Lattice_comparison.h diff --git a/lib/lattice/Lattice_comparison_utils.h b/Grid/lattice/Lattice_comparison_utils.h similarity index 100% rename from lib/lattice/Lattice_comparison_utils.h rename to Grid/lattice/Lattice_comparison_utils.h diff --git a/lib/lattice/Lattice_conformable.h b/Grid/lattice/Lattice_conformable.h similarity index 100% rename from lib/lattice/Lattice_conformable.h rename to Grid/lattice/Lattice_conformable.h diff --git a/lib/lattice/Lattice_coordinate.h b/Grid/lattice/Lattice_coordinate.h similarity index 100% rename from lib/lattice/Lattice_coordinate.h rename to Grid/lattice/Lattice_coordinate.h diff --git a/lib/lattice/Lattice_local.h b/Grid/lattice/Lattice_local.h similarity index 100% rename from lib/lattice/Lattice_local.h rename to Grid/lattice/Lattice_local.h diff --git a/lib/lattice/Lattice_overload.h b/Grid/lattice/Lattice_overload.h similarity index 100% rename from lib/lattice/Lattice_overload.h rename to Grid/lattice/Lattice_overload.h diff --git a/lib/lattice/Lattice_peekpoke.h b/Grid/lattice/Lattice_peekpoke.h similarity index 100% rename from lib/lattice/Lattice_peekpoke.h rename to Grid/lattice/Lattice_peekpoke.h diff --git a/lib/lattice/Lattice_reality.h b/Grid/lattice/Lattice_reality.h similarity index 100% rename from lib/lattice/Lattice_reality.h rename to Grid/lattice/Lattice_reality.h diff --git a/lib/lattice/Lattice_reduction.h b/Grid/lattice/Lattice_reduction.h similarity index 100% rename from lib/lattice/Lattice_reduction.h rename to Grid/lattice/Lattice_reduction.h diff --git a/lib/lattice/Lattice_rng.h b/Grid/lattice/Lattice_rng.h similarity index 100% rename from lib/lattice/Lattice_rng.h rename to Grid/lattice/Lattice_rng.h diff --git a/lib/lattice/Lattice_trace.h b/Grid/lattice/Lattice_trace.h similarity index 100% rename from lib/lattice/Lattice_trace.h rename to Grid/lattice/Lattice_trace.h diff --git a/lib/lattice/Lattice_transfer.h b/Grid/lattice/Lattice_transfer.h similarity index 100% rename from lib/lattice/Lattice_transfer.h rename to Grid/lattice/Lattice_transfer.h diff --git a/lib/lattice/Lattice_transpose.h b/Grid/lattice/Lattice_transpose.h similarity index 100% rename from lib/lattice/Lattice_transpose.h rename to Grid/lattice/Lattice_transpose.h diff --git a/lib/lattice/Lattice_unary.h b/Grid/lattice/Lattice_unary.h similarity index 100% rename from lib/lattice/Lattice_unary.h rename to Grid/lattice/Lattice_unary.h diff --git a/lib/lattice/Lattice_where.h b/Grid/lattice/Lattice_where.h similarity index 100% rename from lib/lattice/Lattice_where.h rename to Grid/lattice/Lattice_where.h diff --git a/lib/log/Log.cc b/Grid/log/Log.cc similarity index 100% rename from lib/log/Log.cc rename to Grid/log/Log.cc diff --git a/lib/log/Log.h b/Grid/log/Log.h similarity index 100% rename from lib/log/Log.h rename to Grid/log/Log.h diff --git a/lib/parallelIO/BinaryIO.h b/Grid/parallelIO/BinaryIO.h similarity index 100% rename from lib/parallelIO/BinaryIO.h rename to Grid/parallelIO/BinaryIO.h diff --git a/lib/parallelIO/IldgIO.h b/Grid/parallelIO/IldgIO.h similarity index 100% rename from lib/parallelIO/IldgIO.h rename to Grid/parallelIO/IldgIO.h diff --git a/lib/parallelIO/IldgIOtypes.h b/Grid/parallelIO/IldgIOtypes.h similarity index 100% rename from lib/parallelIO/IldgIOtypes.h rename to Grid/parallelIO/IldgIOtypes.h diff --git a/lib/parallelIO/MetaData.h b/Grid/parallelIO/MetaData.h similarity index 100% rename from lib/parallelIO/MetaData.h rename to Grid/parallelIO/MetaData.h diff --git a/lib/parallelIO/NerscIO.h b/Grid/parallelIO/NerscIO.h similarity index 100% rename from lib/parallelIO/NerscIO.h rename to Grid/parallelIO/NerscIO.h diff --git a/lib/perfmon/PerfCount.cc b/Grid/perfmon/PerfCount.cc similarity index 100% rename from lib/perfmon/PerfCount.cc rename to Grid/perfmon/PerfCount.cc diff --git a/lib/perfmon/PerfCount.h b/Grid/perfmon/PerfCount.h similarity index 100% rename from lib/perfmon/PerfCount.h rename to Grid/perfmon/PerfCount.h diff --git a/lib/perfmon/Stat.cc b/Grid/perfmon/Stat.cc similarity index 100% rename from lib/perfmon/Stat.cc rename to Grid/perfmon/Stat.cc diff --git a/lib/perfmon/Stat.h b/Grid/perfmon/Stat.h similarity index 100% rename from lib/perfmon/Stat.h rename to Grid/perfmon/Stat.h diff --git a/lib/perfmon/Timer.h b/Grid/perfmon/Timer.h similarity index 100% rename from lib/perfmon/Timer.h rename to Grid/perfmon/Timer.h diff --git a/lib/pugixml/pugiconfig.hpp b/Grid/pugixml/pugiconfig.hpp similarity index 100% rename from lib/pugixml/pugiconfig.hpp rename to Grid/pugixml/pugiconfig.hpp diff --git a/lib/pugixml/pugixml.cc b/Grid/pugixml/pugixml.cc similarity index 100% rename from lib/pugixml/pugixml.cc rename to Grid/pugixml/pugixml.cc diff --git a/lib/pugixml/pugixml.h b/Grid/pugixml/pugixml.h similarity index 100% rename from lib/pugixml/pugixml.h rename to Grid/pugixml/pugixml.h diff --git a/lib/pugixml/readme.txt b/Grid/pugixml/readme.txt similarity index 100% rename from lib/pugixml/readme.txt rename to Grid/pugixml/readme.txt diff --git a/lib/qcd/LatticeTheories.h b/Grid/qcd/LatticeTheories.h similarity index 100% rename from lib/qcd/LatticeTheories.h rename to Grid/qcd/LatticeTheories.h diff --git a/lib/qcd/QCD.h b/Grid/qcd/QCD.h similarity index 100% rename from lib/qcd/QCD.h rename to Grid/qcd/QCD.h diff --git a/lib/qcd/action/Action.h b/Grid/qcd/action/Action.h similarity index 100% rename from lib/qcd/action/Action.h rename to Grid/qcd/action/Action.h diff --git a/lib/qcd/action/ActionBase.h b/Grid/qcd/action/ActionBase.h similarity index 100% rename from lib/qcd/action/ActionBase.h rename to Grid/qcd/action/ActionBase.h diff --git a/lib/qcd/action/ActionCore.h b/Grid/qcd/action/ActionCore.h similarity index 100% rename from lib/qcd/action/ActionCore.h rename to Grid/qcd/action/ActionCore.h diff --git a/lib/qcd/action/ActionParams.h b/Grid/qcd/action/ActionParams.h similarity index 100% rename from lib/qcd/action/ActionParams.h rename to Grid/qcd/action/ActionParams.h diff --git a/lib/qcd/action/ActionSet.h b/Grid/qcd/action/ActionSet.h similarity index 100% rename from lib/qcd/action/ActionSet.h rename to Grid/qcd/action/ActionSet.h diff --git a/lib/qcd/action/fermion/AbstractEOFAFermion.h b/Grid/qcd/action/fermion/AbstractEOFAFermion.h similarity index 100% rename from lib/qcd/action/fermion/AbstractEOFAFermion.h rename to Grid/qcd/action/fermion/AbstractEOFAFermion.h diff --git a/lib/qcd/action/fermion/CayleyFermion5D.cc b/Grid/qcd/action/fermion/CayleyFermion5D.cc similarity index 100% rename from lib/qcd/action/fermion/CayleyFermion5D.cc rename to Grid/qcd/action/fermion/CayleyFermion5D.cc diff --git a/lib/qcd/action/fermion/CayleyFermion5D.h b/Grid/qcd/action/fermion/CayleyFermion5D.h similarity index 100% rename from lib/qcd/action/fermion/CayleyFermion5D.h rename to Grid/qcd/action/fermion/CayleyFermion5D.h diff --git a/lib/qcd/action/fermion/CayleyFermion5Dcache.cc b/Grid/qcd/action/fermion/CayleyFermion5Dcache.cc similarity index 100% rename from lib/qcd/action/fermion/CayleyFermion5Dcache.cc rename to Grid/qcd/action/fermion/CayleyFermion5Dcache.cc diff --git a/lib/qcd/action/fermion/CayleyFermion5Ddense.cc b/Grid/qcd/action/fermion/CayleyFermion5Ddense.cc similarity index 100% rename from lib/qcd/action/fermion/CayleyFermion5Ddense.cc rename to Grid/qcd/action/fermion/CayleyFermion5Ddense.cc diff --git a/lib/qcd/action/fermion/CayleyFermion5Dssp.cc b/Grid/qcd/action/fermion/CayleyFermion5Dssp.cc similarity index 100% rename from lib/qcd/action/fermion/CayleyFermion5Dssp.cc rename to Grid/qcd/action/fermion/CayleyFermion5Dssp.cc diff --git a/lib/qcd/action/fermion/CayleyFermion5Dvec.cc b/Grid/qcd/action/fermion/CayleyFermion5Dvec.cc similarity index 100% rename from lib/qcd/action/fermion/CayleyFermion5Dvec.cc rename to Grid/qcd/action/fermion/CayleyFermion5Dvec.cc diff --git a/lib/qcd/action/fermion/ContinuedFractionFermion5D.cc b/Grid/qcd/action/fermion/ContinuedFractionFermion5D.cc similarity index 100% rename from lib/qcd/action/fermion/ContinuedFractionFermion5D.cc rename to Grid/qcd/action/fermion/ContinuedFractionFermion5D.cc diff --git a/lib/qcd/action/fermion/ContinuedFractionFermion5D.h b/Grid/qcd/action/fermion/ContinuedFractionFermion5D.h similarity index 100% rename from lib/qcd/action/fermion/ContinuedFractionFermion5D.h rename to Grid/qcd/action/fermion/ContinuedFractionFermion5D.h diff --git a/lib/qcd/action/fermion/DomainWallEOFAFermion.cc b/Grid/qcd/action/fermion/DomainWallEOFAFermion.cc similarity index 100% rename from lib/qcd/action/fermion/DomainWallEOFAFermion.cc rename to Grid/qcd/action/fermion/DomainWallEOFAFermion.cc diff --git a/lib/qcd/action/fermion/DomainWallEOFAFermion.h b/Grid/qcd/action/fermion/DomainWallEOFAFermion.h similarity index 100% rename from lib/qcd/action/fermion/DomainWallEOFAFermion.h rename to Grid/qcd/action/fermion/DomainWallEOFAFermion.h diff --git a/lib/qcd/action/fermion/DomainWallEOFAFermioncache.cc b/Grid/qcd/action/fermion/DomainWallEOFAFermioncache.cc similarity index 100% rename from lib/qcd/action/fermion/DomainWallEOFAFermioncache.cc rename to Grid/qcd/action/fermion/DomainWallEOFAFermioncache.cc diff --git a/lib/qcd/action/fermion/DomainWallEOFAFermiondense.cc b/Grid/qcd/action/fermion/DomainWallEOFAFermiondense.cc similarity index 100% rename from lib/qcd/action/fermion/DomainWallEOFAFermiondense.cc rename to Grid/qcd/action/fermion/DomainWallEOFAFermiondense.cc diff --git a/lib/qcd/action/fermion/DomainWallEOFAFermionssp.cc b/Grid/qcd/action/fermion/DomainWallEOFAFermionssp.cc similarity index 100% rename from lib/qcd/action/fermion/DomainWallEOFAFermionssp.cc rename to Grid/qcd/action/fermion/DomainWallEOFAFermionssp.cc diff --git a/lib/qcd/action/fermion/DomainWallEOFAFermionvec.cc b/Grid/qcd/action/fermion/DomainWallEOFAFermionvec.cc similarity index 100% rename from lib/qcd/action/fermion/DomainWallEOFAFermionvec.cc rename to Grid/qcd/action/fermion/DomainWallEOFAFermionvec.cc diff --git a/lib/qcd/action/fermion/DomainWallFermion.h b/Grid/qcd/action/fermion/DomainWallFermion.h similarity index 100% rename from lib/qcd/action/fermion/DomainWallFermion.h rename to Grid/qcd/action/fermion/DomainWallFermion.h diff --git a/lib/qcd/action/fermion/Fermion.h b/Grid/qcd/action/fermion/Fermion.h similarity index 100% rename from lib/qcd/action/fermion/Fermion.h rename to Grid/qcd/action/fermion/Fermion.h diff --git a/lib/qcd/action/fermion/FermionCore.h b/Grid/qcd/action/fermion/FermionCore.h similarity index 100% rename from lib/qcd/action/fermion/FermionCore.h rename to Grid/qcd/action/fermion/FermionCore.h diff --git a/lib/qcd/action/fermion/FermionOperator.h b/Grid/qcd/action/fermion/FermionOperator.h similarity index 100% rename from lib/qcd/action/fermion/FermionOperator.h rename to Grid/qcd/action/fermion/FermionOperator.h diff --git a/lib/qcd/action/fermion/FermionOperatorImpl.h b/Grid/qcd/action/fermion/FermionOperatorImpl.h similarity index 100% rename from lib/qcd/action/fermion/FermionOperatorImpl.h rename to Grid/qcd/action/fermion/FermionOperatorImpl.h diff --git a/lib/qcd/action/fermion/ImprovedStaggeredFermion.cc b/Grid/qcd/action/fermion/ImprovedStaggeredFermion.cc similarity index 100% rename from lib/qcd/action/fermion/ImprovedStaggeredFermion.cc rename to Grid/qcd/action/fermion/ImprovedStaggeredFermion.cc diff --git a/lib/qcd/action/fermion/ImprovedStaggeredFermion.h b/Grid/qcd/action/fermion/ImprovedStaggeredFermion.h similarity index 100% rename from lib/qcd/action/fermion/ImprovedStaggeredFermion.h rename to Grid/qcd/action/fermion/ImprovedStaggeredFermion.h diff --git a/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.cc b/Grid/qcd/action/fermion/ImprovedStaggeredFermion5D.cc similarity index 100% rename from lib/qcd/action/fermion/ImprovedStaggeredFermion5D.cc rename to Grid/qcd/action/fermion/ImprovedStaggeredFermion5D.cc diff --git a/lib/qcd/action/fermion/ImprovedStaggeredFermion5D.h b/Grid/qcd/action/fermion/ImprovedStaggeredFermion5D.h similarity index 100% rename from lib/qcd/action/fermion/ImprovedStaggeredFermion5D.h rename to Grid/qcd/action/fermion/ImprovedStaggeredFermion5D.h diff --git a/lib/qcd/action/fermion/MobiusEOFAFermion.cc b/Grid/qcd/action/fermion/MobiusEOFAFermion.cc similarity index 100% rename from lib/qcd/action/fermion/MobiusEOFAFermion.cc rename to Grid/qcd/action/fermion/MobiusEOFAFermion.cc diff --git a/lib/qcd/action/fermion/MobiusEOFAFermion.h b/Grid/qcd/action/fermion/MobiusEOFAFermion.h similarity index 100% rename from lib/qcd/action/fermion/MobiusEOFAFermion.h rename to Grid/qcd/action/fermion/MobiusEOFAFermion.h diff --git a/lib/qcd/action/fermion/MobiusEOFAFermioncache.cc b/Grid/qcd/action/fermion/MobiusEOFAFermioncache.cc similarity index 100% rename from lib/qcd/action/fermion/MobiusEOFAFermioncache.cc rename to Grid/qcd/action/fermion/MobiusEOFAFermioncache.cc diff --git a/lib/qcd/action/fermion/MobiusEOFAFermiondense.cc b/Grid/qcd/action/fermion/MobiusEOFAFermiondense.cc similarity index 100% rename from lib/qcd/action/fermion/MobiusEOFAFermiondense.cc rename to Grid/qcd/action/fermion/MobiusEOFAFermiondense.cc diff --git a/lib/qcd/action/fermion/MobiusEOFAFermionssp.cc b/Grid/qcd/action/fermion/MobiusEOFAFermionssp.cc similarity index 100% rename from lib/qcd/action/fermion/MobiusEOFAFermionssp.cc rename to Grid/qcd/action/fermion/MobiusEOFAFermionssp.cc diff --git a/lib/qcd/action/fermion/MobiusEOFAFermionvec.cc b/Grid/qcd/action/fermion/MobiusEOFAFermionvec.cc similarity index 100% rename from lib/qcd/action/fermion/MobiusEOFAFermionvec.cc rename to Grid/qcd/action/fermion/MobiusEOFAFermionvec.cc diff --git a/lib/qcd/action/fermion/MobiusFermion.h b/Grid/qcd/action/fermion/MobiusFermion.h similarity index 100% rename from lib/qcd/action/fermion/MobiusFermion.h rename to Grid/qcd/action/fermion/MobiusFermion.h diff --git a/lib/qcd/action/fermion/MobiusZolotarevFermion.h b/Grid/qcd/action/fermion/MobiusZolotarevFermion.h similarity index 100% rename from lib/qcd/action/fermion/MobiusZolotarevFermion.h rename to Grid/qcd/action/fermion/MobiusZolotarevFermion.h diff --git a/lib/qcd/action/fermion/OverlapWilsonCayleyTanhFermion.h b/Grid/qcd/action/fermion/OverlapWilsonCayleyTanhFermion.h similarity index 100% rename from lib/qcd/action/fermion/OverlapWilsonCayleyTanhFermion.h rename to Grid/qcd/action/fermion/OverlapWilsonCayleyTanhFermion.h diff --git a/lib/qcd/action/fermion/OverlapWilsonCayleyZolotarevFermion.h b/Grid/qcd/action/fermion/OverlapWilsonCayleyZolotarevFermion.h similarity index 100% rename from lib/qcd/action/fermion/OverlapWilsonCayleyZolotarevFermion.h rename to Grid/qcd/action/fermion/OverlapWilsonCayleyZolotarevFermion.h diff --git a/lib/qcd/action/fermion/OverlapWilsonContfracTanhFermion.h b/Grid/qcd/action/fermion/OverlapWilsonContfracTanhFermion.h similarity index 100% rename from lib/qcd/action/fermion/OverlapWilsonContfracTanhFermion.h rename to Grid/qcd/action/fermion/OverlapWilsonContfracTanhFermion.h diff --git a/lib/qcd/action/fermion/OverlapWilsonContfracZolotarevFermion.h b/Grid/qcd/action/fermion/OverlapWilsonContfracZolotarevFermion.h similarity index 100% rename from lib/qcd/action/fermion/OverlapWilsonContfracZolotarevFermion.h rename to Grid/qcd/action/fermion/OverlapWilsonContfracZolotarevFermion.h diff --git a/lib/qcd/action/fermion/OverlapWilsonPartialFractionTanhFermion.h b/Grid/qcd/action/fermion/OverlapWilsonPartialFractionTanhFermion.h similarity index 100% rename from lib/qcd/action/fermion/OverlapWilsonPartialFractionTanhFermion.h rename to Grid/qcd/action/fermion/OverlapWilsonPartialFractionTanhFermion.h diff --git a/lib/qcd/action/fermion/OverlapWilsonPartialFractionZolotarevFermion.h b/Grid/qcd/action/fermion/OverlapWilsonPartialFractionZolotarevFermion.h similarity index 100% rename from lib/qcd/action/fermion/OverlapWilsonPartialFractionZolotarevFermion.h rename to Grid/qcd/action/fermion/OverlapWilsonPartialFractionZolotarevFermion.h diff --git a/lib/qcd/action/fermion/PartialFractionFermion5D.cc b/Grid/qcd/action/fermion/PartialFractionFermion5D.cc similarity index 100% rename from lib/qcd/action/fermion/PartialFractionFermion5D.cc rename to Grid/qcd/action/fermion/PartialFractionFermion5D.cc diff --git a/lib/qcd/action/fermion/PartialFractionFermion5D.h b/Grid/qcd/action/fermion/PartialFractionFermion5D.h similarity index 100% rename from lib/qcd/action/fermion/PartialFractionFermion5D.h rename to Grid/qcd/action/fermion/PartialFractionFermion5D.h diff --git a/lib/qcd/action/fermion/ScaledShamirFermion.h b/Grid/qcd/action/fermion/ScaledShamirFermion.h similarity index 100% rename from lib/qcd/action/fermion/ScaledShamirFermion.h rename to Grid/qcd/action/fermion/ScaledShamirFermion.h diff --git a/lib/qcd/action/fermion/SchurDiagTwoKappa.h b/Grid/qcd/action/fermion/SchurDiagTwoKappa.h similarity index 100% rename from lib/qcd/action/fermion/SchurDiagTwoKappa.h rename to Grid/qcd/action/fermion/SchurDiagTwoKappa.h diff --git a/lib/qcd/action/fermion/ShamirZolotarevFermion.h b/Grid/qcd/action/fermion/ShamirZolotarevFermion.h similarity index 100% rename from lib/qcd/action/fermion/ShamirZolotarevFermion.h rename to Grid/qcd/action/fermion/ShamirZolotarevFermion.h diff --git a/lib/qcd/action/fermion/StaggeredKernels.cc b/Grid/qcd/action/fermion/StaggeredKernels.cc similarity index 100% rename from lib/qcd/action/fermion/StaggeredKernels.cc rename to Grid/qcd/action/fermion/StaggeredKernels.cc diff --git a/lib/qcd/action/fermion/StaggeredKernels.h b/Grid/qcd/action/fermion/StaggeredKernels.h similarity index 100% rename from lib/qcd/action/fermion/StaggeredKernels.h rename to Grid/qcd/action/fermion/StaggeredKernels.h diff --git a/lib/qcd/action/fermion/StaggeredKernelsAsm.cc b/Grid/qcd/action/fermion/StaggeredKernelsAsm.cc similarity index 100% rename from lib/qcd/action/fermion/StaggeredKernelsAsm.cc rename to Grid/qcd/action/fermion/StaggeredKernelsAsm.cc diff --git a/lib/qcd/action/fermion/StaggeredKernelsHand.cc b/Grid/qcd/action/fermion/StaggeredKernelsHand.cc similarity index 100% rename from lib/qcd/action/fermion/StaggeredKernelsHand.cc rename to Grid/qcd/action/fermion/StaggeredKernelsHand.cc diff --git a/lib/qcd/action/fermion/WilsonCloverFermion.cc b/Grid/qcd/action/fermion/WilsonCloverFermion.cc similarity index 100% rename from lib/qcd/action/fermion/WilsonCloverFermion.cc rename to Grid/qcd/action/fermion/WilsonCloverFermion.cc diff --git a/lib/qcd/action/fermion/WilsonCloverFermion.h b/Grid/qcd/action/fermion/WilsonCloverFermion.h similarity index 100% rename from lib/qcd/action/fermion/WilsonCloverFermion.h rename to Grid/qcd/action/fermion/WilsonCloverFermion.h diff --git a/lib/qcd/action/fermion/WilsonCompressor.h b/Grid/qcd/action/fermion/WilsonCompressor.h similarity index 100% rename from lib/qcd/action/fermion/WilsonCompressor.h rename to Grid/qcd/action/fermion/WilsonCompressor.h diff --git a/lib/qcd/action/fermion/WilsonFermion.cc b/Grid/qcd/action/fermion/WilsonFermion.cc similarity index 100% rename from lib/qcd/action/fermion/WilsonFermion.cc rename to Grid/qcd/action/fermion/WilsonFermion.cc diff --git a/lib/qcd/action/fermion/WilsonFermion.h b/Grid/qcd/action/fermion/WilsonFermion.h similarity index 100% rename from lib/qcd/action/fermion/WilsonFermion.h rename to Grid/qcd/action/fermion/WilsonFermion.h diff --git a/lib/qcd/action/fermion/WilsonFermion5D.cc b/Grid/qcd/action/fermion/WilsonFermion5D.cc similarity index 100% rename from lib/qcd/action/fermion/WilsonFermion5D.cc rename to Grid/qcd/action/fermion/WilsonFermion5D.cc diff --git a/lib/qcd/action/fermion/WilsonFermion5D.h b/Grid/qcd/action/fermion/WilsonFermion5D.h similarity index 100% rename from lib/qcd/action/fermion/WilsonFermion5D.h rename to Grid/qcd/action/fermion/WilsonFermion5D.h diff --git a/lib/qcd/action/fermion/WilsonKernels.cc b/Grid/qcd/action/fermion/WilsonKernels.cc similarity index 100% rename from lib/qcd/action/fermion/WilsonKernels.cc rename to Grid/qcd/action/fermion/WilsonKernels.cc diff --git a/lib/qcd/action/fermion/WilsonKernels.h b/Grid/qcd/action/fermion/WilsonKernels.h similarity index 100% rename from lib/qcd/action/fermion/WilsonKernels.h rename to Grid/qcd/action/fermion/WilsonKernels.h diff --git a/lib/qcd/action/fermion/WilsonKernelsAsm.cc b/Grid/qcd/action/fermion/WilsonKernelsAsm.cc similarity index 100% rename from lib/qcd/action/fermion/WilsonKernelsAsm.cc rename to Grid/qcd/action/fermion/WilsonKernelsAsm.cc diff --git a/lib/qcd/action/fermion/WilsonKernelsAsmAvx512.h b/Grid/qcd/action/fermion/WilsonKernelsAsmAvx512.h similarity index 100% rename from lib/qcd/action/fermion/WilsonKernelsAsmAvx512.h rename to Grid/qcd/action/fermion/WilsonKernelsAsmAvx512.h diff --git a/lib/qcd/action/fermion/WilsonKernelsAsmBody.h b/Grid/qcd/action/fermion/WilsonKernelsAsmBody.h similarity index 100% rename from lib/qcd/action/fermion/WilsonKernelsAsmBody.h rename to Grid/qcd/action/fermion/WilsonKernelsAsmBody.h diff --git a/lib/qcd/action/fermion/WilsonKernelsAsmBody.h.ab b/Grid/qcd/action/fermion/WilsonKernelsAsmBody.h.ab similarity index 100% rename from lib/qcd/action/fermion/WilsonKernelsAsmBody.h.ab rename to Grid/qcd/action/fermion/WilsonKernelsAsmBody.h.ab diff --git a/lib/qcd/action/fermion/WilsonKernelsAsmBody.h.abc b/Grid/qcd/action/fermion/WilsonKernelsAsmBody.h.abc similarity index 100% rename from lib/qcd/action/fermion/WilsonKernelsAsmBody.h.abc rename to Grid/qcd/action/fermion/WilsonKernelsAsmBody.h.abc diff --git a/lib/qcd/action/fermion/WilsonKernelsAsmQPX.h b/Grid/qcd/action/fermion/WilsonKernelsAsmQPX.h similarity index 100% rename from lib/qcd/action/fermion/WilsonKernelsAsmQPX.h rename to Grid/qcd/action/fermion/WilsonKernelsAsmQPX.h diff --git a/lib/qcd/action/fermion/WilsonKernelsHand.cc b/Grid/qcd/action/fermion/WilsonKernelsHand.cc similarity index 100% rename from lib/qcd/action/fermion/WilsonKernelsHand.cc rename to Grid/qcd/action/fermion/WilsonKernelsHand.cc diff --git a/lib/qcd/action/fermion/WilsonKernelsHandGparity.cc b/Grid/qcd/action/fermion/WilsonKernelsHandGparity.cc similarity index 100% rename from lib/qcd/action/fermion/WilsonKernelsHandGparity.cc rename to Grid/qcd/action/fermion/WilsonKernelsHandGparity.cc diff --git a/lib/qcd/action/fermion/WilsonTMFermion.cc b/Grid/qcd/action/fermion/WilsonTMFermion.cc similarity index 100% rename from lib/qcd/action/fermion/WilsonTMFermion.cc rename to Grid/qcd/action/fermion/WilsonTMFermion.cc diff --git a/lib/qcd/action/fermion/WilsonTMFermion.h b/Grid/qcd/action/fermion/WilsonTMFermion.h similarity index 100% rename from lib/qcd/action/fermion/WilsonTMFermion.h rename to Grid/qcd/action/fermion/WilsonTMFermion.h diff --git a/lib/qcd/action/fermion/ZMobiusFermion.h b/Grid/qcd/action/fermion/ZMobiusFermion.h similarity index 100% rename from lib/qcd/action/fermion/ZMobiusFermion.h rename to Grid/qcd/action/fermion/ZMobiusFermion.h diff --git a/lib/qcd/action/fermion/g5HermitianLinop.h b/Grid/qcd/action/fermion/g5HermitianLinop.h similarity index 100% rename from lib/qcd/action/fermion/g5HermitianLinop.h rename to Grid/qcd/action/fermion/g5HermitianLinop.h diff --git a/lib/qcd/action/gauge/Gauge.h b/Grid/qcd/action/gauge/Gauge.h similarity index 100% rename from lib/qcd/action/gauge/Gauge.h rename to Grid/qcd/action/gauge/Gauge.h diff --git a/lib/qcd/action/gauge/GaugeImplTypes.h b/Grid/qcd/action/gauge/GaugeImplTypes.h similarity index 100% rename from lib/qcd/action/gauge/GaugeImplTypes.h rename to Grid/qcd/action/gauge/GaugeImplTypes.h diff --git a/lib/qcd/action/gauge/GaugeImplementations.h b/Grid/qcd/action/gauge/GaugeImplementations.h similarity index 100% rename from lib/qcd/action/gauge/GaugeImplementations.h rename to Grid/qcd/action/gauge/GaugeImplementations.h diff --git a/lib/qcd/action/gauge/Photon.h b/Grid/qcd/action/gauge/Photon.h similarity index 100% rename from lib/qcd/action/gauge/Photon.h rename to Grid/qcd/action/gauge/Photon.h diff --git a/lib/qcd/action/gauge/PlaqPlusRectangleAction.h b/Grid/qcd/action/gauge/PlaqPlusRectangleAction.h similarity index 100% rename from lib/qcd/action/gauge/PlaqPlusRectangleAction.h rename to Grid/qcd/action/gauge/PlaqPlusRectangleAction.h diff --git a/lib/qcd/action/gauge/WilsonGaugeAction.h b/Grid/qcd/action/gauge/WilsonGaugeAction.h similarity index 100% rename from lib/qcd/action/gauge/WilsonGaugeAction.h rename to Grid/qcd/action/gauge/WilsonGaugeAction.h diff --git a/lib/qcd/action/pseudofermion/EvenOddSchurDifferentiable.h b/Grid/qcd/action/pseudofermion/EvenOddSchurDifferentiable.h similarity index 100% rename from lib/qcd/action/pseudofermion/EvenOddSchurDifferentiable.h rename to Grid/qcd/action/pseudofermion/EvenOddSchurDifferentiable.h diff --git a/lib/qcd/action/pseudofermion/ExactOneFlavourRatio.h b/Grid/qcd/action/pseudofermion/ExactOneFlavourRatio.h similarity index 100% rename from lib/qcd/action/pseudofermion/ExactOneFlavourRatio.h rename to Grid/qcd/action/pseudofermion/ExactOneFlavourRatio.h diff --git a/lib/qcd/action/pseudofermion/OneFlavourEvenOddRational.h b/Grid/qcd/action/pseudofermion/OneFlavourEvenOddRational.h similarity index 100% rename from lib/qcd/action/pseudofermion/OneFlavourEvenOddRational.h rename to Grid/qcd/action/pseudofermion/OneFlavourEvenOddRational.h diff --git a/lib/qcd/action/pseudofermion/OneFlavourEvenOddRationalRatio.h b/Grid/qcd/action/pseudofermion/OneFlavourEvenOddRationalRatio.h similarity index 100% rename from lib/qcd/action/pseudofermion/OneFlavourEvenOddRationalRatio.h rename to Grid/qcd/action/pseudofermion/OneFlavourEvenOddRationalRatio.h diff --git a/lib/qcd/action/pseudofermion/OneFlavourRational.h b/Grid/qcd/action/pseudofermion/OneFlavourRational.h similarity index 100% rename from lib/qcd/action/pseudofermion/OneFlavourRational.h rename to Grid/qcd/action/pseudofermion/OneFlavourRational.h diff --git a/lib/qcd/action/pseudofermion/OneFlavourRationalRatio.h b/Grid/qcd/action/pseudofermion/OneFlavourRationalRatio.h similarity index 100% rename from lib/qcd/action/pseudofermion/OneFlavourRationalRatio.h rename to Grid/qcd/action/pseudofermion/OneFlavourRationalRatio.h diff --git a/lib/qcd/action/pseudofermion/PseudoFermion.h b/Grid/qcd/action/pseudofermion/PseudoFermion.h similarity index 100% rename from lib/qcd/action/pseudofermion/PseudoFermion.h rename to Grid/qcd/action/pseudofermion/PseudoFermion.h diff --git a/lib/qcd/action/pseudofermion/TwoFlavour.h b/Grid/qcd/action/pseudofermion/TwoFlavour.h similarity index 100% rename from lib/qcd/action/pseudofermion/TwoFlavour.h rename to Grid/qcd/action/pseudofermion/TwoFlavour.h diff --git a/lib/qcd/action/pseudofermion/TwoFlavourEvenOdd.h b/Grid/qcd/action/pseudofermion/TwoFlavourEvenOdd.h similarity index 100% rename from lib/qcd/action/pseudofermion/TwoFlavourEvenOdd.h rename to Grid/qcd/action/pseudofermion/TwoFlavourEvenOdd.h diff --git a/lib/qcd/action/pseudofermion/TwoFlavourEvenOddRatio.h b/Grid/qcd/action/pseudofermion/TwoFlavourEvenOddRatio.h similarity index 100% rename from lib/qcd/action/pseudofermion/TwoFlavourEvenOddRatio.h rename to Grid/qcd/action/pseudofermion/TwoFlavourEvenOddRatio.h diff --git a/lib/qcd/action/pseudofermion/TwoFlavourRatio.h b/Grid/qcd/action/pseudofermion/TwoFlavourRatio.h similarity index 100% rename from lib/qcd/action/pseudofermion/TwoFlavourRatio.h rename to Grid/qcd/action/pseudofermion/TwoFlavourRatio.h diff --git a/lib/qcd/action/scalar/Scalar.h b/Grid/qcd/action/scalar/Scalar.h similarity index 100% rename from lib/qcd/action/scalar/Scalar.h rename to Grid/qcd/action/scalar/Scalar.h diff --git a/lib/qcd/action/scalar/ScalarAction.h b/Grid/qcd/action/scalar/ScalarAction.h similarity index 100% rename from lib/qcd/action/scalar/ScalarAction.h rename to Grid/qcd/action/scalar/ScalarAction.h diff --git a/lib/qcd/action/scalar/ScalarImpl.h b/Grid/qcd/action/scalar/ScalarImpl.h similarity index 100% rename from lib/qcd/action/scalar/ScalarImpl.h rename to Grid/qcd/action/scalar/ScalarImpl.h diff --git a/lib/qcd/action/scalar/ScalarInteractionAction.h b/Grid/qcd/action/scalar/ScalarInteractionAction.h similarity index 100% rename from lib/qcd/action/scalar/ScalarInteractionAction.h rename to Grid/qcd/action/scalar/ScalarInteractionAction.h diff --git a/lib/qcd/hmc/GenericHMCrunner.h b/Grid/qcd/hmc/GenericHMCrunner.h similarity index 100% rename from lib/qcd/hmc/GenericHMCrunner.h rename to Grid/qcd/hmc/GenericHMCrunner.h diff --git a/lib/qcd/hmc/HMC.h b/Grid/qcd/hmc/HMC.h similarity index 100% rename from lib/qcd/hmc/HMC.h rename to Grid/qcd/hmc/HMC.h diff --git a/lib/qcd/hmc/HMCModules.h b/Grid/qcd/hmc/HMCModules.h similarity index 100% rename from lib/qcd/hmc/HMCModules.h rename to Grid/qcd/hmc/HMCModules.h diff --git a/lib/qcd/hmc/HMCResourceManager.h b/Grid/qcd/hmc/HMCResourceManager.h similarity index 100% rename from lib/qcd/hmc/HMCResourceManager.h rename to Grid/qcd/hmc/HMCResourceManager.h diff --git a/lib/qcd/hmc/HMCRunnerModule.h b/Grid/qcd/hmc/HMCRunnerModule.h similarity index 100% rename from lib/qcd/hmc/HMCRunnerModule.h rename to Grid/qcd/hmc/HMCRunnerModule.h diff --git a/lib/qcd/hmc/HMC_GridModules.h b/Grid/qcd/hmc/HMC_GridModules.h similarity index 100% rename from lib/qcd/hmc/HMC_GridModules.h rename to Grid/qcd/hmc/HMC_GridModules.h diff --git a/lib/qcd/hmc/HMC_aggregate.h b/Grid/qcd/hmc/HMC_aggregate.h similarity index 100% rename from lib/qcd/hmc/HMC_aggregate.h rename to Grid/qcd/hmc/HMC_aggregate.h diff --git a/lib/qcd/hmc/UsingHMC.md b/Grid/qcd/hmc/UsingHMC.md similarity index 100% rename from lib/qcd/hmc/UsingHMC.md rename to Grid/qcd/hmc/UsingHMC.md diff --git a/lib/qcd/hmc/checkpointers/BaseCheckpointer.h b/Grid/qcd/hmc/checkpointers/BaseCheckpointer.h similarity index 100% rename from lib/qcd/hmc/checkpointers/BaseCheckpointer.h rename to Grid/qcd/hmc/checkpointers/BaseCheckpointer.h diff --git a/lib/qcd/hmc/checkpointers/BinaryCheckpointer.h b/Grid/qcd/hmc/checkpointers/BinaryCheckpointer.h similarity index 100% rename from lib/qcd/hmc/checkpointers/BinaryCheckpointer.h rename to Grid/qcd/hmc/checkpointers/BinaryCheckpointer.h diff --git a/lib/qcd/hmc/checkpointers/CheckPointerModules.h b/Grid/qcd/hmc/checkpointers/CheckPointerModules.h similarity index 100% rename from lib/qcd/hmc/checkpointers/CheckPointerModules.h rename to Grid/qcd/hmc/checkpointers/CheckPointerModules.h diff --git a/lib/qcd/hmc/checkpointers/CheckPointers.h b/Grid/qcd/hmc/checkpointers/CheckPointers.h similarity index 100% rename from lib/qcd/hmc/checkpointers/CheckPointers.h rename to Grid/qcd/hmc/checkpointers/CheckPointers.h diff --git a/lib/qcd/hmc/checkpointers/ILDGCheckpointer.h b/Grid/qcd/hmc/checkpointers/ILDGCheckpointer.h similarity index 100% rename from lib/qcd/hmc/checkpointers/ILDGCheckpointer.h rename to Grid/qcd/hmc/checkpointers/ILDGCheckpointer.h diff --git a/lib/qcd/hmc/checkpointers/NerscCheckpointer.h b/Grid/qcd/hmc/checkpointers/NerscCheckpointer.h similarity index 100% rename from lib/qcd/hmc/checkpointers/NerscCheckpointer.h rename to Grid/qcd/hmc/checkpointers/NerscCheckpointer.h diff --git a/lib/qcd/hmc/checkpointers/ScidacCheckpointer.h b/Grid/qcd/hmc/checkpointers/ScidacCheckpointer.h similarity index 100% rename from lib/qcd/hmc/checkpointers/ScidacCheckpointer.h rename to Grid/qcd/hmc/checkpointers/ScidacCheckpointer.h diff --git a/lib/qcd/hmc/integrators/Integrator.h b/Grid/qcd/hmc/integrators/Integrator.h similarity index 100% rename from lib/qcd/hmc/integrators/Integrator.h rename to Grid/qcd/hmc/integrators/Integrator.h diff --git a/lib/qcd/hmc/integrators/Integrator_algorithm.h b/Grid/qcd/hmc/integrators/Integrator_algorithm.h similarity index 100% rename from lib/qcd/hmc/integrators/Integrator_algorithm.h rename to Grid/qcd/hmc/integrators/Integrator_algorithm.h diff --git a/lib/qcd/modules/ActionModules.h b/Grid/qcd/modules/ActionModules.h similarity index 100% rename from lib/qcd/modules/ActionModules.h rename to Grid/qcd/modules/ActionModules.h diff --git a/lib/qcd/modules/Factory.h b/Grid/qcd/modules/Factory.h similarity index 100% rename from lib/qcd/modules/Factory.h rename to Grid/qcd/modules/Factory.h diff --git a/lib/qcd/modules/FermionOperatorModules.h b/Grid/qcd/modules/FermionOperatorModules.h similarity index 100% rename from lib/qcd/modules/FermionOperatorModules.h rename to Grid/qcd/modules/FermionOperatorModules.h diff --git a/lib/qcd/modules/Modules.cc b/Grid/qcd/modules/Modules.cc similarity index 100% rename from lib/qcd/modules/Modules.cc rename to Grid/qcd/modules/Modules.cc diff --git a/lib/qcd/modules/Modules.h b/Grid/qcd/modules/Modules.h similarity index 100% rename from lib/qcd/modules/Modules.h rename to Grid/qcd/modules/Modules.h diff --git a/lib/qcd/modules/ObservableModules.h b/Grid/qcd/modules/ObservableModules.h similarity index 100% rename from lib/qcd/modules/ObservableModules.h rename to Grid/qcd/modules/ObservableModules.h diff --git a/lib/qcd/modules/Registration.h b/Grid/qcd/modules/Registration.h similarity index 100% rename from lib/qcd/modules/Registration.h rename to Grid/qcd/modules/Registration.h diff --git a/lib/qcd/modules/SolverModules.h b/Grid/qcd/modules/SolverModules.h similarity index 100% rename from lib/qcd/modules/SolverModules.h rename to Grid/qcd/modules/SolverModules.h diff --git a/lib/qcd/modules/mods.h b/Grid/qcd/modules/mods.h similarity index 100% rename from lib/qcd/modules/mods.h rename to Grid/qcd/modules/mods.h diff --git a/lib/qcd/observables/hmc_observable.h b/Grid/qcd/observables/hmc_observable.h similarity index 100% rename from lib/qcd/observables/hmc_observable.h rename to Grid/qcd/observables/hmc_observable.h diff --git a/lib/qcd/observables/plaquette.h b/Grid/qcd/observables/plaquette.h similarity index 100% rename from lib/qcd/observables/plaquette.h rename to Grid/qcd/observables/plaquette.h diff --git a/lib/qcd/observables/polyakov_loop.h b/Grid/qcd/observables/polyakov_loop.h similarity index 100% rename from lib/qcd/observables/polyakov_loop.h rename to Grid/qcd/observables/polyakov_loop.h diff --git a/lib/qcd/observables/topological_charge.h b/Grid/qcd/observables/topological_charge.h similarity index 100% rename from lib/qcd/observables/topological_charge.h rename to Grid/qcd/observables/topological_charge.h diff --git a/lib/qcd/representations/Representations.h b/Grid/qcd/representations/Representations.h similarity index 100% rename from lib/qcd/representations/Representations.h rename to Grid/qcd/representations/Representations.h diff --git a/lib/qcd/representations/adjoint.h b/Grid/qcd/representations/adjoint.h similarity index 100% rename from lib/qcd/representations/adjoint.h rename to Grid/qcd/representations/adjoint.h diff --git a/lib/qcd/representations/fundamental.h b/Grid/qcd/representations/fundamental.h similarity index 100% rename from lib/qcd/representations/fundamental.h rename to Grid/qcd/representations/fundamental.h diff --git a/lib/qcd/representations/hmc_types.h b/Grid/qcd/representations/hmc_types.h similarity index 100% rename from lib/qcd/representations/hmc_types.h rename to Grid/qcd/representations/hmc_types.h diff --git a/lib/qcd/representations/two_index.h b/Grid/qcd/representations/two_index.h similarity index 100% rename from lib/qcd/representations/two_index.h rename to Grid/qcd/representations/two_index.h diff --git a/lib/qcd/smearing/APEsmearing.h b/Grid/qcd/smearing/APEsmearing.h similarity index 100% rename from lib/qcd/smearing/APEsmearing.h rename to Grid/qcd/smearing/APEsmearing.h diff --git a/lib/qcd/smearing/BaseSmearing.h b/Grid/qcd/smearing/BaseSmearing.h similarity index 100% rename from lib/qcd/smearing/BaseSmearing.h rename to Grid/qcd/smearing/BaseSmearing.h diff --git a/lib/qcd/smearing/GaugeConfiguration.h b/Grid/qcd/smearing/GaugeConfiguration.h similarity index 100% rename from lib/qcd/smearing/GaugeConfiguration.h rename to Grid/qcd/smearing/GaugeConfiguration.h diff --git a/lib/qcd/smearing/Smearing.h b/Grid/qcd/smearing/Smearing.h similarity index 100% rename from lib/qcd/smearing/Smearing.h rename to Grid/qcd/smearing/Smearing.h diff --git a/lib/qcd/smearing/StoutSmearing.h b/Grid/qcd/smearing/StoutSmearing.h similarity index 100% rename from lib/qcd/smearing/StoutSmearing.h rename to Grid/qcd/smearing/StoutSmearing.h diff --git a/lib/qcd/smearing/WilsonFlow.h b/Grid/qcd/smearing/WilsonFlow.h similarity index 100% rename from lib/qcd/smearing/WilsonFlow.h rename to Grid/qcd/smearing/WilsonFlow.h diff --git a/lib/qcd/spin/Dirac.h b/Grid/qcd/spin/Dirac.h similarity index 100% rename from lib/qcd/spin/Dirac.h rename to Grid/qcd/spin/Dirac.h diff --git a/lib/qcd/spin/Gamma.cc b/Grid/qcd/spin/Gamma.cc similarity index 100% rename from lib/qcd/spin/Gamma.cc rename to Grid/qcd/spin/Gamma.cc diff --git a/lib/qcd/spin/Gamma.h b/Grid/qcd/spin/Gamma.h similarity index 100% rename from lib/qcd/spin/Gamma.h rename to Grid/qcd/spin/Gamma.h diff --git a/lib/qcd/spin/Spin.h b/Grid/qcd/spin/Spin.h similarity index 100% rename from lib/qcd/spin/Spin.h rename to Grid/qcd/spin/Spin.h diff --git a/lib/qcd/spin/TwoSpinor.h b/Grid/qcd/spin/TwoSpinor.h similarity index 100% rename from lib/qcd/spin/TwoSpinor.h rename to Grid/qcd/spin/TwoSpinor.h diff --git a/lib/qcd/spin/gamma-gen/gamma-gen.nb b/Grid/qcd/spin/gamma-gen/gamma-gen.nb similarity index 100% rename from lib/qcd/spin/gamma-gen/gamma-gen.nb rename to Grid/qcd/spin/gamma-gen/gamma-gen.nb diff --git a/lib/qcd/utils/CovariantCshift.h b/Grid/qcd/utils/CovariantCshift.h similarity index 100% rename from lib/qcd/utils/CovariantCshift.h rename to Grid/qcd/utils/CovariantCshift.h diff --git a/lib/qcd/utils/CovariantLaplacian.h b/Grid/qcd/utils/CovariantLaplacian.h similarity index 100% rename from lib/qcd/utils/CovariantLaplacian.h rename to Grid/qcd/utils/CovariantLaplacian.h diff --git a/lib/qcd/utils/GaugeFix.h b/Grid/qcd/utils/GaugeFix.h similarity index 100% rename from lib/qcd/utils/GaugeFix.h rename to Grid/qcd/utils/GaugeFix.h diff --git a/lib/qcd/utils/LinalgUtils.h b/Grid/qcd/utils/LinalgUtils.h similarity index 100% rename from lib/qcd/utils/LinalgUtils.h rename to Grid/qcd/utils/LinalgUtils.h diff --git a/lib/qcd/utils/Metric.h b/Grid/qcd/utils/Metric.h similarity index 100% rename from lib/qcd/utils/Metric.h rename to Grid/qcd/utils/Metric.h diff --git a/lib/qcd/utils/SUn.h b/Grid/qcd/utils/SUn.h similarity index 100% rename from lib/qcd/utils/SUn.h rename to Grid/qcd/utils/SUn.h diff --git a/lib/qcd/utils/SUnAdjoint.h b/Grid/qcd/utils/SUnAdjoint.h similarity index 100% rename from lib/qcd/utils/SUnAdjoint.h rename to Grid/qcd/utils/SUnAdjoint.h diff --git a/lib/qcd/utils/SUnTwoIndex.h b/Grid/qcd/utils/SUnTwoIndex.h similarity index 100% rename from lib/qcd/utils/SUnTwoIndex.h rename to Grid/qcd/utils/SUnTwoIndex.h diff --git a/lib/qcd/utils/ScalarObjs.h b/Grid/qcd/utils/ScalarObjs.h similarity index 100% rename from lib/qcd/utils/ScalarObjs.h rename to Grid/qcd/utils/ScalarObjs.h diff --git a/lib/qcd/utils/SpaceTimeGrid.cc b/Grid/qcd/utils/SpaceTimeGrid.cc similarity index 100% rename from lib/qcd/utils/SpaceTimeGrid.cc rename to Grid/qcd/utils/SpaceTimeGrid.cc diff --git a/lib/qcd/utils/SpaceTimeGrid.h b/Grid/qcd/utils/SpaceTimeGrid.h similarity index 100% rename from lib/qcd/utils/SpaceTimeGrid.h rename to Grid/qcd/utils/SpaceTimeGrid.h diff --git a/lib/qcd/utils/Utils.h b/Grid/qcd/utils/Utils.h similarity index 100% rename from lib/qcd/utils/Utils.h rename to Grid/qcd/utils/Utils.h diff --git a/lib/qcd/utils/WilsonLoops.h b/Grid/qcd/utils/WilsonLoops.h similarity index 100% rename from lib/qcd/utils/WilsonLoops.h rename to Grid/qcd/utils/WilsonLoops.h diff --git a/lib/serialisation/BaseIO.h b/Grid/serialisation/BaseIO.h similarity index 100% rename from lib/serialisation/BaseIO.h rename to Grid/serialisation/BaseIO.h diff --git a/lib/serialisation/BinaryIO.cc b/Grid/serialisation/BinaryIO.cc similarity index 100% rename from lib/serialisation/BinaryIO.cc rename to Grid/serialisation/BinaryIO.cc diff --git a/lib/serialisation/BinaryIO.h b/Grid/serialisation/BinaryIO.h similarity index 100% rename from lib/serialisation/BinaryIO.h rename to Grid/serialisation/BinaryIO.h diff --git a/lib/serialisation/Hdf5IO.cc b/Grid/serialisation/Hdf5IO.cc similarity index 100% rename from lib/serialisation/Hdf5IO.cc rename to Grid/serialisation/Hdf5IO.cc diff --git a/lib/serialisation/Hdf5IO.h b/Grid/serialisation/Hdf5IO.h similarity index 100% rename from lib/serialisation/Hdf5IO.h rename to Grid/serialisation/Hdf5IO.h diff --git a/lib/serialisation/Hdf5Type.h b/Grid/serialisation/Hdf5Type.h similarity index 100% rename from lib/serialisation/Hdf5Type.h rename to Grid/serialisation/Hdf5Type.h diff --git a/lib/serialisation/JSON_IO.cc b/Grid/serialisation/JSON_IO.cc similarity index 100% rename from lib/serialisation/JSON_IO.cc rename to Grid/serialisation/JSON_IO.cc diff --git a/lib/serialisation/JSON_IO.h b/Grid/serialisation/JSON_IO.h similarity index 100% rename from lib/serialisation/JSON_IO.h rename to Grid/serialisation/JSON_IO.h diff --git a/lib/serialisation/MacroMagic.h b/Grid/serialisation/MacroMagic.h similarity index 100% rename from lib/serialisation/MacroMagic.h rename to Grid/serialisation/MacroMagic.h diff --git a/lib/serialisation/Serialisation.h b/Grid/serialisation/Serialisation.h similarity index 100% rename from lib/serialisation/Serialisation.h rename to Grid/serialisation/Serialisation.h diff --git a/lib/serialisation/TextIO.cc b/Grid/serialisation/TextIO.cc similarity index 100% rename from lib/serialisation/TextIO.cc rename to Grid/serialisation/TextIO.cc diff --git a/lib/serialisation/TextIO.h b/Grid/serialisation/TextIO.h similarity index 100% rename from lib/serialisation/TextIO.h rename to Grid/serialisation/TextIO.h diff --git a/lib/serialisation/VectorUtils.h b/Grid/serialisation/VectorUtils.h similarity index 100% rename from lib/serialisation/VectorUtils.h rename to Grid/serialisation/VectorUtils.h diff --git a/lib/serialisation/XmlIO.cc b/Grid/serialisation/XmlIO.cc similarity index 100% rename from lib/serialisation/XmlIO.cc rename to Grid/serialisation/XmlIO.cc diff --git a/lib/serialisation/XmlIO.h b/Grid/serialisation/XmlIO.h similarity index 100% rename from lib/serialisation/XmlIO.h rename to Grid/serialisation/XmlIO.h diff --git a/lib/simd/BGQQPX.h b/Grid/simd/BGQQPX.h similarity index 100% rename from lib/simd/BGQQPX.h rename to Grid/simd/BGQQPX.h diff --git a/lib/simd/Grid_avx.h b/Grid/simd/Grid_avx.h similarity index 100% rename from lib/simd/Grid_avx.h rename to Grid/simd/Grid_avx.h diff --git a/lib/simd/Grid_avx512.h b/Grid/simd/Grid_avx512.h similarity index 100% rename from lib/simd/Grid_avx512.h rename to Grid/simd/Grid_avx512.h diff --git a/lib/simd/Grid_generic.h b/Grid/simd/Grid_generic.h similarity index 100% rename from lib/simd/Grid_generic.h rename to Grid/simd/Grid_generic.h diff --git a/lib/simd/Grid_generic_types.h b/Grid/simd/Grid_generic_types.h similarity index 100% rename from lib/simd/Grid_generic_types.h rename to Grid/simd/Grid_generic_types.h diff --git a/lib/simd/Grid_imci.h b/Grid/simd/Grid_imci.h similarity index 100% rename from lib/simd/Grid_imci.h rename to Grid/simd/Grid_imci.h diff --git a/lib/simd/Grid_neon.h b/Grid/simd/Grid_neon.h similarity index 100% rename from lib/simd/Grid_neon.h rename to Grid/simd/Grid_neon.h diff --git a/lib/simd/Grid_qpx.h b/Grid/simd/Grid_qpx.h similarity index 100% rename from lib/simd/Grid_qpx.h rename to Grid/simd/Grid_qpx.h diff --git a/lib/simd/Grid_sse4.h b/Grid/simd/Grid_sse4.h similarity index 100% rename from lib/simd/Grid_sse4.h rename to Grid/simd/Grid_sse4.h diff --git a/lib/simd/Grid_vector_types.h b/Grid/simd/Grid_vector_types.h similarity index 100% rename from lib/simd/Grid_vector_types.h rename to Grid/simd/Grid_vector_types.h diff --git a/lib/simd/Grid_vector_unops.h b/Grid/simd/Grid_vector_unops.h similarity index 100% rename from lib/simd/Grid_vector_unops.h rename to Grid/simd/Grid_vector_unops.h diff --git a/lib/simd/IBM_qpx.h b/Grid/simd/IBM_qpx.h similarity index 100% rename from lib/simd/IBM_qpx.h rename to Grid/simd/IBM_qpx.h diff --git a/lib/simd/IBM_qpx_double.h b/Grid/simd/IBM_qpx_double.h similarity index 100% rename from lib/simd/IBM_qpx_double.h rename to Grid/simd/IBM_qpx_double.h diff --git a/lib/simd/IBM_qpx_single.h b/Grid/simd/IBM_qpx_single.h similarity index 100% rename from lib/simd/IBM_qpx_single.h rename to Grid/simd/IBM_qpx_single.h diff --git a/lib/simd/Intel512avx.h b/Grid/simd/Intel512avx.h similarity index 100% rename from lib/simd/Intel512avx.h rename to Grid/simd/Intel512avx.h diff --git a/lib/simd/Intel512common.h b/Grid/simd/Intel512common.h similarity index 100% rename from lib/simd/Intel512common.h rename to Grid/simd/Intel512common.h diff --git a/lib/simd/Intel512double.h b/Grid/simd/Intel512double.h similarity index 100% rename from lib/simd/Intel512double.h rename to Grid/simd/Intel512double.h diff --git a/lib/simd/Intel512imci.h b/Grid/simd/Intel512imci.h similarity index 100% rename from lib/simd/Intel512imci.h rename to Grid/simd/Intel512imci.h diff --git a/lib/simd/Intel512single.h b/Grid/simd/Intel512single.h similarity index 100% rename from lib/simd/Intel512single.h rename to Grid/simd/Intel512single.h diff --git a/lib/simd/Intel512wilson.h b/Grid/simd/Intel512wilson.h similarity index 100% rename from lib/simd/Intel512wilson.h rename to Grid/simd/Intel512wilson.h diff --git a/lib/simd/Simd.h b/Grid/simd/Simd.h similarity index 100% rename from lib/simd/Simd.h rename to Grid/simd/Simd.h diff --git a/lib/simd/l1p.h b/Grid/simd/l1p.h similarity index 100% rename from lib/simd/l1p.h rename to Grid/simd/l1p.h diff --git a/lib/sitmo_rng/README b/Grid/sitmo_rng/README similarity index 100% rename from lib/sitmo_rng/README rename to Grid/sitmo_rng/README diff --git a/lib/sitmo_rng/sitmo_prng_engine.hpp b/Grid/sitmo_rng/sitmo_prng_engine.hpp similarity index 100% rename from lib/sitmo_rng/sitmo_prng_engine.hpp rename to Grid/sitmo_rng/sitmo_prng_engine.hpp diff --git a/lib/stencil/Lebesgue.cc b/Grid/stencil/Lebesgue.cc similarity index 100% rename from lib/stencil/Lebesgue.cc rename to Grid/stencil/Lebesgue.cc diff --git a/lib/stencil/Lebesgue.h b/Grid/stencil/Lebesgue.h similarity index 100% rename from lib/stencil/Lebesgue.h rename to Grid/stencil/Lebesgue.h diff --git a/lib/stencil/SimpleCompressor.h b/Grid/stencil/SimpleCompressor.h similarity index 100% rename from lib/stencil/SimpleCompressor.h rename to Grid/stencil/SimpleCompressor.h diff --git a/lib/stencil/Stencil.cc b/Grid/stencil/Stencil.cc similarity index 100% rename from lib/stencil/Stencil.cc rename to Grid/stencil/Stencil.cc diff --git a/lib/stencil/Stencil.h b/Grid/stencil/Stencil.h similarity index 100% rename from lib/stencil/Stencil.h rename to Grid/stencil/Stencil.h diff --git a/lib/tensors/Tensor_Ta.h b/Grid/tensors/Tensor_Ta.h similarity index 100% rename from lib/tensors/Tensor_Ta.h rename to Grid/tensors/Tensor_Ta.h diff --git a/lib/tensors/Tensor_arith.h b/Grid/tensors/Tensor_arith.h similarity index 100% rename from lib/tensors/Tensor_arith.h rename to Grid/tensors/Tensor_arith.h diff --git a/lib/tensors/Tensor_arith_add.h b/Grid/tensors/Tensor_arith_add.h similarity index 100% rename from lib/tensors/Tensor_arith_add.h rename to Grid/tensors/Tensor_arith_add.h diff --git a/lib/tensors/Tensor_arith_mac.h b/Grid/tensors/Tensor_arith_mac.h similarity index 100% rename from lib/tensors/Tensor_arith_mac.h rename to Grid/tensors/Tensor_arith_mac.h diff --git a/lib/tensors/Tensor_arith_mul.h b/Grid/tensors/Tensor_arith_mul.h similarity index 100% rename from lib/tensors/Tensor_arith_mul.h rename to Grid/tensors/Tensor_arith_mul.h diff --git a/lib/tensors/Tensor_arith_scalar.h b/Grid/tensors/Tensor_arith_scalar.h similarity index 100% rename from lib/tensors/Tensor_arith_scalar.h rename to Grid/tensors/Tensor_arith_scalar.h diff --git a/lib/tensors/Tensor_arith_sub.h b/Grid/tensors/Tensor_arith_sub.h similarity index 100% rename from lib/tensors/Tensor_arith_sub.h rename to Grid/tensors/Tensor_arith_sub.h diff --git a/lib/tensors/Tensor_class.h b/Grid/tensors/Tensor_class.h similarity index 100% rename from lib/tensors/Tensor_class.h rename to Grid/tensors/Tensor_class.h diff --git a/lib/tensors/Tensor_determinant.h b/Grid/tensors/Tensor_determinant.h similarity index 100% rename from lib/tensors/Tensor_determinant.h rename to Grid/tensors/Tensor_determinant.h diff --git a/lib/tensors/Tensor_exp.h b/Grid/tensors/Tensor_exp.h similarity index 100% rename from lib/tensors/Tensor_exp.h rename to Grid/tensors/Tensor_exp.h diff --git a/lib/tensors/Tensor_extract_merge.h b/Grid/tensors/Tensor_extract_merge.h similarity index 100% rename from lib/tensors/Tensor_extract_merge.h rename to Grid/tensors/Tensor_extract_merge.h diff --git a/lib/tensors/Tensor_index.h b/Grid/tensors/Tensor_index.h similarity index 100% rename from lib/tensors/Tensor_index.h rename to Grid/tensors/Tensor_index.h diff --git a/lib/tensors/Tensor_inner.h b/Grid/tensors/Tensor_inner.h similarity index 100% rename from lib/tensors/Tensor_inner.h rename to Grid/tensors/Tensor_inner.h diff --git a/lib/tensors/Tensor_logical.h b/Grid/tensors/Tensor_logical.h similarity index 100% rename from lib/tensors/Tensor_logical.h rename to Grid/tensors/Tensor_logical.h diff --git a/lib/tensors/Tensor_outer.h b/Grid/tensors/Tensor_outer.h similarity index 100% rename from lib/tensors/Tensor_outer.h rename to Grid/tensors/Tensor_outer.h diff --git a/lib/tensors/Tensor_reality.h b/Grid/tensors/Tensor_reality.h similarity index 100% rename from lib/tensors/Tensor_reality.h rename to Grid/tensors/Tensor_reality.h diff --git a/lib/tensors/Tensor_trace.h b/Grid/tensors/Tensor_trace.h similarity index 100% rename from lib/tensors/Tensor_trace.h rename to Grid/tensors/Tensor_trace.h diff --git a/lib/tensors/Tensor_traits.h b/Grid/tensors/Tensor_traits.h similarity index 100% rename from lib/tensors/Tensor_traits.h rename to Grid/tensors/Tensor_traits.h diff --git a/lib/tensors/Tensor_transpose.h b/Grid/tensors/Tensor_transpose.h similarity index 100% rename from lib/tensors/Tensor_transpose.h rename to Grid/tensors/Tensor_transpose.h diff --git a/lib/tensors/Tensor_unary.h b/Grid/tensors/Tensor_unary.h similarity index 100% rename from lib/tensors/Tensor_unary.h rename to Grid/tensors/Tensor_unary.h diff --git a/lib/tensors/Tensors.h b/Grid/tensors/Tensors.h similarity index 100% rename from lib/tensors/Tensors.h rename to Grid/tensors/Tensors.h diff --git a/lib/threads/Threads.h b/Grid/threads/Threads.h similarity index 100% rename from lib/threads/Threads.h rename to Grid/threads/Threads.h diff --git a/lib/util/CompilerCompatible.h b/Grid/util/CompilerCompatible.h similarity index 100% rename from lib/util/CompilerCompatible.h rename to Grid/util/CompilerCompatible.h diff --git a/lib/util/Init.cc b/Grid/util/Init.cc similarity index 100% rename from lib/util/Init.cc rename to Grid/util/Init.cc diff --git a/lib/util/Init.h b/Grid/util/Init.h similarity index 100% rename from lib/util/Init.h rename to Grid/util/Init.h diff --git a/lib/util/Lexicographic.h b/Grid/util/Lexicographic.h similarity index 100% rename from lib/util/Lexicographic.h rename to Grid/util/Lexicographic.h diff --git a/lib/util/Profiling.h b/Grid/util/Profiling.h similarity index 100% rename from lib/util/Profiling.h rename to Grid/util/Profiling.h diff --git a/lib/util/Sha.h b/Grid/util/Sha.h similarity index 100% rename from lib/util/Sha.h rename to Grid/util/Sha.h diff --git a/lib/util/Util.h b/Grid/util/Util.h similarity index 100% rename from lib/util/Util.h rename to Grid/util/Util.h diff --git a/lib/util/version.cc b/Grid/util/version.cc similarity index 100% rename from lib/util/version.cc rename to Grid/util/version.cc diff --git a/Grid/version.h b/Grid/version.h new file mode 100644 index 00000000..ca8d9007 --- /dev/null +++ b/Grid/version.h @@ -0,0 +1 @@ +#define GITHASH "5f206df775c54dc2b863bacb5ade177ee58032a8: (HEAD -> feature/hadrons, gh/feature/hadrons, cliath/feature/hadrons) uncommited changes" diff --git a/extras/Hadrons/A2AVectors.hpp b/Hadrons/A2AVectors.hpp similarity index 98% rename from extras/Hadrons/A2AVectors.hpp rename to Hadrons/A2AVectors.hpp index 6e865203..002cd271 100644 --- a/extras/Hadrons/A2AVectors.hpp +++ b/Hadrons/A2AVectors.hpp @@ -29,9 +29,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef A2A_Vectors_hpp_ #define A2A_Vectors_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Application.cc b/Hadrons/Application.cc similarity index 98% rename from extras/Hadrons/Application.cc rename to Hadrons/Application.cc index 17e833dd..12fae13e 100644 --- a/extras/Hadrons/Application.cc +++ b/Hadrons/Application.cc @@ -26,9 +26,9 @@ See the full license in the file "LICENSE" in the top level distribution directo *************************************************************************************/ /* END LEGAL */ -#include -#include -#include +#include +#include +#include using namespace Grid; using namespace QCD; diff --git a/extras/Hadrons/Application.hpp b/Hadrons/Application.hpp similarity index 97% rename from extras/Hadrons/Application.hpp rename to Hadrons/Application.hpp index 82307d62..e942c21c 100644 --- a/extras/Hadrons/Application.hpp +++ b/Hadrons/Application.hpp @@ -29,9 +29,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_Application_hpp_ #define Hadrons_Application_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/DilutedNoise.hpp b/Hadrons/DilutedNoise.hpp similarity index 99% rename from extras/Hadrons/DilutedNoise.hpp rename to Hadrons/DilutedNoise.hpp index 250f8445..c6ab71bc 100644 --- a/extras/Hadrons/DilutedNoise.hpp +++ b/Hadrons/DilutedNoise.hpp @@ -28,7 +28,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_DilutedNoise_hpp_ #define Hadrons_DilutedNoise_hpp_ -#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/EigenPack.hpp b/Hadrons/EigenPack.hpp similarity index 99% rename from extras/Hadrons/EigenPack.hpp rename to Hadrons/EigenPack.hpp index d19e7728..a6d4bcf6 100644 --- a/extras/Hadrons/EigenPack.hpp +++ b/Hadrons/EigenPack.hpp @@ -28,7 +28,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_EigenPack_hpp_ #define Hadrons_EigenPack_hpp_ -#include +#include #include #include diff --git a/extras/Hadrons/Environment.cc b/Hadrons/Environment.cc similarity index 98% rename from extras/Hadrons/Environment.cc rename to Hadrons/Environment.cc index ced61ce4..b2d8cf1a 100644 --- a/extras/Hadrons/Environment.cc +++ b/Hadrons/Environment.cc @@ -26,9 +26,9 @@ See the full license in the file "LICENSE" in the top level distribution directo *************************************************************************************/ /* END LEGAL */ -#include -#include -#include +#include +#include +#include using namespace Grid; using namespace QCD; diff --git a/extras/Hadrons/Environment.hpp b/Hadrons/Environment.hpp similarity index 99% rename from extras/Hadrons/Environment.hpp rename to Hadrons/Environment.hpp index c277b3db..32e6f05a 100644 --- a/extras/Hadrons/Environment.hpp +++ b/Hadrons/Environment.hpp @@ -29,7 +29,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_Environment_hpp_ #define Hadrons_Environment_hpp_ -#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Exceptions.cc b/Hadrons/Exceptions.cc similarity index 96% rename from extras/Hadrons/Exceptions.cc rename to Hadrons/Exceptions.cc index c44f4cd0..1ba6e7d1 100644 --- a/extras/Hadrons/Exceptions.cc +++ b/Hadrons/Exceptions.cc @@ -26,9 +26,9 @@ See the full license in the file "LICENSE" in the top level distribution directo *************************************************************************************/ /* END LEGAL */ -#include -#include -#include +#include +#include +#include #ifndef ERR_SUFF #define ERR_SUFF " (" + loc + ")" diff --git a/extras/Hadrons/Exceptions.hpp b/Hadrons/Exceptions.hpp similarity index 99% rename from extras/Hadrons/Exceptions.hpp rename to Hadrons/Exceptions.hpp index e6a7aea8..897997cb 100644 --- a/extras/Hadrons/Exceptions.hpp +++ b/Hadrons/Exceptions.hpp @@ -32,7 +32,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #include #include #ifndef Hadrons_Global_hpp_ -#include +#include #endif #define HADRONS_SRC_LOC std::string(__FUNCTION__) + " at " \ diff --git a/extras/Hadrons/Factory.hpp b/Hadrons/Factory.hpp similarity index 98% rename from extras/Hadrons/Factory.hpp rename to Hadrons/Factory.hpp index 07516640..08617402 100644 --- a/extras/Hadrons/Factory.hpp +++ b/Hadrons/Factory.hpp @@ -29,7 +29,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_Factory_hpp_ #define Hadrons_Factory_hpp_ -#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/GeneticScheduler.hpp b/Hadrons/GeneticScheduler.hpp similarity index 99% rename from extras/Hadrons/GeneticScheduler.hpp rename to Hadrons/GeneticScheduler.hpp index 83666402..b58648f9 100644 --- a/extras/Hadrons/GeneticScheduler.hpp +++ b/Hadrons/GeneticScheduler.hpp @@ -29,8 +29,8 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_GeneticScheduler_hpp_ #define Hadrons_GeneticScheduler_hpp_ -#include -#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Global.cc b/Hadrons/Global.cc similarity index 99% rename from extras/Hadrons/Global.cc rename to Hadrons/Global.cc index 1e747cda..df3b1a31 100644 --- a/extras/Hadrons/Global.cc +++ b/Hadrons/Global.cc @@ -26,7 +26,7 @@ See the full license in the file "LICENSE" in the top level distribution directo *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace QCD; diff --git a/extras/Hadrons/Global.hpp b/Hadrons/Global.hpp similarity index 99% rename from extras/Hadrons/Global.hpp rename to Hadrons/Global.hpp index e1e29e43..7a5df1ba 100644 --- a/extras/Hadrons/Global.hpp +++ b/Hadrons/Global.hpp @@ -219,6 +219,6 @@ void printTimeProfile(const std::map &timing, GridTime to END_HADRONS_NAMESPACE -#include +#include #endif // Hadrons_Global_hpp_ diff --git a/extras/Hadrons/Graph.hpp b/Hadrons/Graph.hpp similarity index 99% rename from extras/Hadrons/Graph.hpp rename to Hadrons/Graph.hpp index ad84e7e0..6f4a9e4a 100644 --- a/extras/Hadrons/Graph.hpp +++ b/Hadrons/Graph.hpp @@ -29,7 +29,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_Graph_hpp_ #define Hadrons_Graph_hpp_ -#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/HadronsXmlRun.cc b/Hadrons/HadronsXmlRun.cc similarity index 98% rename from extras/Hadrons/HadronsXmlRun.cc rename to Hadrons/HadronsXmlRun.cc index 6b613bb4..0b62bdd1 100644 --- a/extras/Hadrons/HadronsXmlRun.cc +++ b/Hadrons/HadronsXmlRun.cc @@ -26,7 +26,7 @@ See the full license in the file "LICENSE" in the top level distribution directo *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace QCD; diff --git a/extras/Hadrons/Makefile.am b/Hadrons/Makefile.am similarity index 94% rename from extras/Hadrons/Makefile.am rename to Hadrons/Makefile.am index 840c6fb5..93251dca 100644 --- a/extras/Hadrons/Makefile.am +++ b/Hadrons/Makefile.am @@ -11,7 +11,7 @@ libHadrons_a_SOURCES = \ Global.cc \ Module.cc \ VirtualMachine.cc -libHadrons_adir = $(pkgincludedir)/Hadrons +libHadrons_adir = $(includedir)/Hadrons nobase_libHadrons_a_HEADERS = \ $(modules_hpp) \ A2AVectors.hpp \ diff --git a/extras/Hadrons/Module.cc b/Hadrons/Module.cc similarity index 99% rename from extras/Hadrons/Module.cc rename to Hadrons/Module.cc index 8e915f6b..7bb0e862 100644 --- a/extras/Hadrons/Module.cc +++ b/Hadrons/Module.cc @@ -26,7 +26,7 @@ See the full license in the file "LICENSE" in the top level distribution directo *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace QCD; diff --git a/extras/Hadrons/Module.hpp b/Hadrons/Module.hpp similarity index 99% rename from extras/Hadrons/Module.hpp rename to Hadrons/Module.hpp index 02a20e5f..f374d231 100644 --- a/extras/Hadrons/Module.hpp +++ b/Hadrons/Module.hpp @@ -29,8 +29,8 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_Module_hpp_ #define Hadrons_Module_hpp_ -#include -#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/ModuleFactory.hpp b/Hadrons/ModuleFactory.hpp similarity index 93% rename from extras/Hadrons/ModuleFactory.hpp rename to Hadrons/ModuleFactory.hpp index d5c703fa..8fca06c3 100644 --- a/extras/Hadrons/ModuleFactory.hpp +++ b/Hadrons/ModuleFactory.hpp @@ -29,9 +29,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_ModuleFactory_hpp_ #define Hadrons_ModuleFactory_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/Hadrons/Modules.hpp b/Hadrons/Modules.hpp new file mode 100644 index 00000000..7725e8c2 --- /dev/null +++ b/Hadrons/Modules.hpp @@ -0,0 +1,96 @@ +/************************************************************************************* + +Grid physics library, www.github.com/paboyle/Grid + +Source file: extras/Hadrons/Modules.hpp + +Copyright (C) 2015-2018 + +Author: Antonin Portelli +Author: Guido Cossu +Author: James Harrison +Author: Lanny91 +Author: Peter Boyle +Author: Vera Guelpers +Author: fionnoh +Author: pretidav + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +See the full license in the file "LICENSE" in the top level distribution directory +*************************************************************************************/ +/* END LEGAL */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/extras/Hadrons/Modules/MAction/DWF.cc b/Hadrons/Modules/MAction/DWF.cc similarity index 96% rename from extras/Hadrons/Modules/MAction/DWF.cc rename to Hadrons/Modules/MAction/DWF.cc index ae518018..df720013 100644 --- a/extras/Hadrons/Modules/MAction/DWF.cc +++ b/Hadrons/Modules/MAction/DWF.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MAction/DWF.hpp b/Hadrons/Modules/MAction/DWF.hpp similarity index 97% rename from extras/Hadrons/Modules/MAction/DWF.hpp rename to Hadrons/Modules/MAction/DWF.hpp index 94a05cc8..093dd1a6 100644 --- a/extras/Hadrons/Modules/MAction/DWF.hpp +++ b/Hadrons/Modules/MAction/DWF.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MAction_DWF_hpp_ #define Hadrons_MAction_DWF_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MAction/MobiusDWF.cc b/Hadrons/Modules/MAction/MobiusDWF.cc similarity index 95% rename from extras/Hadrons/Modules/MAction/MobiusDWF.cc rename to Hadrons/Modules/MAction/MobiusDWF.cc index 9cc4755a..6efbfdb2 100644 --- a/extras/Hadrons/Modules/MAction/MobiusDWF.cc +++ b/Hadrons/Modules/MAction/MobiusDWF.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MAction/MobiusDWF.hpp b/Hadrons/Modules/MAction/MobiusDWF.hpp similarity index 97% rename from extras/Hadrons/Modules/MAction/MobiusDWF.hpp rename to Hadrons/Modules/MAction/MobiusDWF.hpp index 9cead7bd..7f96b9ca 100644 --- a/extras/Hadrons/Modules/MAction/MobiusDWF.hpp +++ b/Hadrons/Modules/MAction/MobiusDWF.hpp @@ -28,9 +28,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MAction_MobiusDWF_hpp_ #define Hadrons_MAction_MobiusDWF_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MAction/ScaledDWF.cc b/Hadrons/Modules/MAction/ScaledDWF.cc similarity index 95% rename from extras/Hadrons/Modules/MAction/ScaledDWF.cc rename to Hadrons/Modules/MAction/ScaledDWF.cc index 40eed326..437db78b 100644 --- a/extras/Hadrons/Modules/MAction/ScaledDWF.cc +++ b/Hadrons/Modules/MAction/ScaledDWF.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MAction/ScaledDWF.hpp b/Hadrons/Modules/MAction/ScaledDWF.hpp similarity index 97% rename from extras/Hadrons/Modules/MAction/ScaledDWF.hpp rename to Hadrons/Modules/MAction/ScaledDWF.hpp index b75ff31d..18993370 100644 --- a/extras/Hadrons/Modules/MAction/ScaledDWF.hpp +++ b/Hadrons/Modules/MAction/ScaledDWF.hpp @@ -28,9 +28,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MAction_ScaledDWF_hpp_ #define Hadrons_MAction_ScaledDWF_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MAction/Wilson.cc b/Hadrons/Modules/MAction/Wilson.cc similarity index 96% rename from extras/Hadrons/Modules/MAction/Wilson.cc rename to Hadrons/Modules/MAction/Wilson.cc index 11924d5a..db99f977 100644 --- a/extras/Hadrons/Modules/MAction/Wilson.cc +++ b/Hadrons/Modules/MAction/Wilson.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MAction/Wilson.hpp b/Hadrons/Modules/MAction/Wilson.hpp similarity index 97% rename from extras/Hadrons/Modules/MAction/Wilson.hpp rename to Hadrons/Modules/MAction/Wilson.hpp index 70e0acf1..ab604932 100644 --- a/extras/Hadrons/Modules/MAction/Wilson.hpp +++ b/Hadrons/Modules/MAction/Wilson.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MAction_Wilson_hpp_ #define Hadrons_MAction_Wilson_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MAction/WilsonClover.cc b/Hadrons/Modules/MAction/WilsonClover.cc similarity index 95% rename from extras/Hadrons/Modules/MAction/WilsonClover.cc rename to Hadrons/Modules/MAction/WilsonClover.cc index 77099044..8fe83a72 100644 --- a/extras/Hadrons/Modules/MAction/WilsonClover.cc +++ b/Hadrons/Modules/MAction/WilsonClover.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MAction/WilsonClover.hpp b/Hadrons/Modules/MAction/WilsonClover.hpp similarity index 97% rename from extras/Hadrons/Modules/MAction/WilsonClover.hpp rename to Hadrons/Modules/MAction/WilsonClover.hpp index 0fb3b442..31bb3d41 100644 --- a/extras/Hadrons/Modules/MAction/WilsonClover.hpp +++ b/Hadrons/Modules/MAction/WilsonClover.hpp @@ -31,9 +31,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MAction_WilsonClover_hpp_ #define Hadrons_MAction_WilsonClover_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MAction/ZMobiusDWF.cc b/Hadrons/Modules/MAction/ZMobiusDWF.cc similarity index 95% rename from extras/Hadrons/Modules/MAction/ZMobiusDWF.cc rename to Hadrons/Modules/MAction/ZMobiusDWF.cc index 7a49c120..5a1a0a6e 100644 --- a/extras/Hadrons/Modules/MAction/ZMobiusDWF.cc +++ b/Hadrons/Modules/MAction/ZMobiusDWF.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp b/Hadrons/Modules/MAction/ZMobiusDWF.hpp similarity index 97% rename from extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp rename to Hadrons/Modules/MAction/ZMobiusDWF.hpp index 4a275dd0..3a00ec51 100644 --- a/extras/Hadrons/Modules/MAction/ZMobiusDWF.hpp +++ b/Hadrons/Modules/MAction/ZMobiusDWF.hpp @@ -28,9 +28,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MAction_ZMobiusDWF_hpp_ #define Hadrons_MAction_ZMobiusDWF_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.cc b/Hadrons/Modules/MContraction/A2AMesonField.cc similarity index 95% rename from extras/Hadrons/Modules/MContraction/A2AMesonField.cc rename to Hadrons/Modules/MContraction/A2AMesonField.cc index 3d85acb5..d8fa8bf7 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.cc +++ b/Hadrons/Modules/MContraction/A2AMesonField.cc @@ -26,7 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp b/Hadrons/Modules/MContraction/A2AMesonField.hpp similarity index 98% rename from extras/Hadrons/Modules/MContraction/A2AMesonField.hpp rename to Hadrons/Modules/MContraction/A2AMesonField.hpp index 27c599f0..797707b9 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -30,12 +30,12 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MContraction_A2AMesonField_hpp_ #define Hadrons_MContraction_A2AMesonField_hpp_ -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #define MF_PARALLEL_IO #ifndef MF_IO_TYPE diff --git a/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp b/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp similarity index 99% rename from extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp rename to Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp index 649f9fdf..ed078130 100644 --- a/extras/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp +++ b/Hadrons/Modules/MContraction/A2AMesonFieldKernels.hpp @@ -29,8 +29,8 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MContraction_A2AMesonFieldKernels_hpp_ #define Hadrons_MContraction_A2AMesonFieldKernels_hpp_ -#include -#include +#include +#include #include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MContraction/Baryon.cc b/Hadrons/Modules/MContraction/Baryon.cc similarity index 95% rename from extras/Hadrons/Modules/MContraction/Baryon.cc rename to Hadrons/Modules/MContraction/Baryon.cc index 7daf5008..d397cd72 100644 --- a/extras/Hadrons/Modules/MContraction/Baryon.cc +++ b/Hadrons/Modules/MContraction/Baryon.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MContraction/Baryon.hpp b/Hadrons/Modules/MContraction/Baryon.hpp similarity index 97% rename from extras/Hadrons/Modules/MContraction/Baryon.hpp rename to Hadrons/Modules/MContraction/Baryon.hpp index 654706c6..927a299e 100644 --- a/extras/Hadrons/Modules/MContraction/Baryon.hpp +++ b/Hadrons/Modules/MContraction/Baryon.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MContraction_Baryon_hpp_ #define Hadrons_MContraction_Baryon_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MContraction/DiscLoop.cc b/Hadrons/Modules/MContraction/DiscLoop.cc similarity index 95% rename from extras/Hadrons/Modules/MContraction/DiscLoop.cc rename to Hadrons/Modules/MContraction/DiscLoop.cc index 8c7a72ee..683e4e74 100644 --- a/extras/Hadrons/Modules/MContraction/DiscLoop.cc +++ b/Hadrons/Modules/MContraction/DiscLoop.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MContraction/DiscLoop.hpp b/Hadrons/Modules/MContraction/DiscLoop.hpp similarity index 97% rename from extras/Hadrons/Modules/MContraction/DiscLoop.hpp rename to Hadrons/Modules/MContraction/DiscLoop.hpp index ea3d3d2f..c88df7d9 100644 --- a/extras/Hadrons/Modules/MContraction/DiscLoop.hpp +++ b/Hadrons/Modules/MContraction/DiscLoop.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MContraction_DiscLoop_hpp_ #define Hadrons_MContraction_DiscLoop_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MContraction/Gamma3pt.cc b/Hadrons/Modules/MContraction/Gamma3pt.cc similarity index 95% rename from extras/Hadrons/Modules/MContraction/Gamma3pt.cc rename to Hadrons/Modules/MContraction/Gamma3pt.cc index 13e911bb..fb6fe896 100644 --- a/extras/Hadrons/Modules/MContraction/Gamma3pt.cc +++ b/Hadrons/Modules/MContraction/Gamma3pt.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MContraction/Gamma3pt.hpp b/Hadrons/Modules/MContraction/Gamma3pt.hpp similarity index 98% rename from extras/Hadrons/Modules/MContraction/Gamma3pt.hpp rename to Hadrons/Modules/MContraction/Gamma3pt.hpp index e30845bc..2abdaf5f 100644 --- a/extras/Hadrons/Modules/MContraction/Gamma3pt.hpp +++ b/Hadrons/Modules/MContraction/Gamma3pt.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MContraction_Gamma3pt_hpp_ #define Hadrons_MContraction_Gamma3pt_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MContraction/Meson.cc b/Hadrons/Modules/MContraction/Meson.cc similarity index 95% rename from extras/Hadrons/Modules/MContraction/Meson.cc rename to Hadrons/Modules/MContraction/Meson.cc index 3b880705..e4c83331 100644 --- a/extras/Hadrons/Modules/MContraction/Meson.cc +++ b/Hadrons/Modules/MContraction/Meson.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MContraction/Meson.hpp b/Hadrons/Modules/MContraction/Meson.hpp similarity index 98% rename from extras/Hadrons/Modules/MContraction/Meson.hpp rename to Hadrons/Modules/MContraction/Meson.hpp index 66a19214..077110a4 100644 --- a/extras/Hadrons/Modules/MContraction/Meson.hpp +++ b/Hadrons/Modules/MContraction/Meson.hpp @@ -31,9 +31,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MContraction_Meson_hpp_ #define Hadrons_MContraction_Meson_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MContraction/WardIdentity.cc b/Hadrons/Modules/MContraction/WardIdentity.cc similarity index 95% rename from extras/Hadrons/Modules/MContraction/WardIdentity.cc rename to Hadrons/Modules/MContraction/WardIdentity.cc index 8b5cc2e3..ad2a46f1 100644 --- a/extras/Hadrons/Modules/MContraction/WardIdentity.cc +++ b/Hadrons/Modules/MContraction/WardIdentity.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MContraction/WardIdentity.hpp b/Hadrons/Modules/MContraction/WardIdentity.hpp similarity index 98% rename from extras/Hadrons/Modules/MContraction/WardIdentity.hpp rename to Hadrons/Modules/MContraction/WardIdentity.hpp index e529d7a2..b755015b 100644 --- a/extras/Hadrons/Modules/MContraction/WardIdentity.hpp +++ b/Hadrons/Modules/MContraction/WardIdentity.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MContraction_WardIdentity_hpp_ #define Hadrons_MContraction_WardIdentity_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MContraction/WeakHamiltonian.hpp b/Hadrons/Modules/MContraction/WeakHamiltonian.hpp similarity index 97% rename from extras/Hadrons/Modules/MContraction/WeakHamiltonian.hpp rename to Hadrons/Modules/MContraction/WeakHamiltonian.hpp index 507e8cdb..83c3b772 100644 --- a/extras/Hadrons/Modules/MContraction/WeakHamiltonian.hpp +++ b/Hadrons/Modules/MContraction/WeakHamiltonian.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MContraction_WeakHamiltonian_hpp_ #define Hadrons_MContraction_WeakHamiltonian_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MContraction/WeakHamiltonianEye.cc b/Hadrons/Modules/MContraction/WeakHamiltonianEye.cc similarity index 98% rename from extras/Hadrons/Modules/MContraction/WeakHamiltonianEye.cc rename to Hadrons/Modules/MContraction/WeakHamiltonianEye.cc index da1c877e..16cee0bc 100644 --- a/extras/Hadrons/Modules/MContraction/WeakHamiltonianEye.cc +++ b/Hadrons/Modules/MContraction/WeakHamiltonianEye.cc @@ -27,7 +27,7 @@ See the full license in the file "LICENSE" in the top level distribution directo *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MContraction/WeakHamiltonianEye.hpp b/Hadrons/Modules/MContraction/WeakHamiltonianEye.hpp similarity index 96% rename from extras/Hadrons/Modules/MContraction/WeakHamiltonianEye.hpp rename to Hadrons/Modules/MContraction/WeakHamiltonianEye.hpp index 24f39f6c..826547b4 100644 --- a/extras/Hadrons/Modules/MContraction/WeakHamiltonianEye.hpp +++ b/Hadrons/Modules/MContraction/WeakHamiltonianEye.hpp @@ -30,7 +30,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MContraction_WeakHamiltonianEye_hpp_ #define Hadrons_MContraction_WeakHamiltonianEye_hpp_ -#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.cc b/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.cc similarity index 98% rename from extras/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.cc rename to Hadrons/Modules/MContraction/WeakHamiltonianNonEye.cc index e7824d33..6ff22152 100644 --- a/extras/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.cc +++ b/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.cc @@ -27,7 +27,7 @@ See the full license in the file "LICENSE" in the top level distribution directo *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.hpp b/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.hpp similarity index 96% rename from extras/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.hpp rename to Hadrons/Modules/MContraction/WeakHamiltonianNonEye.hpp index c4cd66f1..93830421 100644 --- a/extras/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.hpp +++ b/Hadrons/Modules/MContraction/WeakHamiltonianNonEye.hpp @@ -30,7 +30,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MContraction_WeakHamiltonianNonEye_hpp_ #define Hadrons_MContraction_WeakHamiltonianNonEye_hpp_ -#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.cc b/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.cc similarity index 98% rename from extras/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.cc rename to Hadrons/Modules/MContraction/WeakNeutral4ptDisc.cc index 0b7a2cde..89e8a79b 100644 --- a/extras/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.cc +++ b/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.cc @@ -27,7 +27,7 @@ See the full license in the file "LICENSE" in the top level distribution directo *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.hpp b/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.hpp similarity index 96% rename from extras/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.hpp rename to Hadrons/Modules/MContraction/WeakNeutral4ptDisc.hpp index 5de2a751..c0b3ee53 100644 --- a/extras/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.hpp +++ b/Hadrons/Modules/MContraction/WeakNeutral4ptDisc.hpp @@ -30,7 +30,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MContraction_WeakNeutral4ptDisc_hpp_ #define Hadrons_MContraction_WeakNeutral4ptDisc_hpp_ -#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MFermion/FreeProp.cc b/Hadrons/Modules/MFermion/FreeProp.cc similarity index 96% rename from extras/Hadrons/Modules/MFermion/FreeProp.cc rename to Hadrons/Modules/MFermion/FreeProp.cc index 0ff07887..5184ed78 100644 --- a/extras/Hadrons/Modules/MFermion/FreeProp.cc +++ b/Hadrons/Modules/MFermion/FreeProp.cc @@ -26,7 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MFermion/FreeProp.hpp b/Hadrons/Modules/MFermion/FreeProp.hpp similarity index 98% rename from extras/Hadrons/Modules/MFermion/FreeProp.hpp rename to Hadrons/Modules/MFermion/FreeProp.hpp index 1b7ddb9a..c06240de 100644 --- a/extras/Hadrons/Modules/MFermion/FreeProp.hpp +++ b/Hadrons/Modules/MFermion/FreeProp.hpp @@ -31,9 +31,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MFermion_FreeProp_hpp_ #define Hadrons_MFermion_FreeProp_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MFermion/GaugeProp.cc b/Hadrons/Modules/MFermion/GaugeProp.cc similarity index 96% rename from extras/Hadrons/Modules/MFermion/GaugeProp.cc rename to Hadrons/Modules/MFermion/GaugeProp.cc index f03bf2be..027e4cfc 100644 --- a/extras/Hadrons/Modules/MFermion/GaugeProp.cc +++ b/Hadrons/Modules/MFermion/GaugeProp.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp b/Hadrons/Modules/MFermion/GaugeProp.hpp similarity index 97% rename from extras/Hadrons/Modules/MFermion/GaugeProp.hpp rename to Hadrons/Modules/MFermion/GaugeProp.hpp index d2c9df05..24a6446a 100644 --- a/extras/Hadrons/Modules/MFermion/GaugeProp.hpp +++ b/Hadrons/Modules/MFermion/GaugeProp.hpp @@ -32,10 +32,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MFermion_GaugeProp_hpp_ #define Hadrons_MFermion_GaugeProp_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MGauge/FundtoHirep.cc b/Hadrons/Modules/MGauge/FundtoHirep.cc similarity index 97% rename from extras/Hadrons/Modules/MGauge/FundtoHirep.cc rename to Hadrons/Modules/MGauge/FundtoHirep.cc index 824ee8c8..4a880134 100644 --- a/extras/Hadrons/Modules/MGauge/FundtoHirep.cc +++ b/Hadrons/Modules/MGauge/FundtoHirep.cc @@ -28,7 +28,7 @@ See the full license in the file "LICENSE" in the top level distribution directo *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp b/Hadrons/Modules/MGauge/FundtoHirep.hpp similarity index 95% rename from extras/Hadrons/Modules/MGauge/FundtoHirep.hpp rename to Hadrons/Modules/MGauge/FundtoHirep.hpp index 3a3a83e5..b2f90089 100644 --- a/extras/Hadrons/Modules/MGauge/FundtoHirep.hpp +++ b/Hadrons/Modules/MGauge/FundtoHirep.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MGauge_FundtoHirep_hpp_ #define Hadrons_MGauge_FundtoHirep_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MGauge/Random.cc b/Hadrons/Modules/MGauge/Random.cc similarity index 97% rename from extras/Hadrons/Modules/MGauge/Random.cc rename to Hadrons/Modules/MGauge/Random.cc index 59b43331..b33c9a56 100644 --- a/extras/Hadrons/Modules/MGauge/Random.cc +++ b/Hadrons/Modules/MGauge/Random.cc @@ -26,7 +26,7 @@ See the full license in the file "LICENSE" in the top level distribution directo *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MGauge/Random.hpp b/Hadrons/Modules/MGauge/Random.hpp similarity index 94% rename from extras/Hadrons/Modules/MGauge/Random.hpp rename to Hadrons/Modules/MGauge/Random.hpp index 13d0e478..a445aa5f 100644 --- a/extras/Hadrons/Modules/MGauge/Random.hpp +++ b/Hadrons/Modules/MGauge/Random.hpp @@ -29,9 +29,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MGauge_Random_hpp_ #define Hadrons_MGauge_Random_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MGauge/StochEm.cc b/Hadrons/Modules/MGauge/StochEm.cc similarity index 98% rename from extras/Hadrons/Modules/MGauge/StochEm.cc rename to Hadrons/Modules/MGauge/StochEm.cc index adb33d9c..e2b2c458 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.cc +++ b/Hadrons/Modules/MGauge/StochEm.cc @@ -27,7 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MGauge/StochEm.hpp b/Hadrons/Modules/MGauge/StochEm.hpp similarity index 95% rename from extras/Hadrons/Modules/MGauge/StochEm.hpp rename to Hadrons/Modules/MGauge/StochEm.hpp index fd07c294..151b61dc 100644 --- a/extras/Hadrons/Modules/MGauge/StochEm.hpp +++ b/Hadrons/Modules/MGauge/StochEm.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MGauge_StochEm_hpp_ #define Hadrons_MGauge_StochEm_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MGauge/StoutSmearing.cc b/Hadrons/Modules/MGauge/StoutSmearing.cc similarity index 95% rename from extras/Hadrons/Modules/MGauge/StoutSmearing.cc rename to Hadrons/Modules/MGauge/StoutSmearing.cc index 3dae8428..01378d1f 100644 --- a/extras/Hadrons/Modules/MGauge/StoutSmearing.cc +++ b/Hadrons/Modules/MGauge/StoutSmearing.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MGauge/StoutSmearing.hpp b/Hadrons/Modules/MGauge/StoutSmearing.hpp similarity index 97% rename from extras/Hadrons/Modules/MGauge/StoutSmearing.hpp rename to Hadrons/Modules/MGauge/StoutSmearing.hpp index ddfc1a73..9ed1e98b 100644 --- a/extras/Hadrons/Modules/MGauge/StoutSmearing.hpp +++ b/Hadrons/Modules/MGauge/StoutSmearing.hpp @@ -28,9 +28,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MGauge_StoutSmearing_hpp_ #define Hadrons_MGauge_StoutSmearing_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MGauge/Unit.cc b/Hadrons/Modules/MGauge/Unit.cc similarity index 97% rename from extras/Hadrons/Modules/MGauge/Unit.cc rename to Hadrons/Modules/MGauge/Unit.cc index 3df12fa7..aa85f97e 100644 --- a/extras/Hadrons/Modules/MGauge/Unit.cc +++ b/Hadrons/Modules/MGauge/Unit.cc @@ -26,7 +26,7 @@ See the full license in the file "LICENSE" in the top level distribution directo *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MGauge/Unit.hpp b/Hadrons/Modules/MGauge/Unit.hpp similarity index 94% rename from extras/Hadrons/Modules/MGauge/Unit.hpp rename to Hadrons/Modules/MGauge/Unit.hpp index 8bdb7ef3..8600dafe 100644 --- a/extras/Hadrons/Modules/MGauge/Unit.hpp +++ b/Hadrons/Modules/MGauge/Unit.hpp @@ -29,9 +29,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MGauge_Unit_hpp_ #define Hadrons_MGauge_Unit_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.cc b/Hadrons/Modules/MGauge/UnitEm.cc similarity index 97% rename from extras/Hadrons/Modules/MGauge/UnitEm.cc rename to Hadrons/Modules/MGauge/UnitEm.cc index 5c076592..06d0117a 100644 --- a/extras/Hadrons/Modules/MGauge/UnitEm.cc +++ b/Hadrons/Modules/MGauge/UnitEm.cc @@ -26,7 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MGauge/UnitEm.hpp b/Hadrons/Modules/MGauge/UnitEm.hpp similarity index 95% rename from extras/Hadrons/Modules/MGauge/UnitEm.hpp rename to Hadrons/Modules/MGauge/UnitEm.hpp index c6c89bb0..f6d83cb9 100644 --- a/extras/Hadrons/Modules/MGauge/UnitEm.hpp +++ b/Hadrons/Modules/MGauge/UnitEm.hpp @@ -29,9 +29,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MGauge_UnitEm_hpp_ #define Hadrons_MGauge_UnitEm_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MIO/LoadBinary.cc b/Hadrons/Modules/MIO/LoadBinary.cc similarity index 96% rename from extras/Hadrons/Modules/MIO/LoadBinary.cc rename to Hadrons/Modules/MIO/LoadBinary.cc index f04df9df..4e510a91 100644 --- a/extras/Hadrons/Modules/MIO/LoadBinary.cc +++ b/Hadrons/Modules/MIO/LoadBinary.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MIO/LoadBinary.hpp b/Hadrons/Modules/MIO/LoadBinary.hpp similarity index 97% rename from extras/Hadrons/Modules/MIO/LoadBinary.hpp rename to Hadrons/Modules/MIO/LoadBinary.hpp index b2070bef..c307a7dd 100644 --- a/extras/Hadrons/Modules/MIO/LoadBinary.hpp +++ b/Hadrons/Modules/MIO/LoadBinary.hpp @@ -28,9 +28,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MIO_LoadBinary_hpp_ #define Hadrons_MIO_LoadBinary_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.cc b/Hadrons/Modules/MIO/LoadCoarseEigenPack.cc similarity index 95% rename from extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.cc rename to Hadrons/Modules/MIO/LoadCoarseEigenPack.cc index 0ed7643c..68f96914 100644 --- a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.cc +++ b/Hadrons/Modules/MIO/LoadCoarseEigenPack.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp b/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp similarity index 97% rename from extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp rename to Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp index 945b6751..78834d14 100644 --- a/extras/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp +++ b/Hadrons/Modules/MIO/LoadCoarseEigenPack.hpp @@ -28,10 +28,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MIO_LoadCoarseEigenPack_hpp_ #define Hadrons_MIO_LoadCoarseEigenPack_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MIO/LoadEigenPack.cc b/Hadrons/Modules/MIO/LoadEigenPack.cc similarity index 95% rename from extras/Hadrons/Modules/MIO/LoadEigenPack.cc rename to Hadrons/Modules/MIO/LoadEigenPack.cc index 5b7aebc3..e492f0f1 100644 --- a/extras/Hadrons/Modules/MIO/LoadEigenPack.cc +++ b/Hadrons/Modules/MIO/LoadEigenPack.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp b/Hadrons/Modules/MIO/LoadEigenPack.hpp similarity index 96% rename from extras/Hadrons/Modules/MIO/LoadEigenPack.hpp rename to Hadrons/Modules/MIO/LoadEigenPack.hpp index fcad4107..8ad85eba 100644 --- a/extras/Hadrons/Modules/MIO/LoadEigenPack.hpp +++ b/Hadrons/Modules/MIO/LoadEigenPack.hpp @@ -28,10 +28,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MIO_LoadEigenPack_hpp_ #define Hadrons_MIO_LoadEigenPack_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MIO/LoadNersc.cc b/Hadrons/Modules/MIO/LoadNersc.cc similarity index 98% rename from extras/Hadrons/Modules/MIO/LoadNersc.cc rename to Hadrons/Modules/MIO/LoadNersc.cc index 36a56d54..35645f9b 100644 --- a/extras/Hadrons/Modules/MIO/LoadNersc.cc +++ b/Hadrons/Modules/MIO/LoadNersc.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MIO/LoadNersc.hpp b/Hadrons/Modules/MIO/LoadNersc.hpp similarity index 95% rename from extras/Hadrons/Modules/MIO/LoadNersc.hpp rename to Hadrons/Modules/MIO/LoadNersc.hpp index 11b86eec..80e5ee18 100644 --- a/extras/Hadrons/Modules/MIO/LoadNersc.hpp +++ b/Hadrons/Modules/MIO/LoadNersc.hpp @@ -28,9 +28,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MIO_LoadNersc_hpp_ #define Hadrons_MIO_LoadNersc_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MLoop/NoiseLoop.cc b/Hadrons/Modules/MLoop/NoiseLoop.cc similarity index 96% rename from extras/Hadrons/Modules/MLoop/NoiseLoop.cc rename to Hadrons/Modules/MLoop/NoiseLoop.cc index 5c510afd..57e4bda6 100644 --- a/extras/Hadrons/Modules/MLoop/NoiseLoop.cc +++ b/Hadrons/Modules/MLoop/NoiseLoop.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MLoop/NoiseLoop.hpp b/Hadrons/Modules/MLoop/NoiseLoop.hpp similarity index 97% rename from extras/Hadrons/Modules/MLoop/NoiseLoop.hpp rename to Hadrons/Modules/MLoop/NoiseLoop.hpp index 3ce9353d..9c6f4cf5 100644 --- a/extras/Hadrons/Modules/MLoop/NoiseLoop.hpp +++ b/Hadrons/Modules/MLoop/NoiseLoop.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MLoop_NoiseLoop_hpp_ #define Hadrons_MLoop_NoiseLoop_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc b/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc similarity index 95% rename from extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc rename to Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc index 50997962..e4e73944 100644 --- a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc +++ b/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp b/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp similarity index 96% rename from extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp rename to Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp index 3c324cd1..05f0252f 100644 --- a/extras/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp +++ b/Hadrons/Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp @@ -28,10 +28,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MNoise_TimeDilutedSpinColorDiagonal_hpp_ #define Hadrons_MNoise_TimeDilutedSpinColorDiagonal_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.cc b/Hadrons/Modules/MScalar/ChargedProp.cc similarity index 99% rename from extras/Hadrons/Modules/MScalar/ChargedProp.cc rename to Hadrons/Modules/MScalar/ChargedProp.cc index 88c3dffd..c1f8fc6c 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.cc +++ b/Hadrons/Modules/MScalar/ChargedProp.cc @@ -26,8 +26,8 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include -#include +#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp b/Hadrons/Modules/MScalar/ChargedProp.hpp similarity index 97% rename from extras/Hadrons/Modules/MScalar/ChargedProp.hpp rename to Hadrons/Modules/MScalar/ChargedProp.hpp index 5b2f0422..45872850 100644 --- a/extras/Hadrons/Modules/MScalar/ChargedProp.hpp +++ b/Hadrons/Modules/MScalar/ChargedProp.hpp @@ -29,9 +29,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalar_ChargedProp_hpp_ #define Hadrons_MScalar_ChargedProp_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalar/FreeProp.cc b/Hadrons/Modules/MScalar/FreeProp.cc similarity index 96% rename from extras/Hadrons/Modules/MScalar/FreeProp.cc rename to Hadrons/Modules/MScalar/FreeProp.cc index 8d256e3c..4ae87848 100644 --- a/extras/Hadrons/Modules/MScalar/FreeProp.cc +++ b/Hadrons/Modules/MScalar/FreeProp.cc @@ -25,8 +25,8 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include -#include +#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalar/FreeProp.hpp b/Hadrons/Modules/MScalar/FreeProp.hpp similarity index 95% rename from extras/Hadrons/Modules/MScalar/FreeProp.hpp rename to Hadrons/Modules/MScalar/FreeProp.hpp index 50f4ba52..c307d4f9 100644 --- a/extras/Hadrons/Modules/MScalar/FreeProp.hpp +++ b/Hadrons/Modules/MScalar/FreeProp.hpp @@ -28,9 +28,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalar_FreeProp_hpp_ #define Hadrons_MScalar_FreeProp_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalar/Scalar.hpp b/Hadrons/Modules/MScalar/Scalar.hpp similarity index 100% rename from extras/Hadrons/Modules/MScalar/Scalar.hpp rename to Hadrons/Modules/MScalar/Scalar.hpp diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.cc b/Hadrons/Modules/MScalar/ScalarVP.cc similarity index 99% rename from extras/Hadrons/Modules/MScalar/ScalarVP.cc rename to Hadrons/Modules/MScalar/ScalarVP.cc index b43b0c9f..cafbf952 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.cc +++ b/Hadrons/Modules/MScalar/ScalarVP.cc @@ -26,9 +26,9 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include -#include -#include +#include +#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp b/Hadrons/Modules/MScalar/ScalarVP.hpp similarity index 97% rename from extras/Hadrons/Modules/MScalar/ScalarVP.hpp rename to Hadrons/Modules/MScalar/ScalarVP.hpp index 191348d3..3c772c05 100644 --- a/extras/Hadrons/Modules/MScalar/ScalarVP.hpp +++ b/Hadrons/Modules/MScalar/ScalarVP.hpp @@ -29,9 +29,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalar_ScalarVP_hpp_ #define Hadrons_MScalar_ScalarVP_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc b/Hadrons/Modules/MScalar/VPCounterTerms.cc similarity index 98% rename from extras/Hadrons/Modules/MScalar/VPCounterTerms.cc rename to Hadrons/Modules/MScalar/VPCounterTerms.cc index 4c3fab85..9953a7be 100644 --- a/extras/Hadrons/Modules/MScalar/VPCounterTerms.cc +++ b/Hadrons/Modules/MScalar/VPCounterTerms.cc @@ -26,8 +26,8 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include -#include +#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp b/Hadrons/Modules/MScalar/VPCounterTerms.hpp similarity index 97% rename from extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp rename to Hadrons/Modules/MScalar/VPCounterTerms.hpp index 92d37686..fcfa5064 100644 --- a/extras/Hadrons/Modules/MScalar/VPCounterTerms.hpp +++ b/Hadrons/Modules/MScalar/VPCounterTerms.hpp @@ -29,9 +29,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalar_VPCounterTerms_hpp_ #define Hadrons_MScalar_VPCounterTerms_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/Div.cc b/Hadrons/Modules/MScalarSUN/Div.cc similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/Div.cc rename to Hadrons/Modules/MScalarSUN/Div.cc index 6a2e366d..1f55c593 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Div.cc +++ b/Hadrons/Modules/MScalarSUN/Div.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalarSUN/Div.hpp b/Hadrons/Modules/MScalarSUN/Div.hpp similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/Div.hpp rename to Hadrons/Modules/MScalarSUN/Div.hpp index ff26c60b..916b823f 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Div.hpp +++ b/Hadrons/Modules/MScalarSUN/Div.hpp @@ -28,10 +28,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalarSUN_Div_hpp_ #define Hadrons_MScalarSUN_Div_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/EMT.cc b/Hadrons/Modules/MScalarSUN/EMT.cc similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/EMT.cc rename to Hadrons/Modules/MScalarSUN/EMT.cc index 7f8ca16d..2ae024fd 100644 --- a/extras/Hadrons/Modules/MScalarSUN/EMT.cc +++ b/Hadrons/Modules/MScalarSUN/EMT.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp b/Hadrons/Modules/MScalarSUN/EMT.hpp similarity index 97% rename from extras/Hadrons/Modules/MScalarSUN/EMT.hpp rename to Hadrons/Modules/MScalarSUN/EMT.hpp index dbbfb6b3..4858490b 100644 --- a/extras/Hadrons/Modules/MScalarSUN/EMT.hpp +++ b/Hadrons/Modules/MScalarSUN/EMT.hpp @@ -28,10 +28,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalarSUN_EMT_hpp_ #define Hadrons_MScalarSUN_EMT_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/Grad.cc b/Hadrons/Modules/MScalarSUN/Grad.cc similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/Grad.cc rename to Hadrons/Modules/MScalarSUN/Grad.cc index be03b4a7..7e07dba4 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Grad.cc +++ b/Hadrons/Modules/MScalarSUN/Grad.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalarSUN/Grad.hpp b/Hadrons/Modules/MScalarSUN/Grad.hpp similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/Grad.hpp rename to Hadrons/Modules/MScalarSUN/Grad.hpp index ecf65e90..c8b25a7d 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Grad.hpp +++ b/Hadrons/Modules/MScalarSUN/Grad.hpp @@ -28,10 +28,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalarSUN_Grad_hpp_ #define Hadrons_MScalarSUN_Grad_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.cc b/Hadrons/Modules/MScalarSUN/ShiftProbe.cc similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/ShiftProbe.cc rename to Hadrons/Modules/MScalarSUN/ShiftProbe.cc index 30320667..f08e9f20 100644 --- a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.cc +++ b/Hadrons/Modules/MScalarSUN/ShiftProbe.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp b/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp similarity index 97% rename from extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp rename to Hadrons/Modules/MScalarSUN/ShiftProbe.hpp index edd38e42..dfc56d64 100644 --- a/extras/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp +++ b/Hadrons/Modules/MScalarSUN/ShiftProbe.hpp @@ -28,10 +28,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalarSUN_ShiftProbe_hpp_ #define Hadrons_MScalarSUN_ShiftProbe_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.cc b/Hadrons/Modules/MScalarSUN/StochFreeField.cc similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/StochFreeField.cc rename to Hadrons/Modules/MScalarSUN/StochFreeField.cc index db14d75d..e51868f0 100644 --- a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.cc +++ b/Hadrons/Modules/MScalarSUN/StochFreeField.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp b/Hadrons/Modules/MScalarSUN/StochFreeField.hpp similarity index 98% rename from extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp rename to Hadrons/Modules/MScalarSUN/StochFreeField.hpp index d757c1ab..1e4d2265 100644 --- a/extras/Hadrons/Modules/MScalarSUN/StochFreeField.hpp +++ b/Hadrons/Modules/MScalarSUN/StochFreeField.hpp @@ -28,9 +28,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalarSUN_StochFreeField_hpp_ #define Hadrons_MScalarSUN_StochFreeField_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.cc b/Hadrons/Modules/MScalarSUN/TimeMomProbe.cc similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.cc rename to Hadrons/Modules/MScalarSUN/TimeMomProbe.cc index eaddd318..5ae5336c 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.cc +++ b/Hadrons/Modules/MScalarSUN/TimeMomProbe.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp b/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp similarity index 98% rename from extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp rename to Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp index 80424936..89cc2893 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp +++ b/Hadrons/Modules/MScalarSUN/TimeMomProbe.hpp @@ -28,10 +28,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalarSUN_TimeMomProbe_hpp_ #define Hadrons_MScalarSUN_TimeMomProbe_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.cc b/Hadrons/Modules/MScalarSUN/TrKinetic.cc similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/TrKinetic.cc rename to Hadrons/Modules/MScalarSUN/TrKinetic.cc index 8d377f21..5053c88a 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.cc +++ b/Hadrons/Modules/MScalarSUN/TrKinetic.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp b/Hadrons/Modules/MScalarSUN/TrKinetic.hpp similarity index 97% rename from extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp rename to Hadrons/Modules/MScalarSUN/TrKinetic.hpp index a714daaa..6fb615a2 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrKinetic.hpp +++ b/Hadrons/Modules/MScalarSUN/TrKinetic.hpp @@ -28,10 +28,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalarSUN_TrKinetic_hpp_ #define Hadrons_MScalarSUN_TrKinetic_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/TrMag.cc b/Hadrons/Modules/MScalarSUN/TrMag.cc similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/TrMag.cc rename to Hadrons/Modules/MScalarSUN/TrMag.cc index 29897abc..20cf281d 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrMag.cc +++ b/Hadrons/Modules/MScalarSUN/TrMag.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp b/Hadrons/Modules/MScalarSUN/TrMag.hpp similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/TrMag.hpp rename to Hadrons/Modules/MScalarSUN/TrMag.hpp index cdbf7e30..eabb15f6 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrMag.hpp +++ b/Hadrons/Modules/MScalarSUN/TrMag.hpp @@ -28,10 +28,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalarSUN_TrMag_hpp_ #define Hadrons_MScalarSUN_TrMag_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/TrPhi.cc b/Hadrons/Modules/MScalarSUN/TrPhi.cc similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/TrPhi.cc rename to Hadrons/Modules/MScalarSUN/TrPhi.cc index e1fcb8e5..d5eca1e4 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrPhi.cc +++ b/Hadrons/Modules/MScalarSUN/TrPhi.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp b/Hadrons/Modules/MScalarSUN/TrPhi.hpp similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp rename to Hadrons/Modules/MScalarSUN/TrPhi.hpp index 9be0a5d6..28397f99 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TrPhi.hpp +++ b/Hadrons/Modules/MScalarSUN/TrPhi.hpp @@ -28,10 +28,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalarSUN_TrPhi_hpp_ #define Hadrons_MScalarSUN_TrPhi_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/TransProj.cc b/Hadrons/Modules/MScalarSUN/TransProj.cc similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/TransProj.cc rename to Hadrons/Modules/MScalarSUN/TransProj.cc index 0fb230bb..21ee1296 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TransProj.cc +++ b/Hadrons/Modules/MScalarSUN/TransProj.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp b/Hadrons/Modules/MScalarSUN/TransProj.hpp similarity index 97% rename from extras/Hadrons/Modules/MScalarSUN/TransProj.hpp rename to Hadrons/Modules/MScalarSUN/TransProj.hpp index c9b42bf0..d5bdbcfb 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TransProj.hpp +++ b/Hadrons/Modules/MScalarSUN/TransProj.hpp @@ -28,10 +28,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalarSUN_TransProj_hpp_ #define Hadrons_MScalarSUN_TransProj_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.cc b/Hadrons/Modules/MScalarSUN/TwoPoint.cc similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/TwoPoint.cc rename to Hadrons/Modules/MScalarSUN/TwoPoint.cc index 840cc02a..966ebab1 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.cc +++ b/Hadrons/Modules/MScalarSUN/TwoPoint.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp b/Hadrons/Modules/MScalarSUN/TwoPoint.hpp similarity index 97% rename from extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp rename to Hadrons/Modules/MScalarSUN/TwoPoint.hpp index 2407f26f..fac770e3 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPoint.hpp +++ b/Hadrons/Modules/MScalarSUN/TwoPoint.hpp @@ -28,10 +28,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalarSUN_TwoPoint_hpp_ #define Hadrons_MScalarSUN_TwoPoint_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.cc b/Hadrons/Modules/MScalarSUN/TwoPointNPR.cc similarity index 96% rename from extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.cc rename to Hadrons/Modules/MScalarSUN/TwoPointNPR.cc index 712f86d8..61bc9f90 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.cc +++ b/Hadrons/Modules/MScalarSUN/TwoPointNPR.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp b/Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp similarity index 97% rename from extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp rename to Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp index 48dddd4f..567e4662 100644 --- a/extras/Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp +++ b/Hadrons/Modules/MScalarSUN/TwoPointNPR.hpp @@ -28,10 +28,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalarSUN_TwoPointNPR_hpp_ #define Hadrons_MScalarSUN_TwoPointNPR_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MScalarSUN/Utils.hpp b/Hadrons/Modules/MScalarSUN/Utils.hpp similarity index 98% rename from extras/Hadrons/Modules/MScalarSUN/Utils.hpp rename to Hadrons/Modules/MScalarSUN/Utils.hpp index 68009f5e..b717f20c 100644 --- a/extras/Hadrons/Modules/MScalarSUN/Utils.hpp +++ b/Hadrons/Modules/MScalarSUN/Utils.hpp @@ -28,8 +28,8 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MScalarSUN_Utils_hpp_ #define Hadrons_MScalarSUN_Utils_hpp_ -#include -#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MSink/Point.cc b/Hadrons/Modules/MSink/Point.cc similarity index 96% rename from extras/Hadrons/Modules/MSink/Point.cc rename to Hadrons/Modules/MSink/Point.cc index 127c4c74..59bb26bc 100644 --- a/extras/Hadrons/Modules/MSink/Point.cc +++ b/Hadrons/Modules/MSink/Point.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MSink/Point.hpp b/Hadrons/Modules/MSink/Point.hpp similarity index 97% rename from extras/Hadrons/Modules/MSink/Point.hpp rename to Hadrons/Modules/MSink/Point.hpp index 7617ee78..722ff4dd 100644 --- a/extras/Hadrons/Modules/MSink/Point.hpp +++ b/Hadrons/Modules/MSink/Point.hpp @@ -31,9 +31,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MSink_Point_hpp_ #define Hadrons_MSink_Point_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MSink/Smear.cc b/Hadrons/Modules/MSink/Smear.cc similarity index 96% rename from extras/Hadrons/Modules/MSink/Smear.cc rename to Hadrons/Modules/MSink/Smear.cc index ff250140..dc2bea78 100644 --- a/extras/Hadrons/Modules/MSink/Smear.cc +++ b/Hadrons/Modules/MSink/Smear.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MSink/Smear.hpp b/Hadrons/Modules/MSink/Smear.hpp similarity index 97% rename from extras/Hadrons/Modules/MSink/Smear.hpp rename to Hadrons/Modules/MSink/Smear.hpp index 1a46c693..21e7bdf0 100644 --- a/extras/Hadrons/Modules/MSink/Smear.hpp +++ b/Hadrons/Modules/MSink/Smear.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MSink_Smear_hpp_ #define Hadrons_MSink_Smear_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.cc b/Hadrons/Modules/MSolver/A2AVectors.cc similarity index 96% rename from extras/Hadrons/Modules/MSolver/A2AVectors.cc rename to Hadrons/Modules/MSolver/A2AVectors.cc index a13920ff..df08ed4c 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.cc +++ b/Hadrons/Modules/MSolver/A2AVectors.cc @@ -26,7 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp b/Hadrons/Modules/MSolver/A2AVectors.hpp similarity index 96% rename from extras/Hadrons/Modules/MSolver/A2AVectors.hpp rename to Hadrons/Modules/MSolver/A2AVectors.hpp index 7022b90b..4573487a 100644 --- a/extras/Hadrons/Modules/MSolver/A2AVectors.hpp +++ b/Hadrons/Modules/MSolver/A2AVectors.hpp @@ -29,13 +29,13 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MSolver_A2AVectors_hpp_ #define Hadrons_MSolver_A2AVectors_hpp_ -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.cc b/Hadrons/Modules/MSolver/LocalCoherenceLanczos.cc similarity index 95% rename from extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.cc rename to Hadrons/Modules/MSolver/LocalCoherenceLanczos.cc index 5bddce95..3dc441ad 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.cc +++ b/Hadrons/Modules/MSolver/LocalCoherenceLanczos.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp b/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp similarity index 98% rename from extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp rename to Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp index c9088cf4..1179b6e4 100644 --- a/extras/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp +++ b/Hadrons/Modules/MSolver/LocalCoherenceLanczos.hpp @@ -28,10 +28,10 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MSolver_LocalCoherenceLanczos_hpp_ #define Hadrons_MSolver_LocalCoherenceLanczos_hpp_ -#include -#include -#include -#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.cc b/Hadrons/Modules/MSolver/RBPrecCG.cc similarity index 96% rename from extras/Hadrons/Modules/MSolver/RBPrecCG.cc rename to Hadrons/Modules/MSolver/RBPrecCG.cc index 867c6c5d..e0f3487c 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.cc +++ b/Hadrons/Modules/MSolver/RBPrecCG.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp b/Hadrons/Modules/MSolver/RBPrecCG.hpp similarity index 97% rename from extras/Hadrons/Modules/MSolver/RBPrecCG.hpp rename to Hadrons/Modules/MSolver/RBPrecCG.hpp index 8bcd3968..e4c6529f 100644 --- a/extras/Hadrons/Modules/MSolver/RBPrecCG.hpp +++ b/Hadrons/Modules/MSolver/RBPrecCG.hpp @@ -30,11 +30,11 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MSolver_RBPrecCG_hpp_ #define Hadrons_MSolver_RBPrecCG_hpp_ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MSource/Point.cc b/Hadrons/Modules/MSource/Point.cc similarity index 96% rename from extras/Hadrons/Modules/MSource/Point.cc rename to Hadrons/Modules/MSource/Point.cc index 5e49af2a..20e0a324 100644 --- a/extras/Hadrons/Modules/MSource/Point.cc +++ b/Hadrons/Modules/MSource/Point.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MSource/Point.hpp b/Hadrons/Modules/MSource/Point.hpp similarity index 97% rename from extras/Hadrons/Modules/MSource/Point.hpp rename to Hadrons/Modules/MSource/Point.hpp index 0898a1a8..21c67969 100644 --- a/extras/Hadrons/Modules/MSource/Point.hpp +++ b/Hadrons/Modules/MSource/Point.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MSource_Point_hpp_ #define Hadrons_MSource_Point_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MSource/SeqConserved.cc b/Hadrons/Modules/MSource/SeqConserved.cc similarity index 95% rename from extras/Hadrons/Modules/MSource/SeqConserved.cc rename to Hadrons/Modules/MSource/SeqConserved.cc index 35b6ef37..a2eb64f3 100644 --- a/extras/Hadrons/Modules/MSource/SeqConserved.cc +++ b/Hadrons/Modules/MSource/SeqConserved.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MSource/SeqConserved.hpp b/Hadrons/Modules/MSource/SeqConserved.hpp similarity index 98% rename from extras/Hadrons/Modules/MSource/SeqConserved.hpp rename to Hadrons/Modules/MSource/SeqConserved.hpp index ce9cd4e6..7779e370 100644 --- a/extras/Hadrons/Modules/MSource/SeqConserved.hpp +++ b/Hadrons/Modules/MSource/SeqConserved.hpp @@ -31,9 +31,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MSource_SeqConserved_hpp_ #define Hadrons_MSource_SeqConserved_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MSource/SeqGamma.cc b/Hadrons/Modules/MSource/SeqGamma.cc similarity index 96% rename from extras/Hadrons/Modules/MSource/SeqGamma.cc rename to Hadrons/Modules/MSource/SeqGamma.cc index ce4f3dd0..e566b762 100644 --- a/extras/Hadrons/Modules/MSource/SeqGamma.cc +++ b/Hadrons/Modules/MSource/SeqGamma.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MSource/SeqGamma.hpp b/Hadrons/Modules/MSource/SeqGamma.hpp similarity index 98% rename from extras/Hadrons/Modules/MSource/SeqGamma.hpp rename to Hadrons/Modules/MSource/SeqGamma.hpp index 2d8e1c31..58fcfa8d 100644 --- a/extras/Hadrons/Modules/MSource/SeqGamma.hpp +++ b/Hadrons/Modules/MSource/SeqGamma.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MSource_SeqGamma_hpp_ #define Hadrons_MSource_SeqGamma_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MSource/Wall.cc b/Hadrons/Modules/MSource/Wall.cc similarity index 96% rename from extras/Hadrons/Modules/MSource/Wall.cc rename to Hadrons/Modules/MSource/Wall.cc index 9b293232..c3c0a3f0 100644 --- a/extras/Hadrons/Modules/MSource/Wall.cc +++ b/Hadrons/Modules/MSource/Wall.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MSource/Wall.hpp b/Hadrons/Modules/MSource/Wall.hpp similarity index 97% rename from extras/Hadrons/Modules/MSource/Wall.hpp rename to Hadrons/Modules/MSource/Wall.hpp index f8bec19e..968fda87 100644 --- a/extras/Hadrons/Modules/MSource/Wall.hpp +++ b/Hadrons/Modules/MSource/Wall.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MSource_WallSource_hpp_ #define Hadrons_MSource_WallSource_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MSource/Z2.cc b/Hadrons/Modules/MSource/Z2.cc similarity index 96% rename from extras/Hadrons/Modules/MSource/Z2.cc rename to Hadrons/Modules/MSource/Z2.cc index 9644c6fd..6ed27400 100644 --- a/extras/Hadrons/Modules/MSource/Z2.cc +++ b/Hadrons/Modules/MSource/Z2.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MSource/Z2.hpp b/Hadrons/Modules/MSource/Z2.hpp similarity index 97% rename from extras/Hadrons/Modules/MSource/Z2.hpp rename to Hadrons/Modules/MSource/Z2.hpp index 51bbbaa2..77714941 100644 --- a/extras/Hadrons/Modules/MSource/Z2.hpp +++ b/Hadrons/Modules/MSource/Z2.hpp @@ -29,9 +29,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MSource_Z2_hpp_ #define Hadrons_MSource_Z2_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MUtilities/RandomVectors.cc b/Hadrons/Modules/MUtilities/RandomVectors.cc similarity index 95% rename from extras/Hadrons/Modules/MUtilities/RandomVectors.cc rename to Hadrons/Modules/MUtilities/RandomVectors.cc index 7da32322..89aea0ee 100644 --- a/extras/Hadrons/Modules/MUtilities/RandomVectors.cc +++ b/Hadrons/Modules/MUtilities/RandomVectors.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MUtilities/RandomVectors.hpp b/Hadrons/Modules/MUtilities/RandomVectors.hpp similarity index 97% rename from extras/Hadrons/Modules/MUtilities/RandomVectors.hpp rename to Hadrons/Modules/MUtilities/RandomVectors.hpp index 4da84506..5da18dc3 100644 --- a/extras/Hadrons/Modules/MUtilities/RandomVectors.hpp +++ b/Hadrons/Modules/MUtilities/RandomVectors.hpp @@ -28,9 +28,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MUtilities_RandomVectors_hpp_ #define Hadrons_MUtilities_RandomVectors_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MUtilities/TestSeqConserved.cc b/Hadrons/Modules/MUtilities/TestSeqConserved.cc similarity index 95% rename from extras/Hadrons/Modules/MUtilities/TestSeqConserved.cc rename to Hadrons/Modules/MUtilities/TestSeqConserved.cc index 99beac71..0ccdeac9 100644 --- a/extras/Hadrons/Modules/MUtilities/TestSeqConserved.cc +++ b/Hadrons/Modules/MUtilities/TestSeqConserved.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp b/Hadrons/Modules/MUtilities/TestSeqConserved.hpp similarity index 98% rename from extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp rename to Hadrons/Modules/MUtilities/TestSeqConserved.hpp index 7b1bc1db..db16a69c 100644 --- a/extras/Hadrons/Modules/MUtilities/TestSeqConserved.hpp +++ b/Hadrons/Modules/MUtilities/TestSeqConserved.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MUtilities_TestSeqConserved_hpp_ #define Hadrons_MUtilities_TestSeqConserved_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/MUtilities/TestSeqGamma.cc b/Hadrons/Modules/MUtilities/TestSeqGamma.cc similarity index 95% rename from extras/Hadrons/Modules/MUtilities/TestSeqGamma.cc rename to Hadrons/Modules/MUtilities/TestSeqGamma.cc index f53d9f85..70f39ddd 100644 --- a/extras/Hadrons/Modules/MUtilities/TestSeqGamma.cc +++ b/Hadrons/Modules/MUtilities/TestSeqGamma.cc @@ -25,7 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., See the full license in the file "LICENSE" in the top level distribution directory *************************************************************************************/ /* END LEGAL */ -#include +#include using namespace Grid; using namespace Hadrons; diff --git a/extras/Hadrons/Modules/MUtilities/TestSeqGamma.hpp b/Hadrons/Modules/MUtilities/TestSeqGamma.hpp similarity index 97% rename from extras/Hadrons/Modules/MUtilities/TestSeqGamma.hpp rename to Hadrons/Modules/MUtilities/TestSeqGamma.hpp index 6f2665e4..33761f03 100644 --- a/extras/Hadrons/Modules/MUtilities/TestSeqGamma.hpp +++ b/Hadrons/Modules/MUtilities/TestSeqGamma.hpp @@ -30,9 +30,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_MUtilities_TestSeqGamma_hpp_ #define Hadrons_MUtilities_TestSeqGamma_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/Modules/templates/Module_in_NS.cc.template b/Hadrons/Modules/templates/Module_in_NS.cc.template similarity index 100% rename from extras/Hadrons/Modules/templates/Module_in_NS.cc.template rename to Hadrons/Modules/templates/Module_in_NS.cc.template diff --git a/extras/Hadrons/Modules/templates/Module_in_NS.hpp.template b/Hadrons/Modules/templates/Module_in_NS.hpp.template similarity index 100% rename from extras/Hadrons/Modules/templates/Module_in_NS.hpp.template rename to Hadrons/Modules/templates/Module_in_NS.hpp.template diff --git a/extras/Hadrons/Modules/templates/Module_tmp_in_NS.cc.template b/Hadrons/Modules/templates/Module_tmp_in_NS.cc.template similarity index 100% rename from extras/Hadrons/Modules/templates/Module_tmp_in_NS.cc.template rename to Hadrons/Modules/templates/Module_tmp_in_NS.cc.template diff --git a/extras/Hadrons/Modules/templates/Module_tmp_in_NS.hpp.template b/Hadrons/Modules/templates/Module_tmp_in_NS.hpp.template similarity index 100% rename from extras/Hadrons/Modules/templates/Module_tmp_in_NS.hpp.template rename to Hadrons/Modules/templates/Module_tmp_in_NS.hpp.template diff --git a/extras/Hadrons/Solver.hpp b/Hadrons/Solver.hpp similarity index 98% rename from extras/Hadrons/Solver.hpp rename to Hadrons/Solver.hpp index 5d72e3d5..479516de 100644 --- a/extras/Hadrons/Solver.hpp +++ b/Hadrons/Solver.hpp @@ -28,7 +28,7 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_Solver_hpp_ #define Hadrons_Solver_hpp_ -#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/VirtualMachine.cc b/Hadrons/VirtualMachine.cc similarity index 99% rename from extras/Hadrons/VirtualMachine.cc rename to Hadrons/VirtualMachine.cc index 17aaaf63..ed36cec2 100644 --- a/extras/Hadrons/VirtualMachine.cc +++ b/Hadrons/VirtualMachine.cc @@ -26,9 +26,9 @@ See the full license in the file "LICENSE" in the top level distribution directo *************************************************************************************/ /* END LEGAL */ -#include -#include -#include +#include +#include +#include using namespace Grid; using namespace QCD; diff --git a/extras/Hadrons/VirtualMachine.hpp b/Hadrons/VirtualMachine.hpp similarity index 98% rename from extras/Hadrons/VirtualMachine.hpp rename to Hadrons/VirtualMachine.hpp index 7e6e36c2..aac7e8c4 100644 --- a/extras/Hadrons/VirtualMachine.hpp +++ b/Hadrons/VirtualMachine.hpp @@ -29,9 +29,9 @@ See the full license in the file "LICENSE" in the top level distribution directo #ifndef Hadrons_VirtualMachine_hpp_ #define Hadrons_VirtualMachine_hpp_ -#include -#include -#include +#include +#include +#include BEGIN_HADRONS_NAMESPACE diff --git a/extras/Hadrons/add_module.sh b/Hadrons/add_module.sh similarity index 100% rename from extras/Hadrons/add_module.sh rename to Hadrons/add_module.sh diff --git a/extras/Hadrons/add_module_template.sh b/Hadrons/add_module_template.sh similarity index 100% rename from extras/Hadrons/add_module_template.sh rename to Hadrons/add_module_template.sh diff --git a/extras/Hadrons/make_module_inst.sh b/Hadrons/make_module_inst.sh similarity index 100% rename from extras/Hadrons/make_module_inst.sh rename to Hadrons/make_module_inst.sh diff --git a/extras/Hadrons/make_module_list.sh b/Hadrons/make_module_list.sh similarity index 100% rename from extras/Hadrons/make_module_list.sh rename to Hadrons/make_module_list.sh diff --git a/extras/Hadrons/modules.inc b/Hadrons/modules.inc similarity index 100% rename from extras/Hadrons/modules.inc rename to Hadrons/modules.inc diff --git a/Makefile.am b/Makefile.am index b4f4f788..1901305b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,5 +1,5 @@ # additional include paths necessary to compile the C++ library -SUBDIRS = lib benchmarks tests extras +SUBDIRS = Grid Hadrons benchmarks tests include $(top_srcdir)/doxygen.inc @@ -8,7 +8,7 @@ bin_SCRIPTS=grid-config BUILT_SOURCES = version.h version.h: - if [ `git status --porcelain | wc -l` -gt 0 ]; then a="uncommited changes"; else a="no uncommitted changes"; fi; echo "`git log -n 1 --format=format:"#define GITHASH \\"%H:%d $$a\\"%n" HEAD`" > $(srcdir)/lib/version.h + if [ `git status --porcelain | wc -l` -gt 0 ]; then a="uncommited changes"; else a="no uncommitted changes"; fi; echo "`git log -n 1 --format=format:"#define GITHASH \\"%H:%d $$a\\"%n" HEAD`" > $(srcdir)/Grid/version.h .PHONY: bench check tests doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL) diff --git a/configure.ac b/configure.ac index 774824e7..ee8a0620 100644 --- a/configure.ac +++ b/configure.ac @@ -6,8 +6,8 @@ AC_CANONICAL_TARGET AM_INIT_AUTOMAKE([subdir-objects 1.13]) AM_EXTRA_RECURSIVE_TARGETS([tests bench]) AC_CONFIG_MACRO_DIR([m4]) -AC_CONFIG_SRCDIR([lib/Grid.h]) -AC_CONFIG_HEADERS([lib/Config.h],[sed -i 's|PACKAGE_|GRID_|' lib/Config.h]) +AC_CONFIG_SRCDIR([Grid/Grid.h]) +AC_CONFIG_HEADERS([Grid/Config.h],[sed -i 's|PACKAGE_|GRID_|' Grid/Config.h]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) ################ Get git info @@ -491,9 +491,9 @@ GRID_LIBS=$LIBS GRID_SHORT_SHA=`git rev-parse --short HEAD` GRID_SHA=`git rev-parse HEAD` GRID_BRANCH=`git rev-parse --abbrev-ref HEAD` -AM_CXXFLAGS="-I${abs_srcdir}/include -I${abs_srcdir}/include/Grid $AM_CXXFLAGS" -AM_CFLAGS="-I${abs_srcdir}/include -I${abs_srcdir}/include/Grid $AM_CFLAGS" -AM_LDFLAGS="-L${cwd}/lib $AM_LDFLAGS" +AM_CXXFLAGS="-I${abs_srcdir} $AM_CXXFLAGS" +AM_CFLAGS="-I${abs_srcdir} $AM_CFLAGS" +AM_LDFLAGS="-L${cwd}/Grid $AM_LDFLAGS" AC_SUBST([AM_CFLAGS]) AC_SUBST([AM_CXXFLAGS]) AC_SUBST([AM_LDFLAGS]) @@ -547,7 +547,7 @@ AC_SUBST([GRID_SUMMARY]) AC_CONFIG_FILES([grid-config], [chmod +x grid-config]) AC_CONFIG_FILES(Makefile) -AC_CONFIG_FILES(lib/Makefile) +AC_CONFIG_FILES(Grid/Makefile) AC_CONFIG_FILES(tests/Makefile) AC_CONFIG_FILES(tests/IO/Makefile) AC_CONFIG_FILES(tests/core/Makefile) @@ -561,8 +561,7 @@ AC_CONFIG_FILES(tests/smearing/Makefile) AC_CONFIG_FILES(tests/qdpxx/Makefile) AC_CONFIG_FILES(tests/testu01/Makefile) AC_CONFIG_FILES(benchmarks/Makefile) -AC_CONFIG_FILES(extras/Makefile) -AC_CONFIG_FILES(extras/Hadrons/Makefile) +AC_CONFIG_FILES(Hadrons/Makefile) AC_OUTPUT echo "" diff --git a/extras/Hadrons/Modules.hpp b/extras/Hadrons/Modules.hpp deleted file mode 100644 index 86d50755..00000000 --- a/extras/Hadrons/Modules.hpp +++ /dev/null @@ -1,96 +0,0 @@ -/************************************************************************************* - -Grid physics library, www.github.com/paboyle/Grid - -Source file: extras/Hadrons/Modules.hpp - -Copyright (C) 2015-2018 - -Author: Antonin Portelli -Author: Guido Cossu -Author: James Harrison -Author: Lanny91 -Author: Peter Boyle -Author: Vera Guelpers -Author: fionnoh -Author: pretidav - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -See the full license in the file "LICENSE" in the top level distribution directory -*************************************************************************************/ -/* END LEGAL */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/extras/Makefile.am b/extras/Makefile.am deleted file mode 100644 index d8c2b675..00000000 --- a/extras/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -SUBDIRS = Hadrons \ No newline at end of file diff --git a/extras/qed-fvol/Global.cc b/extras/qed-fvol/Global.cc deleted file mode 100644 index 57ed97cc..00000000 --- a/extras/qed-fvol/Global.cc +++ /dev/null @@ -1,11 +0,0 @@ -#include - -using namespace Grid; -using namespace QCD; -using namespace QedFVol; - -QedFVolLogger QedFVol::QedFVolLogError(1,"Error"); -QedFVolLogger QedFVol::QedFVolLogWarning(1,"Warning"); -QedFVolLogger QedFVol::QedFVolLogMessage(1,"Message"); -QedFVolLogger QedFVol::QedFVolLogIterative(1,"Iterative"); -QedFVolLogger QedFVol::QedFVolLogDebug(1,"Debug"); diff --git a/extras/qed-fvol/Global.hpp b/extras/qed-fvol/Global.hpp deleted file mode 100644 index 7f07200d..00000000 --- a/extras/qed-fvol/Global.hpp +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef QedFVol_Global_hpp_ -#define QedFVol_Global_hpp_ - -#include - -#define BEGIN_QEDFVOL_NAMESPACE \ -namespace Grid {\ -using namespace QCD;\ -namespace QedFVol {\ -using Grid::operator<<; -#define END_QEDFVOL_NAMESPACE }} - -/* the 'using Grid::operator<<;' statement prevents a very nasty compilation - * error with GCC (clang compiles fine without it). - */ - -BEGIN_QEDFVOL_NAMESPACE - -class QedFVolLogger: public Logger -{ -public: - QedFVolLogger(int on, std::string nm): Logger("QedFVol", on, nm, - GridLogColours, "BLACK"){}; -}; - -#define LOG(channel) std::cout << QedFVolLog##channel -#define QEDFVOL_ERROR(msg)\ -LOG(Error) << msg << " (" << __FUNCTION__ << " at " << __FILE__ << ":"\ - << __LINE__ << ")" << std::endl;\ -abort(); - -#define DEBUG_VAR(var) LOG(Debug) << #var << "= " << (var) << std::endl; - -extern QedFVolLogger QedFVolLogError; -extern QedFVolLogger QedFVolLogWarning; -extern QedFVolLogger QedFVolLogMessage; -extern QedFVolLogger QedFVolLogIterative; -extern QedFVolLogger QedFVolLogDebug; - -END_QEDFVOL_NAMESPACE - -#endif // QedFVol_Global_hpp_ diff --git a/extras/qed-fvol/Makefile.am b/extras/qed-fvol/Makefile.am deleted file mode 100644 index 0a9030c7..00000000 --- a/extras/qed-fvol/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -AM_CXXFLAGS += -I$(top_srcdir)/extras - -bin_PROGRAMS = qed-fvol - -qed_fvol_SOURCES = \ - qed-fvol.cc \ - Global.cc - -qed_fvol_LDADD = -lGrid diff --git a/extras/qed-fvol/WilsonLoops.h b/extras/qed-fvol/WilsonLoops.h deleted file mode 100644 index 98db6b7a..00000000 --- a/extras/qed-fvol/WilsonLoops.h +++ /dev/null @@ -1,265 +0,0 @@ -#ifndef QEDFVOL_WILSONLOOPS_H -#define QEDFVOL_WILSONLOOPS_H - -#include - -BEGIN_QEDFVOL_NAMESPACE - -template class NewWilsonLoops : public Gimpl { -public: - INHERIT_GIMPL_TYPES(Gimpl); - - typedef typename Gimpl::GaugeLinkField GaugeMat; - typedef typename Gimpl::GaugeField GaugeLorentz; - - ////////////////////////////////////////////////// - // directed plaquette oriented in mu,nu plane - ////////////////////////////////////////////////// - static void dirPlaquette(GaugeMat &plaq, const std::vector &U, - const int mu, const int nu) { - // Annoyingly, must use either scope resolution to find dependent base - // class, - // or this-> ; there is no "this" in a static method. This forces explicit - // Gimpl scope - // resolution throughout the usage in this file, and rather defeats the - // purpose of deriving - // from Gimpl. - plaq = Gimpl::CovShiftBackward( - U[mu], mu, Gimpl::CovShiftBackward( - U[nu], nu, Gimpl::CovShiftForward(U[mu], mu, U[nu]))); - } - ////////////////////////////////////////////////// - // trace of directed plaquette oriented in mu,nu plane - ////////////////////////////////////////////////// - static void traceDirPlaquette(LatticeComplex &plaq, - const std::vector &U, const int mu, - const int nu) { - GaugeMat sp(U[0]._grid); - dirPlaquette(sp, U, mu, nu); - plaq = trace(sp); - } - ////////////////////////////////////////////////// - // sum over all planes of plaquette - ////////////////////////////////////////////////// - static void sitePlaquette(LatticeComplex &Plaq, - const std::vector &U) { - LatticeComplex sitePlaq(U[0]._grid); - Plaq = zero; - for (int mu = 1; mu < U[0]._grid->_ndimension; mu++) { - for (int nu = 0; nu < mu; nu++) { - traceDirPlaquette(sitePlaq, U, mu, nu); - Plaq = Plaq + sitePlaq; - } - } - } - ////////////////////////////////////////////////// - // sum over all x,y,z,t and over all planes of plaquette - ////////////////////////////////////////////////// - static Real sumPlaquette(const GaugeLorentz &Umu) { - std::vector U(4, Umu._grid); - - for (int mu = 0; mu < Umu._grid->_ndimension; mu++) { - U[mu] = PeekIndex(Umu, mu); - } - - LatticeComplex Plaq(Umu._grid); - - sitePlaquette(Plaq, U); - - TComplex Tp = sum(Plaq); - Complex p = TensorRemove(Tp); - return p.real(); - } - ////////////////////////////////////////////////// - // average over all x,y,z,t and over all planes of plaquette - ////////////////////////////////////////////////// - static Real avgPlaquette(const GaugeLorentz &Umu) { - int ndim = Umu._grid->_ndimension; - Real sumplaq = sumPlaquette(Umu); - Real vol = Umu._grid->gSites(); - Real faces = (1.0 * ndim * (ndim - 1)) / 2.0; - return sumplaq / vol / faces / Nc; // Nc dependent... FIXME - } - - ////////////////////////////////////////////////// - // Wilson loop of size (R1, R2), oriented in mu,nu plane - ////////////////////////////////////////////////// - static void wilsonLoop(GaugeMat &wl, const std::vector &U, - const int Rmu, const int Rnu, - const int mu, const int nu) { - wl = U[nu]; - - for(int i = 0; i < Rnu-1; i++){ - wl = Gimpl::CovShiftForward(U[nu], nu, wl); - } - - for(int i = 0; i < Rmu; i++){ - wl = Gimpl::CovShiftForward(U[mu], mu, wl); - } - - for(int i = 0; i < Rnu; i++){ - wl = Gimpl::CovShiftBackward(U[nu], nu, wl); - } - - for(int i = 0; i < Rmu; i++){ - wl = Gimpl::CovShiftBackward(U[mu], mu, wl); - } - } - ////////////////////////////////////////////////// - // trace of Wilson Loop oriented in mu,nu plane - ////////////////////////////////////////////////// - static void traceWilsonLoop(LatticeComplex &wl, - const std::vector &U, - const int Rmu, const int Rnu, - const int mu, const int nu) { - GaugeMat sp(U[0]._grid); - wilsonLoop(sp, U, Rmu, Rnu, mu, nu); - wl = trace(sp); - } - ////////////////////////////////////////////////// - // sum over all planes of Wilson loop - ////////////////////////////////////////////////// - static void siteWilsonLoop(LatticeComplex &Wl, - const std::vector &U, - const int R1, const int R2) { - LatticeComplex siteWl(U[0]._grid); - Wl = zero; - for (int mu = 1; mu < U[0]._grid->_ndimension; mu++) { - for (int nu = 0; nu < mu; nu++) { - traceWilsonLoop(siteWl, U, R1, R2, mu, nu); - Wl = Wl + siteWl; - traceWilsonLoop(siteWl, U, R2, R1, mu, nu); - Wl = Wl + siteWl; - } - } - } - ////////////////////////////////////////////////// - // sum over planes of Wilson loop with length R1 - // in the time direction - ////////////////////////////////////////////////// - static void siteTimelikeWilsonLoop(LatticeComplex &Wl, - const std::vector &U, - const int R1, const int R2) { - LatticeComplex siteWl(U[0]._grid); - - int ndim = U[0]._grid->_ndimension; - - Wl = zero; - for (int nu = 0; nu < ndim - 1; nu++) { - traceWilsonLoop(siteWl, U, R1, R2, ndim-1, nu); - Wl = Wl + siteWl; - } - } - ////////////////////////////////////////////////// - // sum Wilson loop over all planes orthogonal to the time direction - ////////////////////////////////////////////////// - static void siteSpatialWilsonLoop(LatticeComplex &Wl, - const std::vector &U, - const int R1, const int R2) { - LatticeComplex siteWl(U[0]._grid); - - Wl = zero; - for (int mu = 1; mu < U[0]._grid->_ndimension - 1; mu++) { - for (int nu = 0; nu < mu; nu++) { - traceWilsonLoop(siteWl, U, R1, R2, mu, nu); - Wl = Wl + siteWl; - traceWilsonLoop(siteWl, U, R2, R1, mu, nu); - Wl = Wl + siteWl; - } - } - } - ////////////////////////////////////////////////// - // sum over all x,y,z,t and over all planes of Wilson loop - ////////////////////////////////////////////////// - static Real sumWilsonLoop(const GaugeLorentz &Umu, - const int R1, const int R2) { - std::vector U(4, Umu._grid); - - for (int mu = 0; mu < Umu._grid->_ndimension; mu++) { - U[mu] = PeekIndex(Umu, mu); - } - - LatticeComplex Wl(Umu._grid); - - siteWilsonLoop(Wl, U, R1, R2); - - TComplex Tp = sum(Wl); - Complex p = TensorRemove(Tp); - return p.real(); - } - ////////////////////////////////////////////////// - // sum over all x,y,z,t and over all planes of timelike Wilson loop - ////////////////////////////////////////////////// - static Real sumTimelikeWilsonLoop(const GaugeLorentz &Umu, - const int R1, const int R2) { - std::vector U(4, Umu._grid); - - for (int mu = 0; mu < Umu._grid->_ndimension; mu++) { - U[mu] = PeekIndex(Umu, mu); - } - - LatticeComplex Wl(Umu._grid); - - siteTimelikeWilsonLoop(Wl, U, R1, R2); - - TComplex Tp = sum(Wl); - Complex p = TensorRemove(Tp); - return p.real(); - } - ////////////////////////////////////////////////// - // sum over all x,y,z,t and over all planes of spatial Wilson loop - ////////////////////////////////////////////////// - static Real sumSpatialWilsonLoop(const GaugeLorentz &Umu, - const int R1, const int R2) { - std::vector U(4, Umu._grid); - - for (int mu = 0; mu < Umu._grid->_ndimension; mu++) { - U[mu] = PeekIndex(Umu, mu); - } - - LatticeComplex Wl(Umu._grid); - - siteSpatialWilsonLoop(Wl, U, R1, R2); - - TComplex Tp = sum(Wl); - Complex p = TensorRemove(Tp); - return p.real(); - } - ////////////////////////////////////////////////// - // average over all x,y,z,t and over all planes of Wilson loop - ////////////////////////////////////////////////// - static Real avgWilsonLoop(const GaugeLorentz &Umu, - const int R1, const int R2) { - int ndim = Umu._grid->_ndimension; - Real sumWl = sumWilsonLoop(Umu, R1, R2); - Real vol = Umu._grid->gSites(); - Real faces = 1.0 * ndim * (ndim - 1); - return sumWl / vol / faces / Nc; // Nc dependent... FIXME - } - ////////////////////////////////////////////////// - // average over all x,y,z,t and over all planes of timelike Wilson loop - ////////////////////////////////////////////////// - static Real avgTimelikeWilsonLoop(const GaugeLorentz &Umu, - const int R1, const int R2) { - int ndim = Umu._grid->_ndimension; - Real sumWl = sumTimelikeWilsonLoop(Umu, R1, R2); - Real vol = Umu._grid->gSites(); - Real faces = 1.0 * (ndim - 1); - return sumWl / vol / faces / Nc; // Nc dependent... FIXME - } - ////////////////////////////////////////////////// - // average over all x,y,z,t and over all planes of spatial Wilson loop - ////////////////////////////////////////////////// - static Real avgSpatialWilsonLoop(const GaugeLorentz &Umu, - const int R1, const int R2) { - int ndim = Umu._grid->_ndimension; - Real sumWl = sumSpatialWilsonLoop(Umu, R1, R2); - Real vol = Umu._grid->gSites(); - Real faces = 1.0 * (ndim - 1) * (ndim - 2); - return sumWl / vol / faces / Nc; // Nc dependent... FIXME - } -}; - -END_QEDFVOL_NAMESPACE - -#endif // QEDFVOL_WILSONLOOPS_H \ No newline at end of file diff --git a/extras/qed-fvol/qed-fvol.cc b/extras/qed-fvol/qed-fvol.cc deleted file mode 100644 index 3ecac2fc..00000000 --- a/extras/qed-fvol/qed-fvol.cc +++ /dev/null @@ -1,88 +0,0 @@ -#include -#include - -using namespace Grid; -using namespace QCD; -using namespace QedFVol; - -typedef PeriodicGaugeImpl QedPeriodicGimplR; -typedef PhotonR::GaugeField EmField; -typedef PhotonR::GaugeLinkField EmComp; - -const int NCONFIGS = 10; -const int NWILSON = 10; - -int main(int argc, char *argv[]) -{ - // parse command line - std::string parameterFileName; - - if (argc < 2) - { - std::cerr << "usage: " << argv[0] << " [Grid options]"; - std::cerr << std::endl; - std::exit(EXIT_FAILURE); - } - parameterFileName = argv[1]; - - // initialization - Grid_init(&argc, &argv); - QedFVolLogError.Active(GridLogError.isActive()); - QedFVolLogWarning.Active(GridLogWarning.isActive()); - QedFVolLogMessage.Active(GridLogMessage.isActive()); - QedFVolLogIterative.Active(GridLogIterative.isActive()); - QedFVolLogDebug.Active(GridLogDebug.isActive()); - LOG(Message) << "Grid initialized" << std::endl; - - // QED stuff - std::vector latt_size = GridDefaultLatt(); - std::vector simd_layout = GridDefaultSimd(4, vComplex::Nsimd()); - std::vector mpi_layout = GridDefaultMpi(); - GridCartesian grid(latt_size,simd_layout,mpi_layout); - GridParallelRNG pRNG(&grid); - PhotonR photon(PhotonR::Gauge::feynman, - PhotonR::ZmScheme::qedL); - EmField a(&grid); - EmField expA(&grid); - - Complex imag_unit(0, 1); - - Real wlA; - std::vector logWlAvg(NWILSON, 0.0), logWlTime(NWILSON, 0.0), logWlSpace(NWILSON, 0.0); - - pRNG.SeedRandomDevice(); - - LOG(Message) << "Wilson loop calculation beginning" << std::endl; - for(int ic = 0; ic < NCONFIGS; ic++){ - LOG(Message) << "Configuration " << ic <::avgWilsonLoop(expA, iw, iw) * 3; - logWlAvg[iw-1] -= 2*log(wlA); - wlA = NewWilsonLoops::avgTimelikeWilsonLoop(expA, iw, iw) * 3; - logWlTime[iw-1] -= 2*log(wlA); - wlA = NewWilsonLoops::avgSpatialWilsonLoop(expA, iw, iw) * 3; - logWlSpace[iw-1] -= 2*log(wlA); - } - } - LOG(Message) << "Wilson loop calculation completed" << std::endl; - - // Calculate Wilson loops - for(int iw=1; iw<=10; iw++){ - LOG(Message) << iw << 'x' << iw << " Wilson loop" << std::endl; - LOG(Message) << "-2log(W) average: " << logWlAvg[iw-1]/NCONFIGS << std::endl; - LOG(Message) << "-2log(W) timelike: " << logWlTime[iw-1]/NCONFIGS << std::endl; - LOG(Message) << "-2log(W) spatial: " << logWlSpace[iw-1]/NCONFIGS << std::endl; - } - - // epilogue - LOG(Message) << "Grid is finalizing now" << std::endl; - Grid_finalize(); - - return EXIT_SUCCESS; -} diff --git a/lib/.dirstamp b/lib/.dirstamp deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/Hadrons b/lib/Hadrons deleted file mode 120000 index 1f422592..00000000 --- a/lib/Hadrons +++ /dev/null @@ -1 +0,0 @@ -../extras/Hadrons \ No newline at end of file diff --git a/lib/qcd/hmc/.dirstamp b/lib/qcd/hmc/.dirstamp deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/qcd/hmc/integrators/.dirstamp b/lib/qcd/hmc/integrators/.dirstamp deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/simd/.dirstamp b/lib/simd/.dirstamp deleted file mode 100644 index e69de29b..00000000 diff --git a/scripts/filelist b/scripts/filelist index 74f8e334..6db53687 100755 --- a/scripts/filelist +++ b/scripts/filelist @@ -3,7 +3,7 @@ home=`pwd` # library Make.inc -cd $home/lib +cd $home/Grid HFILES=`find . -type f -name '*.h' -not -name '*Hdf5*' -not -path '*/gamma-gen/*' -not -path '*/Old/*' -not -path '*/Eigen/*'` HFILES="$HFILES" CCFILES=`find . -type f -name '*.cc' -not -path '*/gamma-gen/*' -not -name '*Communicator*.cc' -not -name '*SharedMemory*.cc' -not -name '*Hdf5*'` diff --git a/scripts/update_eigen.sh b/scripts/update_eigen.sh index 5ed59655..b1834175 100755 --- a/scripts/update_eigen.sh +++ b/scripts/update_eigen.sh @@ -7,7 +7,7 @@ fi ARC=$1 INITDIR=`pwd` -rm -f lib/Eigen +rm -f Grid/Eigen rm -rf Eigen ################## @@ -21,13 +21,13 @@ ARCDIR=`tar -tf ${ARC} | head -n1 | sed -e 's@/.*@@'` ############################### mv ${ARCDIR} Eigen -ln -s ${INITDIR}/Eigen/Eigen ${INITDIR}/lib/Eigen -ln -s ${INITDIR}/Eigen/unsupported/Eigen ${INITDIR}/lib/Eigen/unsupported +ln -s ${INITDIR}/Eigen/Eigen ${INITDIR}/Grid/Eigen +ln -s ${INITDIR}/Eigen/unsupported/Eigen ${INITDIR}/Grid/Eigen/unsupported # Eigen source headers -cd ${INITDIR}/lib -echo 'eigen_files =\' > ${INITDIR}/lib/Eigen.inc -find -L Eigen -print | sed 's/^/ /;$q;s/$/ \\/' >> ${INITDIR}/lib/Eigen.inc +cd ${INITDIR}/Grid +echo 'eigen_files =\' > ${INITDIR}/Grid/Eigen.inc +find -L Eigen -type f -print | sed 's/^/ /;$q;s/$/ \\/' >> ${INITDIR}/Grid/Eigen.inc ################################### # back to home diff --git a/tests/hadrons/Test_QED.cc b/tests/hadrons/Test_QED.cc index eecc6d6a..6d89ad23 100644 --- a/tests/hadrons/Test_QED.cc +++ b/tests/hadrons/Test_QED.cc @@ -26,8 +26,8 @@ directory. *******************************************************************************/ -#include -#include +#include +#include using namespace Grid; using namespace Hadrons; diff --git a/tests/hadrons/Test_free_prop.cc b/tests/hadrons/Test_free_prop.cc index a1a5aadd..bc7521bf 100644 --- a/tests/hadrons/Test_free_prop.cc +++ b/tests/hadrons/Test_free_prop.cc @@ -26,8 +26,8 @@ directory. *******************************************************************************/ -#include -#include +#include +#include using namespace Grid; using namespace Hadrons; diff --git a/tests/hadrons/Test_hadrons.hpp b/tests/hadrons/Test_hadrons.hpp index fc061459..a56a18da 100644 --- a/tests/hadrons/Test_hadrons.hpp +++ b/tests/hadrons/Test_hadrons.hpp @@ -25,8 +25,8 @@ directory. *******************************************************************************/ -#include -#include +#include +#include using namespace Grid; using namespace Hadrons; diff --git a/tests/hadrons/Test_hadrons_meson_3pt.cc b/tests/hadrons/Test_hadrons_meson_3pt.cc index 243ffebb..6f7f1773 100644 --- a/tests/hadrons/Test_hadrons_meson_3pt.cc +++ b/tests/hadrons/Test_hadrons_meson_3pt.cc @@ -25,8 +25,8 @@ directory. *******************************************************************************/ -#include -#include +#include +#include using namespace Grid; using namespace Hadrons; diff --git a/tests/hadrons/Test_hadrons_spectrum.cc b/tests/hadrons/Test_hadrons_spectrum.cc index f41bd5b4..0038fcbd 100644 --- a/tests/hadrons/Test_hadrons_spectrum.cc +++ b/tests/hadrons/Test_hadrons_spectrum.cc @@ -25,8 +25,8 @@ directory. *******************************************************************************/ -#include -#include +#include +#include using namespace Grid; using namespace Hadrons; diff --git a/tests/hadrons/Test_hadrons_wilsonFund.cc b/tests/hadrons/Test_hadrons_wilsonFund.cc index bad0f2d3..f2d1227e 100644 --- a/tests/hadrons/Test_hadrons_wilsonFund.cc +++ b/tests/hadrons/Test_hadrons_wilsonFund.cc @@ -25,8 +25,8 @@ directory. *******************************************************************************/ -#include -#include +#include +#include using namespace Grid; using namespace Hadrons; From 3df6743396111e854391263166f1e321e565c3bc Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 28 Aug 2018 16:54:57 +0100 Subject: [PATCH 262/267] more build system cleaning and patch for bad include in Eigen --- bootstrap.sh | 7 ++++++- prerequisites/fftw-3.3.4.tar.gz | Bin 3940427 -> 0 bytes scripts/eigen-3.3.5.Tensor.patch | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) delete mode 100644 prerequisites/fftw-3.3.4.tar.gz create mode 100644 scripts/eigen-3.3.5.Tensor.patch diff --git a/bootstrap.sh b/bootstrap.sh index 12d257f1..cffe1b8c 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -3,7 +3,12 @@ EIGEN_URL='http://bitbucket.org/eigen/eigen/get/3.3.5.tar.bz2' echo "-- deploying Eigen source..." -wget ${EIGEN_URL} --no-check-certificate && ./scripts/update_eigen.sh `basename ${EIGEN_URL}` && rm `basename ${EIGEN_URL}` +ARC=`basename ${EIGEN_URL}` +wget ${EIGEN_URL} --no-check-certificate && ./scripts/update_eigen.sh ${ARC} && rm ${ARC} +# patch for non-portable includes in Eigen 3.3.5 +# apparently already fixed in Eigen HEAD so it should not be +# a problem in the future (A.P.) +patch Grid/Eigen/unsupported/CXX11/Tensor scripts/eigen-3.3.5.Tensor.patch echo '-- generating Make.inc files...' ./scripts/filelist diff --git a/prerequisites/fftw-3.3.4.tar.gz b/prerequisites/fftw-3.3.4.tar.gz deleted file mode 100644 index df0f808db8a942711210284b6df1171a000c5e5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3940427 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 z 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

dQ`*6tuFwkC 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

b^? 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

%j(b}SBHXQoZPNQjuJg$x0KLHM8P0#%oMjD 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 z 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∓J-9nV9SM_o@L_3lacygJ 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≷r0DmNy}o|V`MAztwQY={pTgAP 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
lW6J}Kh-$b1Gb1afsDa0^v-)a~R^{W{^L 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%0A)b3>I;4fYq+=`v4SxRw@T|ITpNGV6NpUV*z)S)I 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
qa$jjbQ&e$M zg`*18W0&c7GSfI9xIbgPf$?rsB`d%_@Y!xH&%YQ)3s5ojXtsV>LyBjXz%np*mU~U} zN0Po8i6dvCd;Z}sei7>W9{V_PxabiEQ}a_4fNpk2@|)5LQS$}SZ7ZK_UDQnDUFQ=p zmXqGRdt#BTV}4=jPxAVMBa7o-&UHti-fY-pZc*3)D8j15s@bWWWJk99-Q-1B@p=m& z)m=k!{$6ItJiiUo833QWp-%*;{G(cstW0%a&gotEdo)nD3TKdKT)^?&1A%9d>^0b! ziu^pYnY2tig4|P1(d%vk!?-`ncGNJ^xxwswr#?D0_VLl)-Ywe=qxY~PE^=0(J!~EH zPeNR=;KBjq{OwwupkpYMhdwfTby}qVKk>xrH?%JO%UwqXjj?`|Q}=9Q*Gc&H16v>A zt5^4!N?4iwnF}}4`X4mr_p0KxubCnE#SNf}=+O3etaxdKvq=e+?!ow!)@bo_8-KHV zkn6&sHP!C1#{O!1u;pp3xi^pjZ{WQfrpD)&HpjCbEHF?rdicb%DF*Pq4^ab}?@4Nq9{1M;CJip*lprLod#*?`*Y*6CPe4W%w#>dzrd_g4g z(q#NIxFJm0hxoxKlZWJu{b@xNRLQJ)fqtL)j$P{&Q(xFFs^TceC0A@*hf_Ar>qIn{ zC!6|@H(0|eG*vgB%ROOAa0WCaVT2@C&lh0CSc_;S%l-hJ7Ig$w<7lre!+%ig3mTgr50=w%;@dbx4l{^DVD)yRvKjmS1?}-Kr_dXKsmCAy-Ju|{uH-4 zwQ0M!lnSdT-aurAxP1b;fk!1(e<`KlZP7lL_FrcA^BMklNc8;OrRK?_eu)zUI!JYC z&X<*-L(-H$J?@M=Ou8k!Ug-8gy50Js93}!&}}S${}9Zn zm^-ie44%eJ1+3ivZ?-Z=kLnA#Z`cjBQh;^Raa`PMWn$u_cx zG>J!cRvEO<07w8?E#{WH8bU&sjD&_BC*w1RS=H2?I6aD}r-=RYAe&+&$6;y+jNZS{ zV3Itqm9?n2KR(Hc9aHK)Rd`24Vy`)*Xm%`u23d8T273p=r&DXhvH`v|9GxGm`ChQu zAuOu1)H5&aMxw2bjX^A`c+rfALW$j^cY~#k*k+^<89#IYXyDCg)Cxm9dlpsA=!IT` zM{jJFzWVsHJZeHLFdJfuE94w_Yx2{+BxFJ}+7WS0s-f}vdU;_^N_Bh#!+Ym1n0uTD=3 zS97gCmtYBn=+|wGO(O^>$-dq6Q5v{Me|4EfJ z0HHnCiHe|Jlk=S~bii^MRuk#hC)-UMuHnjw232l?kKX!(2*Yi=ZG>4^9OO|$sAQ^` zaXh;S2eA_B zy{0GU1LlZdET6J*n}}W8z^{870>$_Y0m`F2(1y5H@3Dju;u);|Kk-e2`av-LH%+Vo zCaSdZc^RViZi6f|+jRmMe{oSf*zM(2;`f#a+3g`+i@JV5soiJ^F%IOmLDz7j z`bsypy^!5^>81D$dT0bh7BI9*j_Nb{z#Jl%aFS`HIx>CsuhS&6+uX{Oii6mrr{eQP zZXVrQlUh?O6Q1nA4|S%iyOf^dxy6rtCgX98l3oXN2c<(rh|t9}{TpMPhP5aG9maTf z&(;EC;Vx*EhXv21pZJpB=C;!~k84Hs&z*$Z50LV3P2#!MQ#~h$U!t9*K7S2?HG4d; z>f7vtiu^Jo1+fE=EvLju>3@x**JtEIZ^)YWw_8EO1stg#?!t&7p!6e*Vv}*%37>dB z8LOs#4lQ+@b&M1?4h>uHI2bJjr6TdS%5D!*_pNqPY`yoD{D238qBcldTQhnMP4XSG ziaw|VM!boR2%(BXN{qs&L{uu+97kDh5rZkHm{I6V9e8`!t^Yq7Y7wQw3&=WRSn%q( zz9+L(vMZy^mo&Y7qy*?DR|*VhtLANAY6O8;Ji@KD8F?TL2M73Fv=8RJzOx|X>~4TJ zJmlvaMnWgp%!WKVeU)LLKHQU&M?fH)FyF*qo^=@(klL{_F(e_MKZz#`%VkN?vjN;C z3*)5aK>}uj8V?%1I=fT3o!;3FbV;xjAAM*9b*43=fETabeGHxj`^>?{9~Ybh1@es% zFm6V<5<1+__QMou;O;v#SRW+~3be|uD0Vpv;W{4bk4y8iPi&G*wfJ}G;~M#yA{POQ|Q;z^wMaUIb;u1^6L+DxhCg@=k<~}cTc$>;0rD(bX+I~>=Lcrc&hKI z{{WYpz?5JNVeF~A+JG#Y}HSRlG$*}CVy;O}H4Zf{)&J`r`k-zYB?@HiN z1>=*U-IMsZ6@Mj^$d0rh&9=>f%m)i_$v4eDbxu8}*6jURhBN5FY~up=F=kt<-NM~TSxF|rnQN=xKYm8G z*2(_l6r2vRC+mx>ZxuTAuVk+aE#$$?vP0O!G!?m+)fSD}`=gx!k~zm1XE(oEX(nO*6iDVF*jm~~E68RVYf1U*Hobzd(ml%^+A%1>*A47oq|$19;H;N{JiY90IT1ULghTd;ePz6a=Yai z;4z5~b-YWb$RQDW18~)9_=Y+IvrDI%Aya=se+pf5pjmC;OLc>i-kx{>N0As+?jrm; z0nlTO_czWKZ^mTJbV{3%#k{WSVqW1ExBa3ehZ;4NF(zyhG0FVlS=%_RKa9u~C*~SC zz#omkAbcrCK}D(Nkm&l=l?!K5Zy*7ac9m;)A?}?3R1P%s0DPKVPbNG6fhD^DeTZf<5^##* ztSVV*aRL@DCswU3<-&=Xd5Q9Eze9=PI>5XQ-_BWQe|1l}aXnRfqK?y@?CjwV8=Na6 zIxs&*Z*G-ZDT&iI-K(G^$N0qE2&Du+H}q&T{NpP$-MJIW*OFrrCNLID*>>P*A9X5! z=FR%m&e)lqIozgUbQt&KNb5OL5^GM4V$t7$hfLr!V(UAzI`t5}2R3h9T8u~~US#YX zz3^jz+X5-=p(d-L^|C|OK^Cu|ghNx-jRtQ^Wf5L{bdJ|q#Ck7sz?s+m7VP=&%$Djp z*0iebB(;)^KW`ddl8Me2Mi9MYNK0iILSuepJRVO9v|r~Lhpu(@>s~f`epxQ3Mi<~hiC91>rBa&Hp^lcKhOxV&^MWc*?ospCw!;i}JjsQ4fHy-NTSY8`q0AY8s^-+odiD$K z$4Fro+^oW8X_cVI;Zn-95eZrUT+go63(`}*kq?(09u?M(lzHm#3e|7<2|kAyU;<*L zb6=D<<18DC&kvlhWe4tArAW_cm=CnyA!Y;g`OawC3rDX0ik)PVUoXsOoBXzsSSTDy z%V9E*^LKuuy$^zuk5I;y;eV8YH9gNKvwJ`l)~*vb3-Qt9oZ6cH$~jZ1@MV6*Ij)@E zfjn6ZyY$KIeji+Meqis8L3~LaZOB`(ew!_o-_)~O#kb-_F}H{PuSDbq+=~0yi~34x z37pfkk^T}9oXA|x2ji6*(x{k8X%XeD<*idqM z(a-UcICXAu6GLQY2Xo6Q%~Ovn&fc=1T0Ap7)3t)5FpSOVxVU+=(wV>6ei@uKnC5*$ zId{luGU1%e4EQ~{LzlnOd~SH!jv0~3C9Z=AFC3rvRCav!t(K)lB$J^MXvieh*nLhH zN|#9_S{9&qVnNvgxA;VdNmshk6Xq)cx$a2VtR@Bnt#Fc5we7 zJb&J#nZL00`QIbQgo-Wfr^o~WcQkgZ_m+G-LxIy~wcAQ*;MjnF|39Z?vQ0V75=K*1 zWyz1DGnw0*_+v4?KNlV51yu<3yFcGw90Arsu3Rl=4w?#_pOclRUILrS)0?w z#E3N4DODDZ7mXm;0tyJd_OC;#r&IISX#otKaIDcPlP2ovT>B|{nn05FQS{0NJtazv z@CoW6`7GP*%(!ekXTRe*kT8D2EI%bAxhS)XkFoqlNy0+P9ztVyrYldG+k`(5?4uB5P$_Dd$=mi9%PP&=3MxQF@D)o~uK zF0X00(vA~a+lODEw8OXKz$9d5mT%=nNucx$EAmp@9YC_`u z2EDpG#I*L_em?ETQa@6#I?D{b#d@L%-7JZPZ!;p-edX` zQF!ZX6gBp`a=X^f09klJDQWsT=}x9T#SbdP0(T19wn3?{vDO+)(2S?(ph;#nJ>t7x z1rgWx$VdBfBlGnKK8%qB8*BB+D;jk(zOw_gc7NkMPmgS#_$V@3%EPiPwoCZv`vrvH zD5#kpql-Jc!@Axrbd~#$b52sotgoSy(&{42WQ_XB`RL!6piuZxQ~3KOq)5p?ZYV{e z;6SYPMNrcWi^D!7+MUpdK!lCc{*pismD%E3=LB5Ik_yOmOqlLGQMx0q^32^elyhiL zSs^_($uQ_~;dj*>+A$Gr3(VOt?7SqZRT;aI`aBe9Jp+WoK<-%fHQC+h8R|`(ZZc+5 zWxe$swSw}nOmgnFqx{zFQ`bltr}z$n7(8aA+7pZq#jZPR&|-^>_GR@-(;iHC7_}KAS zx|`1nsp&xj7v<)4cHW0uB?CGnyKC;*R+z*AeY7WXoiGP9s=QEg3$h>H4H5iq$RA}L z8Sobq=4TnTm!!4D=FBtqfsy17>E+a!jY{Oz=JVuHm&nWky2V`|+NlZau&kt9XDtG7 zi3@%#ZJ63%)1?({zn%iKH>j5YvRW~k})xH+_}>77>(!om@@!L$G-vYc4!HG zzhSpi2)wP)jPr^cm2HE)9p(`9X^a6-dY-{^5(2_<_*2Gy$1oP;4oQ_oYmp*&TlEnW zYJG%sb!*n^hPfK`{1H`i+|z#j3%Yvi_9sZXmxc+laLy9mbxb5W`(if|9`@8)47uQ* zAlsGLO+&o|NpnIlBDC0oMFJ4Q$_XIQ2nk}$5lNz0HhvgM$yg7w3HL-;84j!|!vwuX(vX*-|< zqYwOYaEYZ;oqsyK_Kb!0Nca^(gT9Q?Eg|Fq9xDd*`;zB%t{_FiD<)X3lj8&{3?*5! zsMs;+uo`|0^kVpz=GsQ5dFhyUuG%%6GM7mA0%`XFP7e89kXIS{M5MVP+^aC}GvdGL zRL%V2FF0bOi&6L8!4f#6m4;P*GZ?qg^xg3_^U^k?t3lWCTFwCexf@M*ZdFi1s+KS6 z@J=|1!*h*rZMHFUL{%tq$RXE%4Sc_;%50p1g#uv1th)h~e-|urf{GZn zBoz(SCb0)5tqtocYyd+isc|v4AL14{NjC<)Qvr06nMZbm{1_&DDHsM9Vd z?l5rH_sdp&a6J5ocl9{M7?;Y@)6BPcta5-;pH@$bIL&@`Fi9C{?7UgTd^w@}CVV#% zzH3`3J~GaxJK%6H94dPGG1+U+xq_mc(+bkgQ_93nmPURSbWV2a5#b0lE35+B!E?SgdxxMc!Y~ZgjQY8l^8^ZL z(#R+B-^>zQ*agkni_)m8N0X!9#{A95@2gcWOAzE?N)?-v-6rmlr*s?cHvtrX$Ka@( zuyGX+8(15{PWRv?KEz0U(@w`9rR&<}0%8T5(5dB$p6)BSvV8U}wXXq~o_x2Ul;a&5nBuhp9cB9$YoB>rI9n z$M$|)s?1o8Ss9?m3tajEn?~hk{TcEU*&%BpQj_BnzR>^Z5;=R{cis=D(AKRM6>A66 zg;=C0^|?~5(Y9K2ubBTKfe8NXH#+Yd36@*r;&yn9l904|DN*Ic9rwc2rj0oKlr&XV zXBsfNpVHGz5LO3^YlHEmzu#xJ|H->OuoDck-GyGwR+eYP9!GrTIxyiji)TZOsBv@} zo^YOa=igvR2*)MEW|v~;91H*T=W&9dCNw;|>b_7L)<7m;3T@k84cFK(_CE6hid-sM z)#vuDzHPq{vHty#a)4OQonbDCrU#20klgVJ{@RtY#TS%>Z7xY+e1D5(i zFyf(O;a5c`2uZ%lNZv z=OQQaMnvV)RKUx$p_V80fPF5CcukOUC-|tL5;a%>+sL{lA=eP&@ZHMBLm1GR>Rol> zQJNahP^f0XL`3fe0wM8BB+FGXFyGukuR>AzQG*0qPIgI>jSqGc7JOn++wfLKlt$Ha zdz7Jg`BN&1X-SZctCC@GjkxzFX*T+){9x$r5Zhqb3tvgq3F6I1=?2T-A%lnr;lpVQ zt#pAgEkYiztDq&BA{+Aq9oum2bbqP&_cRe#qL-`qYZBB;H|)Sq2tG2hazSCeh*2&A2g zdJup3Az3E<`wphG#D4s41o`Z#z>t6Q``;z@U0de&6F~Qa3)B3nt*`erwSeyPb-%Ib z|BR$uze!N%FL_rhO7Lyhd#sfN{S?7FU0LGinw{ZMLpwJkATaz?g^m8Fh5oYA8S#C7KoN5&^(R|!3jEa;P zTjjM-Mgc;4H?006AQ!g{AM2oR7Rue)Z(jdi4tE$%?CQWY*o{UQiUO6N)Y$=DF9JsI z|C>7N;D~hR;=%R{&~lMJwif1)j1MNa#O{7R3W1%%E>Lk5Lz%=LZJ8w+SB=5yDU*qY zaE!+}_E!ZNIJB!*eH58g{O`KC+?B9H_`w_`b_nYrJn<<PG~Ms%JyqM<#?)qjW)T(4uXn`g#8C5gLL^1Lq4sNn%1W|ZTm z8i|)B9s=guC`UeQoaJCwGG}>$wfnG=k9-C{5zwYt{%DCYe3XRd*y+ytp2GSL0x$!{ zbvUbIE+|98$C70G5brrGfSC%LxdV>Ljuy|R*5e|Aj(X`3I{e5?+RUKAKZ2Fmjx|PZ z4VRt0ok_e`4o(Rd(6TIYw(NqR^HP;NerFYBSC!5BN<$MfI1an-NEN0Q)1&2PKhuAc)lS~L+2;1qPhfG? zqn|Y9w#6GWRn805jSDrAV}E7UAG9OBROqjAbvh~zJTEr%Z-u{tgpw*Xus+-4t4PUD zJvfpWw7=pH59k5iVH%bLy!%b|_zo=Z8QvQZkA+}_ij79Mz1|Hp;p>^SyX^d$|NN#C zq1Xi?D))N~B|ijV4;FHJ?sG>jd!(iPC|`rfcgLP~6i*uvo^~p}^mIzl^1SMUNZY#%Xj%1HL0E`43hwl!63R9FklqbjJ^+pV3K z*hQafYl7pe4ZW>nf_2=taCAAoD-&eh>J_(CP~2BDYb+I@6q;pqmMY4fNl0?qDweju zi;pt?_E?gc%sCHjT<_RyeO6jUR;@Qr++62xT!&T>Ea?zBn^XmY)RGm`I&(_AuyyjsZ%a;W-8IG>4db@)<;@o&+cR5URUO17ykBZ+S{x`H9d3RRH7T-{>$buDx0jwe zQ5A{aAI?Fdi(3aP>T%youAhtSTYekOH52U@dDnobYa7*qOYSz@Lj`_V%B?QdADYwB zl5)z{h;q{{-D1k+o37d|$1MZ9i2_DvPOg4MzbETuxr#={*IiG$gQ~Mnbyf+|R$Yxr z3%DH(i%bWmrkkGF>k6X>bROhoi-*AzSYg_fe3kC}14;oOhaxP%$$!pp(^>Hbo981# zP28()n7Huj*9}@{Gd_C2-e(_?55>H7Yi2Aos9>Jtn(JXS`Pbe&Q!oG(JCU=yWf5W& zitWaoXeV)<=(hva5n0w>@@gHc!wn}edaXV^6o)Jxr&+%XCM(dGT_U!Z*Yq(|Q>3W$ zj#g1dV%XoCqr+4RlnV4%8Joj;StFSh3wnYZC4Z2g#Dskzv*;5=c^9H4p!WhK4(9 zUn@zYU(Ipgz)7B}Npz*hoSq$TH6n%z?awNLLe$R;@5 zf{jP_8_gw&7^)cViRyBOS&8<<6yiIMwlfMhe?4t5am^rm^Ncu7cR{;HmDqV%-KkEp zHpEii@Me1JUlt4V6M_ZC4L-__NeG!{qWIr!$e3;eaM?WSE(P zCj{6sl?F_+vv3lfvD!;L0!c7o^(r%dt|t{D0m^H0G(t#;jZEC9GkHwo+1^gkO6>5? z2&-&!vt=emvU4Gs<82vz4rUhw-;T(?n>_$`%vz}NquH-QX|I{?`SKrKk+bUzw59Oa z4d)(Pp_ELl_bOi|xD|uHFFD^U@}+~~H*LN|2Vh&_*p|ei+$3~EQ%>*`il(w#;A=5y zOG&vB^@NuWzGWas&E(M{f%B@((ze})Md}>z-!APMa=>|d*)G1Y`OWlr7=n@uGL~>9 zO@+#dJ5q_JWGEL+G0A_)1{+dqr6oXN=C6u1|4WTzL$kUk;h<^}g_0cMTe7Fm8(Y?(kKJ1))tp^;SPm~D_N1AQiW#-TDhQ-Qz=6v;!Z zHsoSXwlH{Sh;BRo$tnQ3p!sgt{o_jld+hxM8XX15HPFP3MyX(ZVAs>qzSME82rv+L zgOFaU@&5xsa^fS>zRoz%?S$7rspd~xL5}bdVn*S!2R?Ua{{G`Qw?oA_NQ=GyUKe*Q zbbnN+6>7?_-D=6U96j;5QSUfvpvdAoUF*G4hw0@=9gyl4BUZXMjcp)=8y}9J-W>B| zP^iCMA|88z6c5`ENrb;)a7_0CHY-vSta*6u#wr1nKPF0h*(8dQO2$4A{$kFA^ijO4 zIWdZx&@rwIf^@%ttv?rrHdqDR48VI)OOO9Cs|-@ZF0$A;{8_nB@W z#f%X1L6}>dL?jSw?GP)B=d`Up;)$bzmeT79(Lu1_>1|pXyb5gG1}jP;#Zscq_2YDh zErKM|eAN{kB;)cBQWWt=qF;paf|}Gs-VMA!e8#UISw@}yqIUfgDId)x&CnOtJ)=#e zthZ1gZMdk}Y%rSL!;|Hez5U)AHQ$`#gBbL9;MG=2<(V6*caT0=(Q6!9?#AwdrTALq zyuq@zJMJweZsw~vgT^YdA1Zsz_KLK<`iLwqZs@7Rbf?-Tnx!h^`dxLXO1$MQkVEZ0 ze~Bs8<1HC@N`cvVU5-K(z+gT$;hkd9*Yy!}@H}}uT$lqX9+9xMR?b=m-}9_CQ{{VX zEEByArI@<&&)PSB8moyEE^LO$Vgr6JeVhDDY{u}HA|1yi&+RntYojcG^BGC1TsJ5A z1wsxImnZ>gL!^y#=)t5(*3MNvWz72V=OY#|$$Y+XJh^iurNMLaH`yuCJ; z*xo6KV@-^+779E?Jr@AJ;6 z^0rAgka0p^Kv9>{X$ZiIJpblpL!QyOQ;R*S{Pev~IM_8D2(nR~7e-r5TI9h(EI z*fIMHg6NZj$jw1;)YsZA{HnqC6zB(0uy9tHSa2~9!C*j|j~O1M?t@ym?Z;C3jHzQ| z;cs{nxH84r(h5(e+?0=*KJRl)pf_1;nZoa-(FU6fDGn12my^DVca7wRMWAgOD;;#H z#vU+Xb*gxT)R^*-Z9%e)@zqg76>NF(l5TTPJ4}U;6!hCf%(YwtqyOsSke<|qiiS@6J&H(!yjWY6c zGGb5EnVA+{npr2LVSL%Uo*IV1-dTm44Z%S>Zl!@7)CxFRxmN5 z%`RPMXd&tuK;DVNhA+bm<$4X?I8QktR)7G|M)w}gv+?NEK0vLpLx}W&754F6ECG8( zRSK(|&+Yw5PxmoOXTpg44`BEgw?$xkI0llu7;OCsC_Z)|y+jYdi_(17tJ}(Qrt3sv zF+%~`3S?@W%&`PTmi$;wJ~VcC1Os#*yn7hcc8d>HDXp?KSQLh<2zICX;b2YSdoKZG z3qg3|k3LwlG(&uHp5+~2#%D-V@3cg`gmr$|!g{8=C1hi3GX-G0mdpf~9M5VlM zWO3T_i59pD0L(#PsV9VR4bl!Ev?I;Of(w;xknoik%~3Wby!{?cwB3-9i~dIf^3+<5 z+j_M^X@LpsTY7xx6OE5L@r+?mAQg}40iw3?RP1?X-*|0BqT&T_vD-+M=MtBiam(qh1vL{7zJ0uGE-MSz&B$<)v5!#|fX^`Oq z5UzE86pt8oEprLj*S?34gH)Rt-!WnyNaXv4pd~sqW}O@Mq@{}}LQECcuJ=Uk`m@^6 zLTSjZUB$|{l!xUBV{j+Ri2%VqQ@m&5F0tt+>NcOJm&F($MYgxli`-7R-AN)K8qi=z z{ob$(i4BHE=?+#4lFVl0M|hDv6n-tBlTlF4uG8^QWFrT?*&116DO##k8X{W@prF2t z{;c2$tF%*rVqrvTe5^8xDW zNR|sF-}@bFN_78+?X~y{6B;eZX+IIox7rIWq1gw%u;s_VNNBu;O3V@zuFv zgg5;RjL~%8ji@oRbNiSJnl;3C6~{iqZ!=!IdLt}Lifm`XYkdWe;j{Oy*mzGde+PV( zBi#;wx9!i52K16;YUlV)^n!*LqU4Qsq5@kV>kdSl32KJA#yt>$e>hTM%hP^~Zj=2` ziTcalY#(BE!=6@!b@*s+&EcpR{#F zLA{`boReIA*2odUG^bo1p-eP9^0jnd$W#Kdk50r;@4W-t+a8w_R)}~WS>AGB^buuK zCeI+zI*^#;OgAV>##w5ov_V2A(IGxu#U{Dt`eu}faZemF+T@9U7_^C}MRZ<~ZRUSv zaXLq=*-iK_JoBh-;oHHR(t%^-K@WAn{Qk0<$W?@@OMStZWtFJti*o%CrP>}Bis0gm z+PhM}`ekv|(fw4ILmsmb)$ddkPapLV@|O1}47Hny!ob*N$C1>#dsM4tDb*2JGokg< zw}e09Lb(}%hLRXD8c3%EL9O3>xZ3!<%o~3ohnre&WOkY9tV8&P0OU3Lm)EpWkS#tl zsl=QZ6ILk!jl+%U0LkCPn0~2arbA#YTLabKI4JTu`_-~|2_m38qPz=AuuLzj)m_&YWr%v_INl!0^wKOU@^hzF#VAlM!PBzKBCh63aqd)~N-<^e`hsT0jJgUHns43J|wH*#KXdZCQv_V<^s{RPL znST#XFq>`0Gz#6Z2J-lFC*r$EC_8U=)U$gek#&-5Y~TS*|hWtjzpB1Vwb7`WpGDN+v)GeF6w?6I(iDtdyDF9JY04F_x;S^TC-A93tp z?y)Ko27XVe>r;TLPI1bl!9T%rLTGjM7$|q0x1H*ECiumom9rV0v7uzEUQaj?!smDz zC*a;(R|>*FzEZPn7uOoEDn&fHz zRSU^$(?>1i*0<%Cnm+Q{nb==ounutYU4JGMYAkyI36?!CHbfORj5;e7OzR~kXk`={ zc$E=S9X$as@J3h^V{Z*A5{P#|-VWKr%6a+g(oa67%vKyc1SEv<_F3wu*UA@uzHh`V zZGplS!`f%1vdI?w5zKVaR&KjW44URyjmUUVg? zZVZzJ#bUgFZ;(j^Y$*`4OR%=pSjwUg(m#$42XTz?pis}I<<(- zgb=!o8lxab4umsFx^$j&Ul+{wT+jC>+GesL2HT#gA7M7aS5Hmt-c60Z8jyb+R4u6b z097a2OVgomwNRT%-GdRqho)oCCU5UVrYK|J(8oRXFavRQ3|AKh>I)T(_|CjLUp~u8 zPd`Zw^v>&kL<-DIO+cxBV^eal(mWp8$TE{7bjOWTw8aAFAkp5%!=uRY=XJ(CqVIC&jp| zGo$1xY7~0F8w#}xy~g!1C)52&40gGEy2Yi4{zmy8jVlt3qW8VxDU?R& zhl?*!y9}XkxRDVLI);B=-`5_5b+x(R{$`nYIb7gxcvLG{n@jh!QM@Q~L}V2f!I+oF z|Ent!jnW+o|L)?m|2oX{4&xI=Ycy8M(D3MX`K~y3P}6WjGY#)6clj(je5@bIDFBAy zkJ&i*u#*`}={`g#Q{lJfXG&Qa{ruRyS8v?wz5rlC#sZc8YUd_VD=;Xt*vkfFVD8d|X|v$|D^C z3MIiPJp(MwUN32X^bFwHY7Q{bCQ47?KUb`@NDU>jwj;P6MCiX2I?-hu+W=}GIYWi) zaX1CuGbRbIkGH7uo<$_+z&Z+*e{Bey^|?Xu8SE60KHUb1ovg*i;kp^28bX+Z6{|z&rO(ZU&{O?Q4J0aLt;d zyrDdq!x5dY9Q42l*p((?!IHPNf>e*Y$4#1tC+VtMP zRLTbIA80^fho-forTE9_i#~{Y>u)=U-D4?s^sLbL!=gqfmOT;uNu^>+%g;X7I13g@ zK?_rugdxy%`ymgl*NoGj=zD_zPFpX)HR*s*FR7fW(_ZLyc1M7Kf|v8In_!JVQcczj ziRV86a|_m=jNyf*Xy1@NJR%A!{F~G&e~`h@qdLDuJ6{oX6WQq1Jtqa>Z7~r(0UOT4 z^0vD?sG81w9YJf!rW+a!im5q~w3XJjv>tRqaW)Y!Tk?}uCbit_KI%B3iamt`R(RZiQDuu{uEtuQTjjr4?%`OEvUG?54LFHwbOBiqs z5pa!9zjbJ}lBJl`aA&T^ird)QK)$z`?loH&IQ;jgwNpvK5u$~`@W-UUNQ#|HX1)1f zzd(EtaP42i#%)suXD^65^;6eTjL5^Z)HVnue8Q025xu%|%S{o&3trSK@{!(b;4rEH z-vxil*MRH%uzn_6{oJ)=xZa_=ii9lQ+4N<$jmsU#6rJF*hA@~dg6VB z;Wf1>akmkwI}b0^*8RFy`}$h{3jOh}r;vW1{kC-_?&cvKqkP~r zROGG0N36VzqiO2McVq|Q7f8n3f>h}E5)bm*H<|9S9P#X z1~^MpL7_^w2!6apiN5W=EID+?+b%*lT^No}^JgDLG!6LHJJ66n9CxSYL8Ll#&f-&1 zw&kHDwaQ+92)azE{8Ewkuy64J>2qhhDzJjK+apCD=3K%cfZUAGtMrXPVv+B|Zi=3a zN*II}I+gPWfj!Y?Wzz0U#U!0>c8jr(Q}(ZOb<>^K943p2`bw{+);o{nz1HmWiCgtk zqGtV-AHoGYoq{uIWNDBfLY~t#dVmuLzdPvsCSPcAyw;E(c4GQR&<@;fDo)EJ>NNqQ zvTeF+MQg5{9e731X*7{hia1*)N4GN^UcOLs^mNtoXx5_}uA23!8Y|+$Lg8U&Rln;w zpJN2h5ks@bR6F{SMrG9%i#K*I9OU5-f2#_tsxPO}2ITzqG-p2?ES=Mr8^o>vsC_8C z2BUf@fdxI~?0(1zS=;oMk zLQrO#RspG`c3C{HX-M5{2CwGPaDXR6T&5zx@}0q}-jC#D>)trdUi^kLyT8Ry?c=#r zRFhz9mr-s9SzXXEws5g-9b@z}nj^nNmZMiIwIxcLvDLB59^{0QAflhCk9q0w{@vT*C+;rM$)n$durbdf$ps1j(7GTU~sQ#2gW(2KD5tTa8WCp$!BUKi~{G4x_xJ|#Qr;`bNNt{*j= zKSiT@#fGcZ_?|t#mSZ{E@r;le6C14q55n^1)*}zz*hJ>f$=?^9jj>ouyPKqDJ*r5Ql1tD-LG&_)KY|6B4IX6 z)aj=I^qe9X}#IerL9$V)m@7%NpL3#fP`tH1E2k=@oa3NqolKRRc=5LA}9?9vQ8*-J)B!uPsU**G-lpu4PJ z{qWQHp1HmLfx>Y8HfFQAxZ6B(OqJeLJSo zqV-gtxb9WvwlRAjO>W6h#ny4Hr=>tThwW>*sY}MW>4oUr!d|e1hIC%hY5UUU*4S%& z8e`2mJpG7y(LqdyBNG8HD?WM;)+aj9FW(FAV8$*PN18@EW=>)3mnho?X4ND9*hLc+ zTdSXZ5L@Ke0N;nvVt-dFRQ}cNWQD5u+0^ZAhB*SIH@+q&yS!bLm~8dOmKFw zDO^O?dy;N$w2lGIE?5l4c;elmM#IN`0JZ^5mHG=9;vl=K@uA)@ldcTYXvXJzBw+88 zl~jmo$XC~pFm8jfEbrk3`tcxALdy1oOVP z?>(hpf7uAPXj6O@4@5(2%GKk{PeIADH9akVgSI`UA@q|IuPM2v$J>OeB%d;HzI=JrwninJQ=DfSK&n+$ z_RX)pS5y>~M<~5zNY3?S(7jNJ7G?NczWhvCy>EC`4OEvfUf`K|Krs@bfKPuve zp_l}>3VrR?ysJU(mAf_hpNbfX`+~%-0WYCra)W}GR!^tFL$M`CyCP>&dQIPRa1A&91; zQC?p)^O;=rz9MAH5_^FiQyyssAG3MwczZImjWt9gb<#%I-^*lpoo~F*xBbbQWw56! zq1|R_xeXvAG3AVJuuC@rX9j5w_m-v-x=$szb`nCL-Qy+lMI}t&n|KrYdYQySbu40N zXyK1i5rOd&&lZffxk@G0+}I*PJ*YiA*xW)I?CUiI;E9Lo9|wGcCTTA}Ys`ngzzs70 zDRReKJZ9b~A#WpjizkgeHZV69f0hbMgoO1cmWp;FYnGE7D{l3noUja0Yb zOziNB(d>lq`rJP6e~%D(1tCRlE#ERE>STE3*h0Y3)`?eoh8#3(Q9);QHk1~}#td&q z1FW0LYhkf)G=u{YCrC{2IKQ@egN2h-MZ+7KzNEJWVqhddbc zOw5^QNd)*nuSf{lx)@>6$d%=ce#5pDAPkIEbEZ`q#-_?kda>{IresD|eV5|H4RS?x z-Fm;4dR`5CA=BT$j+BC!k^PS)Mx*p$L>jy1ON+i^<ek>YNpzG}%~cv=BSwNdrY`#EL}e%Iiy2EP$w&Y87;fjjI19 zQN=1E+LKl1W&h${z&X!j(4OfTl00klf%}ro^fblgWmq22lRu;~$jo-th@YSuQ?*|n z^OSiq%}8R3RjDjl_YAT;7(YJ;r{s!Q&TIH!7RCP#%_ZLfs)z190fP>$nffZ``^RD-Rnb{!}qQv@5j`D+ssO(O;Z9F0{53HKer!#PrP z7@1eq7({~uAYygJ4pbaN_xdaHp0j#b2jrJ-Z9Ic?wfgt4B%8(6Fqi7z?Y4& zYCylK5S=Hl=uNb5=y!^249rTDev3nH=|R6t?NLHfMWm^kR$(Lt?&wg8RqZ{x@M?{5 zq4_8ciX@Gl6bxI?1pb=Zn+1<88Ek?D2_+;-q0GD22S~$9nwIq5f26UKHNs8=?|ZV^ zps?0thtFh`E20@M3LJHgqStY%8EjJGawQl`k~&KRWhMfYT2U(>_gY0k;=o4)dLb1V z({Db6Cp)aj9Fy;pWCbv3f`aFs8E3)tUtqy;7i zbb*H2NH)@`k8j_*nmF-Zfun7Z9q=N^Tm)lMoBMBkDgKC*Z_Yt)dXy=~K@+}(V~!g1 zhpIOjMCy@;x4qL9#$NnP)k!K$aDX1iaGDjLgj>;RrsPavRtJx&_jScgqi%_*D+w!X zJBA>T(6Mha%ARio{_tn3VC=47^4rjpJn+vih))fiH?#lkdn*4l{Ym^*lCZ$|y{CJL zkz}0K^v!~jhZ2|aEuQ49?B#o&Y~~Ba=`v99#CH{#zuz+moTbk1AZuhg^!zdar^!z$ zXE-gk!Bt&KE?q0AoGAY#tAPQ?sf6jR`z^YmGX72Kz2;YAy>)~ zz9dxjClB~l$X}$G`ZaHrE6!GmjC$(GQhs4H!qq*WO%u=yh^Ua~c(m|6a6l zi)Fo{v+88FR$OM%qW7C_-g^VSN=!M`7jWD4?eTZdJ7EJA_La4dVISvRkK}s$z6d(A zp*^!@X1lX}Rns1wnC2L(S*5En7&2d!r zYm^Gh>-_aV*D6R1nOs8rFc;g6X6B3 zuAz8e-=bJ~N~U7c@poryA9BR}MsTKmyd~7@0;wTFUN?gmuyWkUI^6=xc;Tr#aO8V( z{G!dWP_pr$Vm(7jZwI;%$`Q-XWM_u)Yb#Ss2@ddGD9`@%HF#7k zMR5kB#GOSoxG9d_A=vK#Gzy6GP88%NY@!xU^IX#;G5}(Rm+Rz(C zd&r_ls6VFOt%cE7}ub z&>$Zxd@TcJ>>aNe$ZiauTPs9=(eT-$MQ`6*X@~agF)KzL4xqvY=YtFmFglq5`P>!m zi!pzAWSRg7d+_Zox>UQ$XVeS>^N@X}3E9mT3MdvP5astH6H|{Wog&l)-a8v!Lv8g$ z&u*z>YK>Xo?n1+GJqhQko7edDYRuBMqrZ0dTe3)(!pKQvk?i$;tZF5S?z_xDX71t@ zAen8k=*KR5*|-Javp$@Hlx1YFE&Auek;cKN74IgmHTl*3Vg`ZlTrCot4Gdmn^0Rki z!d_0R-nsM)=7D^@o-u4pW%i>3KZ!x^M`Pb)PoY5`6ycnkI=-@t`*Yv0#dV!Rsl&Hl zh$*COtzVd=IlZ`#kDXpza^PTf-M6W8ub1;$HVLdzIXjVFMaa=+`P*Z2(n+)>kI|cP z!B~aE2b6H)ovwkO;le#VW9GrK3}WF|7Hxn6$Rj2q3u}8CvU*bcRE95Ud?=S4-rl;% z&p}xM{XWbS-9_psp)+46M8k0Kv1t9%r4~ZN@Bv1_K?*lt3M&taEPDzBci2%j*b)g? z2~GD6)~kcIB{iX9Cs_}$vTO1j$bA>`^Y58q`AeS6Cu+|GFod=T-!JwC&WoXX?Aqkv zfBo7Yax`CYYUm`JNJ@5NK52Q**C(`#TZ;v_Ok|B#u(+X;E|e!%TpK&90E2dK|+jZKLs)4bvNyo{~AW7G6&i7EU&>!``- z_ItolUfg@946tW3l%wp^_0Sk*KF&R9yGlquJU>IJTbyB;PWU6>U`4cu#{0X4a4|CV zP7Z37?3LS1$oMXaojj?bFyS1+`iRW>s0=L%_3SFKy?eYG8#oqOxT4<;kMWFwnu2hM zK53I|XWFE$s-jrP7}fz<^s?A8lIL?IL@G-9OMSs3%lXyXn~AC(+I*xTvE(7?dam{% zqr-G^Gh^F$9@xkecqXW49U|v%(sSNPC@bgbPRVFza;Rc)_HjD@UPIYEtmU z+EG-TLEORt>pnBUH+ zL~*gcX{N!wlDv$Dpv(+*Gv(%C z;0Wbw0QE$?i1Pku_)q0#mUu6e zFtSlOh|%GqW%5v_6?gIe=gx^dsVnk8Lawnqq;D*e3b=s~Ma;(oVF(_?q=689%wYzE z^eQY^m*#)#zNhaLqKvu5e&>ZMLAl--2}ZEmt0Ufmhi7Q@5Qm8Mvd!fN=J?5<4iwyd zS5z{Wj37QK`EwQ+PRgf5YM7@mpUfKNa%?Z zx(JFDHW-_*YfUNi^FI0BbVs78G$R!udlJ}rCn7qhUx&@vw>p5ngv^h2+%3f@=e#c*!9g-c81atz7%~ar z#g0g0TNKf}Pux5L{6tvvPM;deJx)ppe@MA$Kqk(uFg8X!zKk?=#5#XJGq z8wK-R-d!aG>kMu`3R9`?z9S(XbVt6$9aocF@YA0lP(XWxSXduHDQh?n>6Q8TyJZnm z5PEelv`4@i_P#JgAm5>W9CWbTwjv*S-QP8hsaZes4#Vi4EZ`^e~lUygKfBd!QH$iX8*u(4#QhIATG zF1@6yu=)nOJUC2zt8Jwy17xa2-!M_!2Zhpv3C&nW2aKQy$>aWdVzMHOLm49M8X`Kx zMc!k{i68NADjacLd?`BUtLx9HjFCsd;;RNz;#!f%PUCYpN@KNRUs~^SrfW7e+>X9{ zVM!on@yGVG?4VC5@V8Kxyrp#Kt7HkU_ZzhTU`qX<9h&SJ?CR!28k1C_kKZJ3T$rwf zIteIEp#!tdFGW41+K_KvMU3jVhj)^JDS0uMKUP4{`1DxBn1;0Kiu zp)TpFvsD*1QAEX@X%xpSE-`0_XWeb`=Bsrw-k4k^=JPThxOCjhY40|;9Om_B|QrHV4W$AgO zPe2w+Ty9TEpf%@GAKv)LSasNHEIeTGBk|>Oe6;mYJDVUm=-NhRhw3I`>?Cw6mDHJYQ-=p71RsTo5?c3zsf)ZZjCdahJuY41rF2ffx}bzK@F zMW^)|$ta}D63oox|NLNfzErMS^-VFNeqe>y@k2vLg!-hFzeO9H(Tn_qHeu-yeGdH~ zLChO_69j|t1N)S(`cO+%!8i^7Jo;a4PfCKlM{(nLaqaGhpi#Lm2)V@Ak8$gOS z)6mB|s6?L+y&>GgHn>FU#2HlU}&K}R4jD((#L}3yrwvG>>|ZitVPeudScSY>a9!!3%g(H z<_~mlLpz|rNEE0qcu#!X_Rm)=PwQ`~by<&Gr!hZmzK*OHj%_0QgTo2(-r9)Zn!VCF-T`$IDMKFY+xj4X>Hy zaHrLheHoaIM&^VaX?^+f&B$^xr#dWojC|N6UX!tQF53)?eIBj{nhl(0bm{-yb<*nyLeQd{M}5H;WwdL5;OrHiTh(7{K@~F*WwV*R zK($$v-D++Ykv{G;O|e=XNWqAKY{la%kw7~4v}jGd$tcxPhqp>tE5jXa394%~8~tdr_O6$^B1k+DU`+H5a3SK8`HJ_xN4 zwl#;ssz?=%6io;L&Fk!rQv~j2X~CW4NGj)a;oqj``DE&Iy0=Iv^Djv_Q|t3OdfvDHKBvu}H$K`rRf9!zV z@pe7iWxeEk%0L$4_x!e+KJvCdpUZ6JyW&~J?(f7ZP9izxv9cXPwsL&Vj3#^}9RIm4 z(3RNMyv1xLZ_S$BcoNF_OwW&j+&eENp9#nS(q|xA9dEUh!w%_4kmt{9?`fLunv>Jl z-=E!T__RoJixbSm#q-Sk>-2-;Vjy>OW`k*~R#k?{c#WT=&tZ8A>b~vx@(nSbpvutYK{j`P}4w zNR0UQa~y?s^~65;CNBh|3w$V#zW8GNNUnFg`4kxP{r@fFNnY{o)Tu4u$@N z&VfXS@cpm+$hlrAW&eb0#e`_DS4$StpjXU#4|<}|ttu3|-f*qEhCoE-wBKPq(l>@4 z>*Kc;BwrZfEw+N>4e;Lsogg0?eQ!qimBkG>tzWW#%FEA2#7~+bBHT2jrku7?R4d^B zNDnB0eE#)zZ?PrYbojP7Kh`wU82@Y55m2~psSm?GJ-cM3ak4;%d}CA{(^LgAePCJ7 zHvOrZ5En7o=xIm&(HzlIa-kbn?H>>Ebx^C?gl_$hUF7rI2mzAomZo(7sLk7do=p)0Q~=U$eDNs`F!i`!L3a4y|HJy{Ci5jfeCf8ImAxy$`iV zmyUK?U_|j*F)CrxS)p{Zm@-Gbg7uPlwcSjY$p-sCC*x-Y?QbtcMQ2c%qVTRDb1=46O2yU*Sl;MoT}pgZwYZHURISt{o+RJ?+#$z!mOinbY;8RT!zm> zj}U4;UT--bP{}2*^CTpRI*7Uhvk$MLefCKP9V<)$hgNA>Zv(Gl+~(>Rura^d_;Kw z@)U2KH_QXZv%80e=T;9dYQ!FgYAb?#&VcMdq|I|tq?1Rz@!+I@?1`Yg1qjl%0+(MQ z41&jB=O$d{hgn_@S;aNq!UltI+2(jfR)Qum*2iVwfQ((qBa_vwuxCT3-tewcbABK;IB?acjjdBY(Uq zo+-y9RniQzSoZh55GF(VC7BE-eIYz@E+ijAvc3New;Q_e(36@Qu4_$bl>@nj{c3&9 z?vwv%={uXAP9p8&whK_Z4Nz0&|7iuTw*CEq-f5e#mfAAR4@bml1~JH`k^1!;QVX;i zz88t=ubDJ&6(2v(OQEb0Y@XlH;^W_uWh~uzJ>8(qLD;mv4Uo_ECAk|<{2okTX*{ol zJQZfKJ?s!j6nO1w2w=o`{Hm*n=iG^YuZ6Ayt=QP?pn0uhRN5fDd%$h2i9(T>3_v29 zfawj-M^6(H3r#N@`D6TG#0g|vu4=< z7>ueqVi#j`^?Onq_GqDim<1B}Hb^E?i;+Lp&qZ}It7b?gnO86p=R4+d{HE7WM&|;) zdpfwtJ!o8n?Unpq?Y}}xSYZzYU;gY_-D&Lo(K{u-`bmyrDj})n69%yzYH1}&YWYl3 zZ$ebv@T~EUD+nnfb(BOdS8U2gEY7Zw{wT+`gB>r_>Ys8eP8J07_zN(k8L zK#<~(dQy^oT=D)LXuMswyPUFw#ZpW~BM7~&$$CV=4)N_s-ocV19&(K(o?CXtj^B;jU4hgY3iH}bKz8B;b!&E0WcbR5OLGXxD zr~dNZy_p=UrEZ%=3;Eqlg*Y}_;P@`WX*Yw=0HWt>ckDxUk@^=uPQ-%LX{l3f+GlB~ z_w*xG0cWMH`*tehZd2*T{08#$&o}{YC(Oz6t>91*_8RUtFtc>y68Bd3&tz29Ipy;z zmcMbMDC>WcNDe}3Bof%pa~LJbD|B152YOJ#4JCeCDNTEwHo;z|3w(2CG&z3%EcPAS^ttEZfysR@ytzcd@E*BSWLsB7PE?n0-q zccfPcCiKo+1oCM<5y`PRsgQ^9ZYn#9mL(E9q05)KT))#{M0@wx88iIp?@3EKA%4Pe zZeh7Ru|yqOzpbXWFmqx98SQ=4aohEE|Di(Weg#xmHl$))ULcXJn&gWNz`XbDA<(G* z@+xhQq~++K7HT*%$wgwYK8-8ZwArlaZH;8NLazUv+a7)1xnUW=VfB>a-CQ;h_YyX2 zg^ujI0$-l+stcTL4}DD?Tm2sz*{UO1c=o4(^iNG2YMg$|v2TEk&c|Iq{J^(w4%L(?^LC zKoZ`MV3Gw~;l826ibNt*ydo*0r+Co@&bp~-a{30E_dQ%7TCh%ilWHro+H!1CvY2m>t$s*RWtWx1#F<6x@w}Y0lN?z=Bk%N! zbf*V>>EHTqY}8V#L6@ro@`b|5lOgy`nP0x01$UMO{J#Ltp$tO%xsl89-Q;2VaV?$ zxD1)9;0FJfo5D(G0&DQEeSfTZgwMtSw_wrrUn57kxH~O|X)DtAw29QWCxwRJn9tt> zOl)>g$~(|%C2|rY<)mIJ!$pBCq6y~ z1VVh7J=T|2nGbutXZvO$crW$|abb`}^J{XR#nzLOQoXpqkqqp_`j5H7OMw}C&iw+q z1UZ+(9wQBbi#*q z`5$9=YXSXdS_3MLN)6}#Y(?Pxuzso%Ti20 zQ!lck?N7Jx>Q6~<*mRxF%55QhNlEao4URGBrZf0#Z$fLgBm#Vyh4K<4*0_5ad=+GO z4O)ALvxps_x)++?(0v?E*8E6>yy0x%N)A9 z&sCz;g*WUP(u-CvVI?5!CKGhO{P)^mzD6y{;&x}QcO@l3u9GF)cd=HGf0rb{QoO|~*K5Q5nfeCt;rWTrNyjyvK zpW)NbWeIKqx;JDLV`WIu^n1233KcRP_fnh;7E`OhK;`{lSy)!0;I@ zjZ3SR%@Eh1iFbTB>yAeE+`Bi=pK?qGpza1M8+I!sOKiGh!(g;CxH^QLK^-y^XKzt@ zd63mhT*;n?6GobcEQKef^PuuT&USD%)bDn(tAz>1a|mX67E8931?nMHUy2J4%lS|~ z?;%M>=dy{S1ZBoiQKgnyVy(TGUqp#>R2<%e^GMONgh&b?SrO2iFwttnoE|a7K$NwL+y&mysWW4wYx*d3Xl_^ z^3FJc#9iE_&DCk&`{e%+i$>hUXoR|vW^c}^&8LY1ZZf(P zJ?_6hwWnXFXNf+RvRWOPh&c}{7{f3;CMe5%e`fsb(}xQ+VaxB2 z3w3mUpQI`Gb@*p}<;|5|#_>#8WS!0O^z)MsCaef%TaQ`*Z`w5mlOc(&E zKT%HO(gNdMyC?stU>s6(mAhS?$#Bsie*>k`C+nBc4r=`#XZjDm+gh)Z+V!2K zvC8>(u^l6<{=bRd4PpPKPTyq zQQVbkV;U5^GsMB*JxM9abme5L5o2+> z%NYvGz>?#7WQYELDTWrm^zqB?wihLWxZulLm1qOxomr{g9*8 zgGu!!jY4vnDJ_}kD1u&xzC(zT?0w}NO0>*BF^%rSGw^i012{cm$zQiDeE2@=cu&kPi*$na8CIRl?hh1umjK5S zZ4Md(5b)VWIL_LC9}gP(mmOZ0Jz!Suqe2cofj11@;7K%>la@Ah`wnM- zMKb=ItM%8!lUdJ^S!j+kmS6q5a;KOiK-6wLIk`XSczSw`N2vVG?D=07xEm58Iw0y3 z(|ta8L}7<*Hjn+!wON{J-rem+YO zj_EBw=$nttf6&!*j_u(bzM*(og4qS@w=k`&Bh8cCA1ez6k{6EOM&Qq}g&moYHNU2w z4-w>^Vjq)YZDmZ~Vu3!bxqIzq@n%Gvqfw!mVR_qvHraM<<$SiO< zIFM9g2b>GE^>rb(s$x*T5*&$^pJn^Cw+}gCE4*TC$A*ZW@#X7>TS1EEV5-yakVxeB zney-Yrgu!drOt_{rlIy%9=o?jxl!Oeita{5W5b&sS1UlD_>Ji8VWM|2OLAxDIs6(s zPRLhU$jHbaYVha7=w6EBnP%v&7Sv)qk-Ti?zwp)(xzO#58#{J(1fD~+9*sVL}hzbj98SuGS9fS$IAHH@4NX`D1m#eDm~r0yL9J&YdqcijGLW+c_>VK40n z=fl@&ji|bzf^3*pmUrNHfCUE49VqL|g-Q!>QaT?o+&%~;XZ%kJ7?tcm{BTXC!t%#K zx2TU^n^l>hQ79h)3omK+ANT#FWmH~JrF+3#8Wb}SYxWB4_juX65ZR2j+V z__4A6+jd+}G`@yw1L94ka5FFIjT}3v$2re;_L&ADApWxYS_RW)wO~Z3CziA}em&bBnEQZT7q#bCN4WMi!0!xk)7Xbk zaP9U8!x{WfhtgdCqWUCxL!^q8xRpJ?;p+l^0IU=rdV@>tu7`|p=yy(w%%seFp_cUx zm=-xY(o@&{CWQ@gm?mV>U?{NRDAtt&aN7KxCHkZBun}%ZebW;350h$(B;5v~tOjpV za-hy3S&O;6h)`QZmm!{%aF2<@TO5T(aF$c7u2(3}&6r(N<+&6um+6H7GV9FYK$(3G zD~)T9Rs!B}Yr7=Z$AIV^hAyj2W2;#Nqd^9E7c`?$2FMED-j%w<+C5w(^O3WMw{Gi^ z$5RgAY@WSV0gcw?yo{~XFu+^O_o18n>QWM03v~oMDidmpvipWrlQ-1Va_lv!u%U3B z5_{HOXy@rS;)D#_|{VVRdeW5z(BYHBxmev(ZtPL2qyzTiL~1w7QqB{FhnJzHRh)F1vaHZS!GqEbOE4Z|T<~q}WC!KvGjHl_X;?j&nAc zTl`j-=m_6}D-a0{uMof-gZjC_grZKFdOWD@c4*y@;D!_1k9D}vb5yTXg4D&dt?V>J zjd5&xrCEBD4?})D9F%8d!nqe?U>Z3(1rD!3ZG27=P70;U2a+}AC;FA2t4)^o0djxz zF{{qcQH;&p!FkOBR=;QRCe*!8nMM^v4G&swhqrL&tK|_C3WvFgq|*I+nlw1@Y%{(c zJ*({-Bn>;!%DB+tZpWHP{l_%6_C~EqGRDaattmc6c_mcgdxwOcmW_VdYalc0_x^Kd zH(bIb4OK;kC`V$BMqq@FP!{WeW4REH3}ZpfV}*MxPo|Ki&zW88TM}$-#q%2xsS>(A z-j%Y&uM;grfvmoyUeIw?7w0-7T~xI)@7)|Qfw>sR>w%R7=<#y7)xIpDPwsx9d z(=jFDLpK<{{bpADG_L5yyzo%uIEajsmjg6#y}-Ci`HEdKvI1hJ>rW{aTcFC}m}bR$ z!z}-Y4G*{i02(Sn2$yP4mYBp^(x7Bq;K3z8`z7XpHC_N~RS1uk`tiNu=Mi+XQS_oP z6NM#{fAduyuC{o_c}Ty>Nikc6Km+?p&8!YrE632bbtp6Q;M=P9pR3*`UtMkBN@$9EIe*sS zqn+3)Z@44UjCXfv6NrEc$O@&x=F4#=<-4P~pr7^omcfG4uoi>C?UdHypZ_GmfrHk% zuM@~9%`KKF_Po7prDvFMqr;# zeXN+ryMKu>XRUywt%J@yMA}0Gg=K+ql8Xr*kGJ-BV8G&e?h8T z&SR%rTxSLqh}eBuJR{UDF(W~~XICDW4`taLvXK`8QX9C;A9@Be>N&YqOMTO)cFW~> z(;szQJG)xvY9rXS8q9fJ5PYo5ZFHN)=3WlDxNx#YU6GTuy>+fVl-<}nBc8Ul@0%^1 zD8uv65Mw#EQPn~Y*Qff`WvRRp-vp@DJhwdmdxBSU@S2N|F%=PVVzImBv|1p zIsC8yJ%H&#<=MK>Td=h|;a`{>64*<~fNN$&w?ukeHS}D;e=w3{naTdMo-GH5UEI*z z=h6b{zr_|DieT&Aj`Xt6L8w3%h}U|FF^RYHXQV$a@YJt)sdHBCzrB@vd*V)~}l`V3X8=R)=Npa)WrLgfD&_>p7hYP*7(V>ks>^1$kE z2j$%0^~&nJNWlwW<@N*faVb zS17iwRlIs|4`OTwsD+6}al5~*<~a-?HN}4LS2duzpsCgJE15jni1D82a}DPUic=h3 zR|#VKG=60Y&4R7cL0Rt;e$hRdOdi8BN=fKP$K(+x6){O5Kejm^)@G(%!yZ>_DqWA| zfK?V}h2g_%9wZRqn85f7tmT*x;etRtenc#`qcqrom+9qE|Hr0?67Bi`@MtP|Tj?KD zSM&DT+|{IIsc@i?w1^FSGZ%op;g1588gPgrDv|@gyWeHi&YYzMk0EJU_c^%bR?Zvc;X2op-Ecn-XyGn9ownS9w$K zOUEc!$J8okR#%)S2<|4uS(qr)TN{f{$GeY^HF+3*P+cb56Zk;wVREUws*5Uy@QFT$ zSln$di4PH;*Gbi-#IY^rRqKbY=#!{6keg#lZ{(WjEve9(S^YmWePfiQJ=b;Hw(Xv_ zZQHhO+qO|XZQHhObJ{khb-z8&`o2F&)k;-XD#<=)?^9P!ZvQId`&c24 z0T&+ckF?Jca`?V7_C#bQw2 zV3eJt`)l!}&0vXR`@B`YBEj~(#+l-Ew_*=bnIOIz;ta@K0Y5|j%lzP;*jpgx;{OrO z?y+GGCne6E`*6C1(VC7kTS(^_Dt)9F$ma^Zb%fH!Kkfj7TaSUrrsfZ;68yJE^aAwG zq}lO~uI;0ZvHo(!)1%l$)QA03Vko@0SRZR)f#qoK43-$S2_(8v zXs7w@T4PrAv#*kpQfO*Vv6x4;ZArV=wozFeAjG$%{d&7%gKTI{Z6W1S%?IohbyFf| z(!4qOFoIPeITcR;?YPyGdEOId@yWAzO$vgC0DD+z2!XOh2#;+$@Pk^G=YGHKh>NXM;E zs#iDQ0IIWV4w3M0;Y${C=m~c15+-TM-nnG3Lp0Ol`|yg6anHcQ~VnrNS0U=HfpuePYHrFDwR@r*=ProCbNSg5yq<&MVB} zpGWZ~ z#~P(JgjkHO4(BVjEw|TWizF}f&C82R59MzHw>|U6UhrkwxbOcG`2Jxd;Umo;9D`Wu zc`$aaj${@4%Sr=(P2lPpguSg9xl}dyN=?@V)FWHM>@Km`HCNhpk(CFERf3j!gSpCu z$yj}1&~4FZqMIw+|2Bj$EWSnE985Ufa?SMjIKC$D_w*D4diI*03VVY8-j0%VJ;gg+ zn8S|Ds?ROP@GikAbh>03%<24^y^4YS6djQZGG8!ZF)|axwF$$$1z_l5k1 z@#iuL->dk*vP(6k~~wui~xT?>!Usr?KnNn@ucACpfiZjd?z1(f?qIej`o8d#K@xL2&rA z4S$M!EK-=Xvnodwdar zmUxabJ!W=(xL7T`x`0z9PuQMn$r5l{i8y*lUA2Q@rGX6-SbWL)?>M7@+EpJ6t)mvf zUaE4d*u1@&Z!wHtujsX#j$k#0tPTZ5nA7Ad7MtX-zFGT^{rt19K9+2|43^>b*hN$( zm%M#Me_l+d{{Lyn|F{vAklQvVNaL3$HIO4B2XIGCel*z~!wP`2h7mvNJ5oa-Bfl*Qc zC4lqK?K#~tL=3I+aHrVG1?6K#ILq#FQDaASp_oz$%QxC@*N`?{^n5Rb|E|ww-%tgykqLMug}|82tbs z8i&DtiI{W}h7aq(5kr%2Qjy8O=GyOME?+SzturafpN3{KO)waD1B-Dc&Tk++`e2~{ zA*SZ0GU;qI*`#Lzn38rIiG@k1nu^*4$Y(r3CA=bq<;dFQmHTyOybu4PaDAeH1UCnR z9vnv<=c-n&xIJ}kAQxpPYxY77jV}(O5OpRK-6fBNl981YHj&-kUAy!(M}{L~Ee&-y z6V{XQZ$KsUtP7_Y48i;_%!&-s8pd8RLVOfiq0V$E;%*oRBq~CVrHZ_frlb0MTN-_T zrP_aOyT@-&9`orQEY$)e0ux+x80OZ=ERb-+Duo;-vz|Ud4eZeVHR`Xstd6Ogix$%> zMHtpJiwU|{g6Plss6{|4Ov{Ga<(9CK<%BRfyTX7?GV zAf(s<*kOlh<-X`@X?|Eqtf6J{+0c#PI9WK{tT(ZSK}1M2{8i{bI4P_w1uXmv*t3~k zcm*EtJMWE5nAmBu;yFvEz~(|6B(l3PvDWOM(i>nxRH%AbX}l=dE3)D#Iw~%-oO**8 zg#TJY90Yh@Q7&5vC&I?dOvR)MPdgaez#i;9g-ci36&E}UT}jOi%crYvmhAS~f1oGT^_cH$L8 z=L(oMKrxO(K^bp}V&^R5^Og5_<&T0MP<9y>$zqi?%1R3*48y7n&P^29tDeCDY-KUj_ z&QQvwP(&)DA&DAN91UCHgSTU?8S*Q&sMsgU@gXQCOqvwdd!a$*DHLEXZVG=6>ew(G zHtL&TPi1{uJ4Gv9J>iUCNf(eZ-pVtt?fvYDCauzm+MWc#dUGK{>gJ}N1al^@IdaAw z$^K(9nj<9;bLN5PL}NrM8JjYZ|-!b++t3>u$zoA^*eD3 zLTwq{>Izza2BjTuC?h()o8OQut;^SQbU&UZ%Yn)-fJR*~f!=_1D$=V87LuV*&&?mWRW*MLTMh99TJ(tjz3ZpqO9&`fC;=WT}Y8-(BJSe z3SuLC0&4toA&qb~mb9g;xbh1v$7`kbWx7K*NR}`_4$>5;Pa-N-M{|pth!=Wi25;$$ zhbuy>Eg#q6-rt?;wDV(@e;CA(P*w=j zBIEW1XYBg+F)^C!_hr7(Esp-|%a^ZCQj3k){?~PIT9}j}kHAAby3N~(Us|0%M@{eL z3eUAYszRy>Q|IkNPhHhT9jHITcO#;7Zy&(sGikhL(^2$i=@r^livT8uyRLk!U&#In)Jcmk$TWw_DfI6Uv@#+4A2hP-Wr*a@(P3?gO3?WLyn=Ky| zu)Tol%3Dv?W%j`^leCX6ue*?DZ%}{Cu!p;h%6ILyrL)dBZ9V*GDS!Lfr3-k^b&QqA zqOjs3#GlkHX0=Y=(@53Z@BRo2b?OXYWT;T(puo_VAiU4=%VLHP@&lEIi=arvCjgYt z7x0$B+3WhZv6=o=SZ*WmUPbgZn`iH$m5bt`>2b14M+d-MP9qag4Dp-b{WR&P$eC_HD0hKE(ywZ$5>2m2RHc9 z3vyUI>3wm4r%XeCz}=yKJOr7)vOHM{)c*-XXAgAI0y=H%cikt17gJ~ZJwm8`_|B#x zy&W-Mj7Z(U#RI{%9xff}D(Hu$aAt2n+CJ2BaJIKv6Y1*I4E#5I2{ zAFP+8G-3LbP@^5jzWctx!Md@xk%oTl*MFJ+RR&%)yukqKYGgnPdzAF`Fap;~T2zI( zYO@2vWxYi^5}k|NYJ6(p-XKlT*yqs4+0Y+8Bl4fu03d3|%+v09PrFXWcHnz3P!Dy#j}RQ8tEI7%r@7~>!ILLq$!mr+CJ)lW+$}O}t}$|<^n8GJ{ANUF1-zQy zN0+UA&XhT^k3-*t6Lvk#rAQ2U2_+7)D~WSe>-Iu_Z`8u2QeGd9TMbVKRQG?o`g|uv zen}y>%hfBGK?%A(&za|sO}qjxi`st3o{WuzI+RHE$B;hSjzk#!9zUnCH5B&UZx>`dKJ8@Uj-TI5{8Ckm%fV) zJm=mW>0wq2HTBv_+r*~u71YoQJmQR?Kv1y3|7chA^&^;7wb3>|H$$c`ELHb6DDM>V z8LejbCt0 z|Ea+GEd^EUtbuu;fleJSZuLE5shhXpZ-|!Q^ZQNiKL%R#J9&8xd@X8VW_aCnmUGt_ z`>{3a8|C%@s52l5Y_IuptKUYr_2Fvz1Lt7T-=A&+jN0!VK4uMMWj(Wb^0{tQ%HAB$ zJjd@Nx@}P8`84<#fUp+f)cUlgFXU@lpD56(@)mhwlC0zJxBPxp=xU9q32w*$aWr$` z+*L08->0I{BaBW3KmQv7z%mjOsS32>o;fI5(67+;VXt)O0_J}YF4vyB19z@VlXLmR z;8$`>Y{`zf*fm!#I`zCy(+QfBAR6JX-%H@E|rRbC!GR%F8rgekz zftRw$U+~D^Nv0sl%vph=bV0WKN^?)SkKP4O(mogh7!~M6eUaH%Ls7KqCzSU=k~O6jou5H7 za6pFRST=|}BYQDVm05ZDMNGQ~u?E(6b)w!YvI-FH)X?f=&@Bg}35(;CLwwsA1BG35`%DGi@6SLrh9>%~Az_4-+D%E?jq8{t%mL3W!BP!e9@tdiZq z@`eDG!Vj=wPmmcG^YqyUI#i^)iT-IA*!1nO>y(1qcX!doejMXIFmXxIw!EPb;a5y4 zL(Hsx0V=EW2SZ1ETc1TwSJE99$4O{g5|f>kUqNDITcxUlP0*;ZRr)EYPRlS?jbM+3 z1_m?@i;UvL*)hdN4wdTbs=cbohiJ}&Y}1~$n4@RxDH>?f&bmIeCCIZZHZsz}j_<%> zIATp2W60LmfC-dph7kk;B4l436us9JL8Uao*A&_4orCE!pcgG@$LV7^5}lSp>WNfI z=WdHyc>lbUEk)Uz^G%es5}CP)yh}V+YF6u8nDSzmMsZHcjiE%%FJNslxeKoD=Cfj~ zWMLagi^Ig5AmR$S*$MuO+*D;yka&qsCu3Q*5y$63Tvtgpcqw*nvPus@=3N)&>`14Y zL~bL=^hA+L7bx#+glkXhW$0J2E!0a9)j;ILddJ8J@N?InpwQw=ssPF zDzcd)f&iOwO@u2GqSIH(x2fQYSaBitvaABNqBrui8tKvi)4TpZm2=8y#SJO^JLlF9 z09rB^w0K$?>;`qgFqnkh!?@*5-B`KtD^BGx`sEz$##v0(v(2$gd$QrLkiz~M)|cVS ze^KL=Cyldzmk5ZINK`y{fznV0xJPn*S%yJso)hn!0$;aFFH_|}x1B;OezNx?1nXL= ze^XG>cM8#B%D2)v)3$Cu>V1rKfr3rZ>h#jKFT?Ifu-H7~iS*3{A@ce>i`|{x(U_Er z>jx<~#|fZ!pzGWKojw8imxlP)UU~fRteNBc|L!dNiDp-FBe$dJUVZI4x{Uz4N znDzwrz1lhm;u-2@T65gn1PI@C035-R5rRLX!_^C2k@95;@E|9FXx0bF*4|u_bl6g%1rRcL_9O$U4)7w`qnMj28@z_uLMWpf_7skx2?ydfZz?X_D&3~U2&=c@rU{x zAQ2c188|~B{#Q;s{A(z8=aj2j7}67TqcQzw94*JA^-1`HxYn60Q3QW-@dhug*59Fq z28okkMLOLhihT%@%|vBA`F|l)@)O}0O1jPgS@4v@7KTCW)%BqK9LksvBSbAjT5|~r z3hD=v?+l6AX4Q+{j%LH;*aK2795~dS;pOIv-xiwf_ZkPi=?`*qOsx9bF`Jo9Itxz8dGLsty^?ta{wb8Ky_am3txi%TB-1U~t&bp;}C zDaH$Tv)zcJAz`5I=o$&)jvBvT$U4!-$<~v`xyroOJcY3t*B-b4QoKEJ;1wJ-2Qm)y zqhrL%Qe=&vw>~d2_=uf|;aVlcjzbqaKcPA${)?NHU=Az(dTPR>#VCP|vw>uC-zPAm z4xOBmV&XH=R?7s12_D%D#5aLpkMw5i6wD$Xna|2om2n|gfoauL(UIflK~vW1^Kkbr z9@rx;OrgWpnCI6?V|uz#74C-b)LAaeUE*rxaBtPzgN7fi%lyYkXzXv4o$K}ufmw*J zO~i0C4zXDT_$)HUJSROTZhjV%Ezh5duVrkY?Z7Lv{4ebJ(X$I1p3Odxw+I}#JW?!} z3Wiy!J3o1dlheowVcr+6hASrD3TV2+V2PUuvIT4+O;~jNLKGrODa3HHS^Q*QL&>pg zF1rX~ER)Bm8Tw!L$@z6J{b-SgS`XM`?kwif_3v9!##|Ze<^{3PQhlynqC}IIU zQIS7g;hm44UP0gtM_8v_qqRP^n4d?)5$<~|#MVqihajwTA$cLQkpqDvoqEdCYT9k@%Fb(<-I8=OS9Z0TP2g`={ zO7l30PQ<)yOGFUjX`McUZP?ugwxK6f1Wo)@WasP?&;Lq<^Dp8v72;{+3R5VFVSdbP zgdzbP5hOEmnnYE93R45}CQ9XdK2jCsg!s4cNV5|wfvHLfpWmnt#1 z_`CrIG3l>TBVosD=NWGy7tW(u#F*-R*M&E=k#()8kq|5g%jo;ry_jlidK)PGMS0#wAleV4X!OQjz=20lwuHgEy8#WsU{iNjF`xd z;pSj3nG*7cM)uR1#Hahw>vHm1=Dus5^o^C;>41+|qe5V4-r?OdLbUOd$`NpTRo!|3 zG(OMguD_a=;Y?_N`?E^@B_&Xbu(+zMz?N?kyFt)njj4znMp^i8QY_bQ=?2ZIAq*GgWfxRAU%1 zs@N|Zo$V5Xv8aA?^$GAJ$-n8C?*GA@JUBGo1^Dj)gqD2I}klVjY0$ahq+?! zW=R%GiJ@BNVxB~*WrbP|zlh`1Kme3EnykhTjDFOssl4rfR( z`jdZC26Hi+#UeF^-BczPhZ0AXiGV=A#wz}@+-$K#CgnaO-3&sW@e)Nd6Frp{MKcj~ zbr)R|l!OURd<#kJ#865>?iAlvW|bK#4JDI{jogldNsR}_e*?b124)Hhsz8jr@S?T1LgMfna7wI@Ds_3V|0 zBUq$|I&Vd|yP%oC6xQBjEK`VrsZJ7J{D|-Zwq9>WXhr($07RkTQr?ESn;(JTx++r1;!48^iB~d(UYKkC#1mR;G0XK+dsvqOcY%A!u zCTQH9(T$nm?+ws6N9S872v0M3*1?KFxHjxBV?@@$Q?8*TF`k!-eN!t4cIr$R+B=>u z#x&G{taU1-EgE@rRTl{NHpAUOp#KMEzw>rBLh>lM=kKxJ7Bw3B3y@)3biU6UZJ4rz&RN6 zh$b`aeZ7yXb;BZUU_ZHE*7bn%`#gYS+dw?Q2JPr0c##vtIzi|R3~q0|fsEj4?5*8f z>HZ{Ws|5*jn8GzC%KFC++?D=-Sz8QBmX(isAUYW^6m#<8_&0%JeFBKPkQhZh3`z06 z;fQ~@1CA-=@M`SY??|#PQWVlS$xfESNm3AOWJEN*&8*i%Mi#PfZ_zj2!Z~CzqEw7U z%fXBhIP6KJd8ibyRI*-DGINq;!Y~4%3&KAGBZ_Ulh(@q@!hJ|LHSpEK;{=BN?RLmt zGz#k>*>L-G7`#*W>X0OD##8t~L{WEVLa8huG5cr8#PsGz$CLgVNSfeEHV>Y9k3% zF8(dL5HwzH&MXf3@;7*Ul@S&TALCarI9m1<6h>7Nfg(+Cfeo0=$yr7fX!SC#Sl-^} zyuWU-vm?A-dW~U{VGH9p%uNi*vvU*UcytL?mvP`3XYG(|JK8#GXe1SWc3od6BP+ZS zCsH;787USnV{|YLFZH}5YxEr+=57iJyhIn$lHD;%j#^+)3xm^N3@gs;uyuRtF?!#9 zR05$$W-xwVe3I@dl&l2MxO{{7J8N;%-ec6D|KjiVLzk`4oHj+>MTvL>!vxC&7i-3K z7c8yzICP1Vp_j11SFbHYR)!zLj3Qrzn9-?0VTO=4qRFxO8q6YiA+^+t;Vdz)kz|t4M2$t=bfE&B|E?fQ$^t<)Oh>eTO;AU< z7_rp{0JV-`>+SryU!G+ow6(ELB2FDPd^Bg} zu9TPrC2Gx!o}!@Kl9ZVEB|6PNSuds3|I6%?6(_^R>1kpoPX#2q*P|aEf3G8%e43b; zbUbKC?SnO)J0Dl?zM#B#4EXQgCaCT?;JvpsY4nUSAgoiExO!CGkC|utw!gl^O|YpS zf5`%z_D6&mV$*{{0yM)A4hFA1=WW>R9VT1Z0d;v-_`RGvuKqUOY|glLNir@G)^6pi zQ(7q8but6LVn-J$BmS6`u@ZhPQIpQyOiwjd)ya_VUXb8WOsO>!)yqMWYqBiEvm*!C zezM>&kPb%G@XRhe^v52iJ8=}UXvzS`z%dTf@vC1=hXflSVCH4z4!zxah0`pLf znUFGQZmA-9F;>o@Y;|Fv$DI!H((@U|#&$xSu5s6)fy7MpPpb}s&W7PpIk7SjZ}0TC z>qzgX)i_i^I!hEq(}>R)Vz6aLY&tG$Uce;qZYlDvx@NH12wtjuF3(dQ{Ff9v_Rfde6vg zv3J*o)7G>7l1)?9nq9MwevWCO72l@O;DwUGb?4~{H$c5;%HLz_3bTv8TfJ@Sfv38n zR>KDS*;0b2O2Tgi7vSBb_1O7yuAM^%f3*ffXHC9m!ETj1E`04lw7{Fg-$sso-MeeYy0Ky9!hWs1Y~tHyt=k*_=Y!c>b}PJdHqE&D zW%`%(7g_+fx+Qb9hJn_d+6}@u%L1o~I`25PUDL;@8%1`WW%#z4&f(GZT90fx^(KpD z6_dx))*W&9pN=}mO1oE$cP`ks=^-SVX5;70%Z@v3TQ}WYdKMqkR%QHKHVJUCX)oB; zW7|4sI(07DH}zU!sugUTZGq#wn~PFbih3{LgfyKl0%~+jY*x&$mh(p}`mjPT-DbX< zFXFs2W(W;Do{t;D>{)Sl5Nv+KHy<cw|awQFp-W!JXDUKLhg8sS#2e%lyjp%d>`vtXNbSt}J|sryiM-gq-F zTQ5LAR4Jcv*FE$;s<>mawDvIlRT5Qg)pL~b)A@>Bqgvg9yYbW*MwFexDkYA2&qhs^ z)0a3V=`4zFQpm<2b&_{RJWeu_l3|dtmGF&>eU`k)MKFug_Xq;<`xFs2*d*2c%EWQd7#;P7ez1Jq6Fnq}eVpx|RqG=phR> zP(c{fdmqg$lXM8~x#*_hKt?rNl2Gy|;KMr&O6nLziJgeMM+{B)Rg!;kB*eZqF#?ND9D8TadjxOZF-gokRkn*1@P!LWA{8KlisT~fg z7a}NY$rwJKO$!3)bI3lX5v=)MSV(j{`OUylW?K!u&b*<*PyOZ1a;B~S35RdI8nHm7 zkv~_;H68q(cuhs-4{aI;w}igU4bwl&3;R74k!b+Bvyz03Z&%=@WA4^8QYwr0heEj6!a7L zkmr;me8xu|0bR~r@dDRgmrYtYS~+5o4E?$oOQ-C^{p_Oe(|P#vv<}a zOqk~Y3(Nq~+~XKKly8;}%__{UU2uq|`NjM$-q#X~@UB%i;qW`4>p@4_X&#R4T&3;3 zagWXn&hrE|P#(tcnnT}|QkG;Ic|}ybkNT=O7qe(jTRhU=9rwYfzc1%ON4!piW%($u zlTGzYJw4R|6d0)#Xw{!I6T{f-Pmre)azHyS14j%R!7CO4AqhBy(Yy|&vpS-uGMk)m zem_e${jaHe%AyFUQkGABioBBhNmT~VPio}%yJAPEdNkX=lQSY14pB;~OG?d1uMOZ+ zg1t>t$lfm)?>otyr~lEQ&}x%-tk?})DWaeDo`~@J@bV@_Va*}c5tk#3Y}-H|ViW8c z48_@;f&!@NwC%Yyw3~}Ple)xUWi1qA)Dvd=Fz^rPa?*N{FVmJBN#_2tie&@A8c2R(na{TE89wnRoXT=5)j3qU~xA5r z0{sAn&JJhKRY*A#NOs|n-Sc;tkf{Q1TE~F%`zs_Iwd@uLOl$;;PMO)D8$ApICNZ7f zS@?PVMC`p%`k!R8*2?CS$FG&YjN{LQ6BkHwYd<+W1=l!@6-q3GVI%15klN_uwsZ_} zEd`p-sH}UY4xkFeW8^JV2hxjSR z_%~u(Egpf`sR-mPyf7L+HSSi)J;@4QUn;gzMT&l-wn(QwHt268Ntv}y+Xpx#XJ>7T z@CRlmc}}D1kt&Un34JVQm|Wbwp46u*9d0xPaxWLW)z3Nx4Cx!}?gE#mW9-&uz)mKH z45_KKua*Q>NpoI)lbTnGWxy`$*BIDh3G;$8ISmu^EJNN8@+#S!g!V8etjOMAQ~L0T z|B=aCXG1B0X5TF9?Jkb;Hj^)lE_Q!W76hCtvi~9`m?X!D@RVvR)p!l@n(#7T(_8Dl zVBTej5!$g*qHOfiY*SrBs5@To#UG z>=?YdLW)x3yQgE&ODl9j?%!E37f*EZ)2>V0Jt;WCrw ze$AD#72R|xuo=KkFNL6MoUUsOxzlgiP?+mJn6c!D(4Z2CSnPZe9Q-2=jQ|hLP(Q%;3&}_p1 z%W*Ym$n=zsTJ6uIX!Ae zqwMoFRG$3J;~%BCXDfp7a1&8-_KU~O6YH($8_wB~AQvo-C!1I#1=ZQcS5<(u(h^Vb z!?z~I5|v&vo=`-JfQ>OB>y~Vw3w*Spc9u4!QjEA)gYDcet+GD>&+Pf2%svs<+@YcDLfHA*q51Zd zp`m$NhUry}>oxUFeA-uS_LJ@aU+zxLPSla7XgFH7dzMc8A%@*amVQUYF8R3=Y2xsX z!o5(;v=dei{_AkCEuof7fs48=H8ep}y^x;otx&m#PB%&5=vLs)nylV2O2vbm_&`6~ zq9>WX{dQV~f2MukBKF;XYQpsSOaEH9IW&CF*r6xIWv{jj_pSz{b3X7Yf}ZJ^e&?Cq z-gzRgYm0(1ZBlj{KP6_-+5gzK0Hv%w!816yti8*c$PzwIK$y^DSrF%3kbpYhfQ`td z?{Vsw@8zR*)0OzB&Q|%XXIi6djdW9^v3SUJT>*XG1b)2Ne|V!y(D6^+&S~QWXv&ZjdGbxc#I_|@ zZrCl2QOQRxC6!f)PccOB>inC_)4d}65f%Qp3;2^PDDxVku^p!R`HfPizo%v;__^{W zRiD2rTC1d}u)C~94GV3J;9q(>^NeEBn=Gd$KsGIaoZcXF3NXWeAZi}|bj0hB{@`0d z0lyn9Lc2txY`6({ z5kKkGP!^;%IHF0c?ioM|-FSr1-TZW@a@M*xz5PsOHyic6W^RX?*NHO8=yLE`gWE6a z$y1VsLh^9Eh5O1YPV#r-D>W{6>CiT%I7{vi2pcKmlcUfMdeihMpD zr1WNeNo^2@^k%_l7npbyy_`xQ3E8evRdDtVf82!3W_=pv64K4;Gdp7(tWu;i+N`s! z$`Jat9W^_G&7ew{aciByDA_V1*3^EV(Ac6D<0U6dqms6(rZ5H-CDssx!?PN?=S`{3bx-6`{?IL`vrCp%Nqt_^l+u^gVwN5=NeePr8fq}{7x zO*6?|cBX>!k0t*oS2|U$%rlIBbsz*z;#c%g zq*X4#OgQE9U0y|GUDo8iHUS?>mGib80|jQwzMF#Rqd=aIxT{q`*m%>5|SQ0=?`7gPC!6n$(*WSDz!j zTm#2$G9}f^XqV!UxQ(T66mrdSy-Hkfo2p=+rQpjmY2GZU{u=1Fj9rgKcb#756H3pj zP*_eaKs{R`Fh6V%s%cg!0(MXky1`0RuZ(S1OIW8*coVthDSGyE!L@*%wm8wBHFpVb z0T2uH9admpJPQ5~3%w$@zq1bUN)A8eh4|Ts$kia6gJ*~iMuWOj4e=I6!!s^t<(+`F zR*1Gt{yB;lI?-*7oLZ!Wx0ILdXc;o%2SZI6*%k}S3_g{f?P(}=K9#=QDSotdQyBdo zlO$VdeZCUY6MUh*e2W)ZF&Cfo*~f-pURI)-H_>0E63eNO{O@54?^#mE7VE;dB|lY@ zLI-}_1e^EI#RK6sz9s)NDGc);87G`7KX)ZZau0cB3avq z{2wGTBNsG|&m5u{Em()t&}9;22V2^G8)bM`1)+*a^DNuo$fNV+G)!<+0k-9F+*{>M zHQ~@n0l35iTgq44`kRsG(1sY%fBcO=2YD2)qdL$0(e2cq*c<%qM42oV%>Iz-xXmZF zw5jFPT??v#o0dHwKP0WT%VFB-pa2~R5-F>ZEYcyfCp$LKINf9Xq2veR6`DMb&5Ie1 zPG9$@jr>7tCDlEky}#-Kq)b%w*zgX$M&>(9vU+mZM)5CvCq&mz?x?fEvqeYTy$R1D zcvax0J^eRvO}b6BZ=%e zgcj6x5gllqN#e+Nsv)#QYvg#CB&oExAC40I_%hEMx(`ndc3Y}ye3%6Ct_IpjA{7#u z4*}mLR4gV!vxt)*_s}oL^SN9M*Ni8B(u|h2?m3A1Q?6@(3fWkGLcf=*3h$&!+wv+2 z`rsrwwX*lSvLj^{H2hYMLb`DiB6ojOH4d>Hg3wEWFHFEuhT3He+qY-I&!q-ib7@D~ zR+*LyfgRu**=9{e%54iDB?fb#BKD+ItL4a}&9}fw^!tjuvqX~SIHPfp)TtYNrAXV8 z@A9!${;Q2pM%!8OA6SN#2YS~Ar^>(4;Qcunt-u*CawVdKIn(^-Wb1EjJJgoAKPat-?U04u*wp9u)n6Q7noPp zKQLFMl_onq%I7O2I&sKidr+=?aO_fzYd{po(byz2mPsvcQczRoxD~n0ZI9}?5Y2>l zWHfEimz~NzG-;hyP&{v>0t3W2=Bv23EpUEt(Ie2k&sA(A2vb=N&4ipY0JFkyOE?b6 zGygH=W>NM(UkfPvpRd&^hlV8B%#`c=#RJK%Yn^;nFNGs(e5QN&oJJeQySa#_zQ6QKc}hgOR`umm0^{FwmCCy$;Vpp z>1|F0nld?O?($I-KEcLLnrH1CH&cK^*%_oScJ|eecPhj^D=7p4Q9MjJ&teM!{Tq!B z^xOtA!F=-n!xwP+Z;;m#%ubRsqGA7~Rt7>G&A^}0;VQpufjMo5dKXZagvl`yz(Zx` zEOJ2K;wT%d$%x{4RyI|xP?I>hw@Buapdk%tw9t#yi5ZJgXiJ1jEJL~yxJ7=SNwOe+ zH`hTClh43IcFPmGNo#!s3OvH5#0QZv+%sd5t2YnN*8SnHoBYT{@ffyKOlt!sA4Dkw z<<@ko_;GaTS(f-p5mciHJOAmSpu3SnE(S>#fI@ppRKD@tIi49Fa3?FD;b}!aAb{Ap zEtl*DSbzq178gCe?YJzMi`g{6YKcQWd7koQaki?ig>@J4DBHUB#P3=^i9!FiT_vHHWjE=(G0j9o; z6R(^9N(XX;XC$%7WXHj{4leO{1Hb{#r+HS?%~`r*r1_32)b6QY_r_qT~@V>^Bjc(r7d!( zxV)V9pPEHBf@yIe3jDaP!1&IE<5Q)=;`1RSdoe4(%Ku9;X^FzW5}~S31lLZ3azzHv z>H$a%eGZe?UzS6hg$vW=*x_vI*v?pDJ3r-qJ#&?N@2LIc_M)7pY*YZI|=PYcTO4C}JDiC<-ECvdk({i`|~WsiQisbQ98 zfJHnDn?qHfS|TPyasK5+KK6xUU}ay%8gjSXW@7E6o5g9{|J)tv|MSQsKYFRjO|+Y{ z;Sb7${smc9WeQMfuSx9A6NjDo`ef(1TlUm0hBjHsbv107O89Lxt%B+<@)Im~(R(e| zoYiv3dwlRV`;Si!?Lu24y+3#^6Td7~E6yZZFqtifgU{`jH8!@*h-?{WYPa74my@=Page%cIRE9)o`ZnB|`U-nx%MlX(V3 ze}Bs2>;N$Y27HHFZ|%*>$5{EugZB$;HNp)VxEzCdm=A2;B^h>Kl`>YQe5tTMOT8?W z@5t*xk^?x?|6KXGm35i?uiR2TPxa!Mr~PTi1~^-DX$KS#Df|RIVg!+tBV3DXT_<&w zAf}W$F5s5_t>Besp{E)~n@mom_LU%Pc%~9)67gSsoNc9EBWD!&W6A{kJN*HbUL)^G4`m5T81o6@O9!~02u+f2 zv5<2Sgn6-5^Dg7u-c_q*7NjG47k%hQmK`Zxs!f*PlKNZdkAA&luy3ADD$P@jD-Evx zCqmngutq!MT8AkuuXyf)l5OU0IR4RY9=U%YclRv}sSwdH3t9h=U-RZ(DA^>6k_Z8l zg&#ufG58Mx2v>mWXXza@wgBc@w807!T_o z>#n!or?MVj7bLdT=l)>?Ef&p5lGPVc1yuTJBiC=D$-SdG&$bz^qLzYDDq}61iFsh~ z+b!^!;%voA(x6nkflGoS+=d803CYyxlzJ+()Eum%C5Fp?kWQJ`L-JO+T9UXm(a%Wy zYgH5u2{Jj7_W$U5#~@3hWes#1Gi~j5_w=-FbK16T+qP}nwr$(yv^i~Szn*jMeeeEx z5i537M6F$wQI%h2WvLTj`o@Ua7xR9{QFqYmRTw~LuRlLeusH5i(*J^ zmCUiQjvgdwYMd@h(qarFEG@pqiCI~*v*E842;^~DU!G}Ss;oH=(Pi>@8i zk4p28i?>IbhmN+hHykA|OD%BiVO4Os;ptkf@e++UN8jmn*J$VTHp z%$jKM{9DButrIX(it#OM((51Hmu34=nvd(-8oQF{3;xVMDi4SAi*5V^zUW3qabwpV z1FAk%J^=4==6f8-6zhKseyQ7 zysWC6Sei}?2jyF^V~b2}XPPX><&5A;2@Xq`?&W2z=KmbZf6jOObxhVF8&v?C50`3$ z(GXl;}V(rX(G zSln`y2Lg}&<82R517*pj$Pm*R&PaWt8^Dm1M8sldzU-%rCtcAXDEn++AI?P;Tu))~Y0BaxLF8#l;)FLvq8?`8t2B`bowysx%|Em91>|foE!M2# zE0lwOk5Nu=g;ng=IuS#Un_;83>8%ImjnUoe!BhR(=4h*#IBSLo7qdaYYuA51)N%5j zMvmCJ95Y3rZ`(k~Z=jA$rA&F#8EBkCIV)j$oZ22ESpZ*)1$D&#BcX6v5UGS#ry42s zL9U#6KWi=dz(Vt^YyzjsM6mk1W8iHm@%{mv_tydgHIfXhLY7jMG*^Lm3tQS0`DpQD zc-4hGO8A%0YrOMtM26?(=dU92nuI86TM>tn_K;L@`ej}WvM32wW{l-8jLVC_B%6U2 zi(^X438)XKbD5PDVOgv~t(D|CSi>!fJ(K<`xrgxe6o%3fUk8&MZ+bzHRK3bb&h+Cu zVuhRziCpkGPxuKJlQQ*MYz~Rr-L&&7Dnr^C-+apm*Z9Ys%X<*3R2rAxB<5zymuEi9 zeU;RX)RGhlTdaVkI^Vnm*9dIKCa2NK#FIm_2CYq_#1fANsI@(YFKAZ=O; z)H>%88NM<4NhrakygK+fp~9WN_N=~isd;lBnR9;?_zb#r&t9~@XG^@V#HLo_Z}AGW z*9Hrck06>NQ)3eHBK~T{v$qyK7>FG$z}Kn~&<79cF@4{ryTT82l^i^Ty>Sj*(@su@2cyEKz!3I_V7wHDpeNR~8tp52g#o6u$u?a$Mst zZk4kNl)i?{o*_KJAeoD%^diD1LdN3J>qA2I>iQ9iaLmEk9l-8R(<_D`QwfA13d0p4 znMUqAhl&`7$Xgx?5%h}*3A5!5;sy#B3ULU=JHv^d@oks3qf88zOEyX%g(X|fwJ{E2 zk+0zu;yR_mG8f(#1UZz3DOrqtZ1q1Z^-i`FN*at30tl3a1i}S_CFD$$DjZzNmrKiQ zkOq?kFa%3!;GVwppJaU{^kfqsDMDcVUZCwXo1JtUVW1Tl?@DI5hhYURK zSGFUY4Y|4q^;BIv%mGQMn4n->mcSA;_>aQ^4PPyLAb|xNWpi|&1fydz+)Zr^(@p8! zv-IY&L};p{4bvp6kBGo%`!#HoXm#OOrMu(z^WUCjx=kTQu?Pf4&lDTV71g(tX58mA zfW8rg91}__M?w6|v;o#Nacrw39kIK$>!H$$_0p)XtzIEV2CmhbbDH(R6g&n~V z!V)m%zXK*L^g|dVAXR2 zEfnS4s)rcX{B;>st>mN-UvX3X={?cEYjUvD$K}yOfrktd!XG02+K6-szUIKXEaUc% zj`T~mvj)L_7gH$@zr|kTX33!Fi9c%a4mBz}nYbNX##yb0Girpqn}SgU4S``N8Mu=& zR55&HrddN<<>g4wZ&ycNpRj7@L+0WWI#z@QYIfQPKiQ@X)@p&C0^ptH`if{2r?5?0 zuJ^E#qQi#552xn)mDc<-WF*x6nry+EpTnqadeN+V(XQKxqqf?w1oed^BK5A9f?W7j zf`!BF)`nWE^xeLGFZ5Mi%V>z%n)EfDZ|v&YFi*MLYZZeX?rK;b+oYIev87>atyu<9 ztS*AkTI3z0ex`nJ#OE}B6PA7zZ+%3=U!T)vCt|4BVqFuW7VMC#&!Ig{GiJ)QU9UZ| z##Y9%GTmBNEqNp)G+FrsIC_MrEBq~BUYN{(t9a-#OYgSq!%3L1+JChgKx?38_JAsl zq%p+Ta+`6nD|4Q+X|skM6S^s8J&x=1_zT{&3EK(Dp^v z*l>-_8|aFty}%)SbP5TP@Y}3)u%2A09xXF;;81OWr@4x*v&NC7#j!oek{}GhM*VZi z;IXxZ#Gb??BI$YDrOxoTOL{W#5kTfDfjZm#Hu;L^h%T3~^j4&MD&O(~^Oi8(iNEAn zoY&PD`zT&+D%MohWO(d3c916lh^8?^ZIAid&nT~;D#F34f|1wwmz%rjAIn`J62FyiZPcs?H|D@S#047fe&yF1Qhy z;^~CRT^*t($~rFTxs&ZK0!=?5*86g4-}m49dE|mw z6bAm&#OGpjyZnAC!{b9bV35RA{&>R=l%%!v{?7IYRe z-eBb#Lue;L3JoiXCZ3r6ezo*HV=2i}8GX_VJy7Gx%$g6pVBtIU=9Y?9`PhMY`eeEQ z!SJRM5!_`YMx}e^zBiEz@_+{Ov>i`8XL#Sz$Pn~Isv#MD;;CzqGFHK$rZQ}D5#q1 z$sR~qBSfsFY?FXl8bhkXjRG?&51ef$tZoF4tTe{v4(N|UFk%byf7UQmmOp@1RM8$k zH60!=7*`b36+`3DXR$Am%%)TmC&b{55wbHD9}%b8&MVTa+n}Bp3(@FztfA&6T7FA8 ziF<_JJYyj8oh*mipltDQZk~Rba}@m}hOuQGQ^Zf(6z5DrFr(b>_U7N*?Q%VjpQtR? zza78x{zk`W`A;Tmg&t9csrNje=_2p89|D2N7sWO=(}7n2)|LhKAQWOpBPD`jnrh{b zDz(Z$w`ON-ou+zTbZTumi{3zWYHc`+o`44LCcY$02nC+CrGq(Uf3;2Pu&}x4{Sso# zE}(}au~=e&cT!3yBSVkOxGsNckFI{AylkGzpE9Fica-A#*hunS+2{xD&}I2qM+M2F zp3+W;HD8MPi;yBnc!-q8*AcU4+Yb*#FBLqG-*yo5w>*zrw zlTTk5#m>#F+=Fs>4v1l5n%Ty*T%G>;47CpZ^omy|0mI*c z#d@ogacusoSpKQ;UMy3-g5E+$UpuBjkp#OIq=8@5xkqB`h2T%m=7|rUgs8^pWu7M_ zLJ`1D(6PR@k5?D2RjLv7qgs+}Z5o`w8JJ$~Sw}C&?XmuexTrTXBl+huy6>5uF+!l| z&jiRl!(aZ?g$rQX(+=+f_HDy8*gMfeaSX2QVg*E04prtom#b5c%DJa>cY^5xe?>b; zP=3$Ng*D8X5~=$qmQKKOm?#7b-W~~ooQ`Cogk++a&g! zpb#XR!24xx(HuvBUi8;r%mIB@iDX57;g$iMti5A6qY0e#VZwy6t8wlswEm^Pzm|dI z9pzPsl;;H#WMWRHqj;AC${AgEPtqO~qi$sgg?2FGD^6y;ON3|ch^Iv42}839W?Sa+ zvXNs1rI}LuV>aD)$_RrIYXW1?8Dt0E*KUwx+^K*+GbT?mqmbwgDPSXtit z^N`YleUVhJAw4Ax2aB)=2}bm$5cUi&-3LZgvwl3XxoG{#fVI>Own>n^q2G-3L zmVhez*j7~jm5k`kGI$2?f|_Qd<1U{wO!SV4h{F)uhp1nA4I%3UkD>*ABLgcYlZmY* zU@sUuK0L8G@1o>QJZ17X+^zcLZZb-kmkzd=eGnb|`I}FF1z1!;$gLL)_w0SR<0{JkdeQ^HI}NLJagM7Bstp~6_-v9u1zX201G&pjZ^QO3FF z+^fpwDn)_9SvW&i>ZkwWg2RBJwZ|hj&{NtoWL6_B4KCC(~ANz z0JaVQeMog)orWf!M zhN=^gbu<3%MEM5-OHzmpH&91Ymd8SY3b-jY)`S4Ig2*V6gZ^s zYPuZFNIjTl{79!Bo+(~^wX=Z^5Hv{9kH&U@SR9(ynN3J%jDL)98&7A49MW1=kV#Zo_Fto~ z0q0^~Xo`IDO<%NT|H^(byO5W!b%r4e}OmbhAOa*W^+6% z2W`v;GRS^DD6H^*tUewFK_s_(qK3NPGm7S`0X{*eBahLUyM!P(t_NAoC6S5cU-|nU{@U2^5V$H5%%p& zu2C0DY1U*DQtF`M^|JTKP5dxU3N;kNWC&6=aD5b{;X+`2ADba7*Md~TU%ETTs-ek6 z84!Wa)Un0_hYv<33tD^Ww@6BgrvY|x!V9em`qKpDqW7?!o(O%YqQ2E@O$-ek5guYN z;rqt25h*t*9tjVgpB5dHFeHc#E|b}gYdhYzx1A8KVw=^TAF)&4@stB*N8O0*DcXLD zZoXc_Twu#sgX4LThc3eH!!>D5IVyw7w1(v*&3D&w8Oqsiq zM7dQJ@moFe22SjQ1TU3it%a6zJ|QUJ9J~+%8aA4t*JuZ#Y=O14?;B_~cmDIe53@a9 z38d``#8=oPbD(I?o{Re$8Z*!O{s-*(*h_W(UPT!G`OmlD*fi~{FVLkErfBU`M>*vj zu4n}<&`G# z`^l?;#k=rR6vy~mH@h#CIo*t$m_ILk?jV%+7!rV@Bi^{dI1bXx0&hqK3i1FP+&-Q# zmKY?{msi>zyq+i*8F5sM-Y*mJ-}s4Ghe5_Ei8u-Z`N1oH`~NeYA*YG5xUF1<(NPa1 zbJkxedKHC9_nW@rqgp|{IYke_-CqfrL_J<6ef}PR7#>9KCTMHi_xMyeUc&l@VuG?9 zjWjm1QHV6;15-hn|A8NUfge+XWbGAlY^Yc?Z!);8e{lRyKPspbaBAWqaC`o*5r6=B z1s3-7CDXS?>s&|@SZ)x%%mYY6v2Ubgi3dMuzvhD1PkuR>e_;&lAcF66pG#X2YADXP z8>5`5+B||U!D{&M-WuUv1rJCBFG&O`p2EgtMp<%Y-U#y;dt!V>sd8nIS4eLxb41U$ z(^4LD%)#w>fZ!oAvD{`S$nEBUG5FUGf8J_S@Oq%6Y%6M1|3e+M7gYc)dL=MRw9+&T zsz5^%*$w_XKIgkaeHeYzP_q;i_J%;gKVr%n!1mkH^s`WSR zpo7~JOW-}R%fU&kb?-{f^8miw(KIjOUJ@1lc1URjLXyT#sPEdb;!nr}$(k4;Y2v9k zWS)9==!byJ5mBI~5Spve6UHg-F_-YGNck*shYfUUvbc}ZgtGG<2Jcm14O7M*_^Y~SP4^O2Y+#bk}Se-<*yMFx6)B5@u6z4$jh5pQ^ zuQy=`b-?Xf#y!3M*&GLU%7<$_m8PBZUqE@ST(&OljIm$e(=M5JHgjCx%hM(RfL?R`KkTKW~ z7J4a9RZWAh{*<&^@+SwS6yVC;LToWpU&8i~Ig7~;WvzI)m6 z-#b0!$=~Q1?_!tk%?N(6cPgO&dRwX-=|+I=3h1abKvdyg(d5-nIDOFk=hNtKyeBAl zAGsd@_A;U03T@-OpOs#AI9CpGN`XZ6y=X5FTqDcf$=gX1u`qaGO+PI zjWnD%R^04^FNJ=0aLz+EFfy;^%L&_8kO)ua%L7{@F9%@wo&qliwEu+I|DUrEZ%adJ z8_d~@*L~hEp=8;o5Ay${XuHVM%D#eNZ>z4^JbrgkZljs96s|s}RZ3f>;CbwLaYj)& zsJUWbqJH^?ak z)q#r0GrqMWe6|+{&}~7fo)fWh{C9c_?TzC97j{G@d)7XAZ^sM8igCN|9sgce{Fl{o z;iB*0rtg5tLJv#SdHdtw6`R^!sOnkU%B`yDlceF^7x%on=N;`)`rnkB5CI#sju3tC zrL?bs*z}ZSdmJ&Ht+c(h@jM*0Uyy_Rg>iDMC260Sh(CyqoE#g!r>%Cky#1ehQQgPP zgU!i8Y&Cxe(y_KQG1f-#bmX*|b<_pTr4mfZRD|svpOg(g&?_%ZOYdl?1Z!jNKp@u+ zKOV3S-y2w0SEu-c_=hDoq9ePUR{4DT=qU+t<}0;Z^}j8|&ObO^npr-Nk9vS9pV+XwQw|oG>1)~GHaTjUw2{z~~?z22VOc_E+KEm`qW<@H_al@$> zskrKAe_JG)#N%JrdN{e=Vnz*FVq#~H`fS?FwaoD(HJ2Su1D_Zzkl>Q#gyoDkC#5z77EZ!rXP2)kCz_D#vXUqGTvZaQD;=G z9WigpOLeIA41`rSHxoLgPo&$zfb?3%Oo z|0XniWT8WBkWSx3BOmVhxxclI|D%e8z6Bm00euI~n{m z8bo6Yjh9$v&Dl!7ds3nOrL-4gvVi}k7YkvXS9Aa;4h<^~8+53FlqIU3N<}WMHL2jD zJ}m-6j6@!ssI|?UY7DN5eLDu-2cBOu#uvffOd8dYnOpJjS!zw?8Z~XvcYBT*2$mKG z1`<@~c$gxVqr`AY3)9rsA5@OP*%~CQF9CtibOaa-TM&By`hhh`;*e9ROY@(u___E8wL=xCw~{^&@eB?W8j~}b)$+TJp|Wwg+y_<3f_1!r z2s7RZL2%Rog5`+hV=ivzcREQj99RTmNt)q`z+KlrcZQb2>MiXhU@i8((p|&qYV~eN z>{l%qo|vdi>F@=|{&5Au!py$S1{tAVwF9AZz-c1=(9i9g06cY?0^(SFtzX>r8{sVA z^rXW&9CnwPbR03Ctqas zeu*R%`D(aUGGS)ntg@c4aM=_t*)UFVuUc}#W^UPdRBtkFu~=NtJAH7@AY!ik^{`aN z%<&Mta*t&-Q^BnMU>#*%A-8izGg0mVSCDPpG54^p74JCT`qhAK$7w0rktws%2}A2x|;xfNpySn^4QR|Jy8(w zx8Wn8Yx{I0@2pXS)S&OPqYqm+shb8+JHTe7|ZPkUTN4aD38ui zg&zQZ@@o}1mK)OOZ1VJ=j`$)sZ{*HvGeQb#i3T&kqt8>eh}DTP*M%)U|W zXjgG&skCcnx1PVd1Z!ksr!x79=LR}NR)m<4W@1wzSyA04Iz$XVHt85QgvXN8psL7V zpN|f&nF*^Rr)$is#{+6jWjL(A#UL2;I51Pa|12f>@ z7!Li-PL`qZ3szwbh*UF2CrU>$%t%T?hc((MjgCpom_`@%2j3m;H{8GL>UEA#tHFtI zW@}Cn4Gh9X^9IvW!MfbCf z1$x+o6zm^Y!Iz||n?8MuF1&JLyVQq)u%}LXE9*bkl+ao|FWk2(UU943K3!dr?@^$2 zy3mkejo*mhjIMlAJQ!sZwZgwsBG_U4lmzEmRa|G3a!HYfQIjpEH<`)S@H;8}lm_|B zd;fzXFe0-FCM}e&%ETcGKxRGE`xl+$jc6CI6Cs=e=%UtJ` zU*w7`W;3-D6OSBNE156Hy-r;KNgy@%OW^`3r{4TmdY8>8Gi$x%o=Aw1%=)iOL+MUntCN*5%>`q9yh+}- zw;^~I8G8B!KVdltX-4D}G&59GHzn0UY6^Qjcm+y%T8dihOf^L)TzuzegcM>& zN8M&C`+o2mIWo!XcGiCIs$Vk(nch_rk39d(g;n#Jb%C4(U3cozn&lTcgtAA$)&+}t zm3zaQWm-S@vTlI@OT8u;eh)^+9h*k4dWS6%2gYGmodPAC6L7HmESVL;A=#@nANk= zM}DlDt#H7x^k`QsSudvlbxx3KSE*r5w|?qTNtH#HRFat0QLx*M9E<`$_m@+S=I6CS zXbGhLF&k{2ex6{$zN5X9WZ9a-q#K$(7IPjmh;i~04DLhQ%nj3uQ zz*4hXA5|gPbqnJZ>q-2W9II-lz+(4ts zAOi+|7k#V@U{!OLmQfEFIx=39_%w%!bfAvR$17=N6?E^-xk&^2K5FJT|L%13Mt;tO^-6qL$QX~1;ae8!HM5YoDM8+K zT`TRBPA+V1osn{e8ACvFWpbwcI%)=z!6MUu_%rO-qU8>!OH?tgO%(rxt zUjCuE)NVNxzK0%Pg2W&fk5pmO)LWLhTO?_;3m^RkOETM2&J+r#7j(bu&ymf75`~uA z%((h4o!jciu`zU;%cA5b_y zb8^yZ{p*T^<$h;p@~~9@x^ILDxjP~0_UZ_wfTF~FhnUWL)ZmUHK?RX#f?~hOEe-{L zIhj2RO%e&wmFg+W)rrek-oVQdCS*Q_0=4T$hIUAbiJ^84DaSWHj_ znp-Pu|KBv%Rv85KAaDK9FH{W})-XqR4gl@@h+I_fN|DE6)_W zBmAS|Vn05n6L;~|7io(p(d%<{VBHu}2%{zWATw(S(~>>3tjt2c+1rJr1Y;1RD}jR4 zps62zkpnO%Oo<}}?|XI6w@+55uXW0EeP^Fmp=kFH1=)Yg*~qw9$Q%o#P1{PEwBm!= zRNohR?2|Uc#I2W^drLnU_MwE^UA8d|jVZt{d=dGorvl46CQQ3#E9gsT^esrE6f?*3 z0W1fxM3eakb4*n-`OOa>mVy?MCp!AI2M`zzJrLE?XQZx zCNzr%DXLqVWG@)h9_oM+)IOno+L%})2NAB>i^sv=az=Qsc*N3==Ls?=hiHN8hJvnP zda^)(Z5JC47e-CGcTwfi>x`p<&r<`}9I1GUpd3uIa7R<6vc0mziuGkv>jTa4twF1v4&& zOX+HGa1eUh&Xey^|A7*qD4bfMc(@u-h@Dz zLm;ez{|x?XPw;yV>`3AJj@8QgUtn3AcExgQ9B^k8XmbE$y#@Bfz4xdR)zsPZ4g0gE zRcEf5YRhkKjA6AEKa;<=3yM&L8QQU=u;#nKA{9&bm3`Rg@hy)6Uvti(TVLO8 zOlE-26J6{;n`vOi9q{NK_?827Oh(fJ0bXL`d3@^36Dfww(O&8h1MSYKYmyRxi`IL< z?fv7+pfFdQ2+KES?mI4EIsD|VfAbY|NfGxm)(=Q zTi?Y@^78-#b-Gxm<{6X@Z#l3rUQ?cW@vBdj(;vCK1EP{N9YR*X4kvIT^JCL@RiU?-+=LuGBh0_=W>4Wh~Gvg2-VMc&J@-&StV z5CVX81-k^QViLc!L*Zhmt7rS;0CEYAG>tp1-aDeVZRmL0|=^G}B<`NW+;jcKG+&p)fOuu6#%YPI)kYY`{(^+qg^oWSd zjrm1`>~h(PpLJZwVs>F?RBFHm607u#Im;GLbdO&(ZZO$)|6Y}SL0Hx#&qCSOf51-G zs`maOR}!Mwgx|Y(k0>4~Qv?{r42ckwQ;(^yx(U*|oM;zl*s1pfDf4O8h)b)&2-(W#4hM4#=(9%Y8ob)9`vayj)J% zO(~*1)=8ddVJ(W+!o%kDUCnV+u;y5no6{~F2;@st)WIlJe5hG1>z6%+uP}Q#Ct*cT zoqCDk)ZoLPK9p?h^6+Ba#Z~(s!u$) zPGtAX$z{F>b%oFqt6WlUPh5^EAi6NpAg zJFX~JlO`@G5eLqyXkIk``k|Dppp|eP`HdiX-k^|zkOsiNS=CrPP_Qi_oX>rp^^4K{ z?mjicZioVM$t z>@g{BgxWb++$i1 zk;as|%)v14majFQheM+xr?iI?G4>~O9(;?v)J+!5HnF5F9NuDDq1oX{!};49E$*Ww zj&Z6?Q`h6|qec@H$(>8)y#8bUrcA@$hk@aTYcb4W$(%7`(El)2C$+E-#u6SqfXQ*FnH z-f7_P5z1)b;hlu4=dc>#`oLIkbCYyT!oi&2SmV_96uDaa#D6G%g)0aaXcA*wrGP|_ zXi8y&eUakEoZC777356VEYqrfNogOnDN}Jx#=!a{C?Xg3?|G&9%<2Xhy zVH%e^3E^i&qFxOvb>>5HpJK)SC>x@y6&oOVPt-PACi)l7#czmTRveyhu@NV@`gx)B zm^z?4(lPMbmsyF@YnJkMZHZJHg_*xp1wp<6vJAczvwcfjU~(}xt`GyuWYOw>g6zPQ zl#3}OEenXd3??ECG$x-b9U6J7$+_BckZu#arq=qr%1T3QE;eYtA3>kH)d;d3?v&4p zmwZnP;o5L4w|4h0)?FtvQ<@+qurv;c*JL%BpjWUhLcO^+&+lEcfVdvpPWV`8=t{^| zZD6Oa;w4eDyS*zeh!w$yH-6kH0p|I1Qt;SRL>8C%7r!uR%_@EJSp5qfOj#{hUvscO zW}-fig@Jc1^T1=F=ZkP`(t^=pGHd>CkT}Wl+~E2B7FVB+*`L4G>!~V z`#a3k0g9k<2a$I7(I`lF5lhMpM!Uh$A{%7f!7rt0N>U`0RSgJ-tLXcq zc)Qc7-6TOA)gBo(oE(upgr<{AN{-*CLmN*a;t|^3bWVD?QmZ|3h9D21-(rM2vb%ui z55rL(J5wJ%4#1sFpijkH4pI9!e*l~NAE?S7-EO_H#o&IOBr&w;rk@LmF$~{Tr$;E; zrFm*FeT~2Cjtj5d&*uCAOZw;vLWgjU0{Zh9H2#^vD8o=$QTc0LSC!bjy`M$w`kPv5 zm)4eY0U>XKmV6f%m)Oa|PgezHkHP`WBqLBasaS|PwGIQ)(7~^&jh7|C<`QAUaM-Wq zIfCSlF_LOdL}l6(@^jtj?I~4(s{RqhLN~xC;_pztr`G5no;k??xmr!6GD)VyykL0) zYBlQjQpqSrv{M;w8d8h0zHp+7re>^p+5Kq(oFiwk1=eJI4U>Dgj>?~l$FkEsqSsZF zlfXFUW4aCv-SJ)7H`pDubF`{h#UFLkNWk6O>d9hD29-$Y45`qu&U0VvLTr?klx=c~ z=c#~10sWyDL=tpM_|~;dwejUnDY$3yBjSiQIt2>LJD{b+&AY0W?U^qx3Gx zut{BOC@$yiX*9xkK1GuNii{_`y?HoM+`%zEd3b=dtdEV@$8^3%fnb+loBh{X!R@~o>P32 z@j4b)s$IxxJ{4>gcvxD|CKwT2$f%9+Y$Tf4c`0O5PC2c9+TIR>wL496O#HOFT&=RV z^mvEv$cR}F3=*bgXH4ED09{CGF+_Tv_^Z~6%9K`>SV%k^No+h77=#M53a6t!ox0qA z*b&r>vctyA5_3B)cIZ2%C>kQK<*c?Pxl@TW8#YzSwBjQZ0CPnV0h9l1o)JEqSRj6- z>O4^A(fY#&=zGdaset=dl8?y^r294}#XJ~z-i$?9)MQMl zr1@=vgTlgHpZv(!vO|XR9T@R(^KFy4?K@c$U4_yr%ymv9NJX?nGZ@11p|u-PSa*(k z0~Pmd<`7|SBo2%eC9D*KGu1&dJ=}wt-g%zD9z{RAiDg8bBo*uzDJ~4P%4*&3%sL0l zvk>p$UVfd$dfoIR`&@mxex?#zJx%r0si=Owu`W@@%D%(b>TW|Ic{*FP3jrptIL*$h zLvy#rSm58TA!u#9uce}kD{gM&k-s{ezLGOTDL;MLN^eyKvL>tLb=8V8_2Np@&<>vr zDFpRA7*IhEDr3+#-%agyB;j4{ZGUGFgqv!=hBK~h=7%&qt<+x1F;Ybj{c!%#W?aZP z)za%U>BvH7^i-`YRWsBBjdm5lspd$hqsLb`y}>i$KKcfJhcCAMdsH*cr+F=QCBax= zyJ<4G+U#v$db<3{g&C-3gY`YG-S;zjVsH1unCyx-Qd>`reiN?HK&p|BZl5C^}$wM~$>knfDTAGqtb z9eUxn+9(JRWE{dV&@gvB;t$2qR0Z#sx3{$Y5!u=RI^6B}_`L7X>Al%0X?YG`164MG z*&C&Ydp%6*+y86fSf7A9lb<2DxpbdMKi^0+7{gKerxj0sH@zSD;$|9S)N#C=^SPYp z#EFzmiy{X+(f$Yswff2&486`~$HOEOO{o`0ve~~TE{SOKOa;o(1?}XHY+(q{6j;{k zH1z3;A#bAhSbj)9eC$h@@ijUfD|{L}{F*Mdr}^RoUE@CNsY0kXdu=5n*(fRTAT{aw z8}LCI;?dEyRe&A?|LBNit+;;7CvY89#=Yk!;A)G^zNRTb2geaYF-U2^LT zw)n9>fuWduPYtQ(LvI;NJrX;3<-S^Es_{u!w_kLSom9B!bBdMTXFb%_YfX8_7fbeg z7y6@rp=5^tA5p!5C<7K|LpP`KG;EGW(^&ehSvQl2?EwKOxw>cs8l$tb#E-usCB$k- zvE$S!Sw8HdDys!SX|i=F&!~MEv@AuN76N39;MNA77q~1k=N!;RihauH0hj3dT`a;Y zyw2722ji)pD{3(>AmMC))|$6Y3EVXwxMZ+uY(X9zp&b_37Aj9#aIDGkPFj&Nqu9ak zT?U=3X+@ik@ut|@rJlcGC93=BQXPtvS#jG1nZUk7oQLS9Hb+3y z!KQ-alEHN~%91ERoN>~J`g>Vx{n>miN1dUyv2O8M4D@nNT&_}rvE2w>Zu=;n?#cf< zlQDtESWs|^f2_}ib_e-q9>?$PklD3HvAh{B*ZJEF)82#{Seum5nPSXk@dp}nLNlYw zp;QuDB+P+ogl{ImgLr%^jv^1)>66F(CRL6ULWJ`k^sZRlZuw*H#70_a8M37X!hFyZ zIn-_c$oVaI*R=^WoHNbrP_>7so8W3RK1H}5`9xt6x;+JB-@~)MMTJ4wxadRm2x7Jq zkX9dOgM%oI=QCE-^ggzG#XWvR zM@Se~T0ADfO)#D7Om1afCoN?hl8mkV=jDqBu-usJwFW}%n&}#jl1P~@2ob4eo(m4W zu*woq1lB7Ey&ky=l#d^OKCRYOZA$gL+B*6XHUCLhQwK?-7C$`Ee12I`)obR6O$%<| zYVnsAMotB9D7L%V=1^!Z=MvZyX3*()i5R&lb6Pl>S9r@vxxUY#ERs#k`^kq`v55KR z{4Yh68^;NC>*xw9iyG)1(Uf_g@9>oV`#=ywZ4r#{&!p2rAY(0%c4$v>U^fy4y5CVd z{|HZwx@gaDr#WNV@kmnit>KIQMjG`bV!7qQ`XhyaZ^bgJXZ>-Lj#dZ#g*NKQgsU8T zwtBU278)1x;L0fsv<#-En=*3H>S~`tos2lZl@l|ZjFGilA@+Mnx8q5w~j$hFkug`ClnAcY!u#*hkWsn11OR&*z zTI{~w+f3{BRz-R!Mz*3a2@>W`6;`Rw-l`a*d%aQ9%HrCk9;r^?l0z!$XlveggOmlF z#xb-O;3G^wj1EDRLkH>d6^>k+_(4wj-0y~ln9ih3Y&;y{KL#u>)8}y8u&GwUZhM!6 zmNzvO+RRF(S){Vgb$&s|Kep@jP>TvjsWbgQOr2wp9nrVNlSwjm#&*UwGq!EpwlcPj zn{mdrZQJ%88+Y!Thkw#f3d_l5;tK|@1l*aR?gqa_!7KdY^(WJeT-)QDWPyrI@LD;Z(4aYE_}2LzEmw= zYkdwV{0IHPE)D3I376{cyEtGYwyYYN;m&jR77EGU*Q9n_unR$=9T&D9Z9ajE3=)S% zz8PVYvfGATv*Lr5UFS?wr1p-2WV*=d=BRc^CCi)<8+?-VP`ZxH@F-cH;>0O_E;(%z zvZvpN-dY^Cm}yo8rA>qgvKMpCpFnKV&|T)P(mOLo&djM5O+@wm7ZNS8sBub};cFN( zT`+CK*;?|F%zZGCX#U^Y$^oqyQ1jSX)MD+_<+)S=gW8tSV`J^jwaZn-lh4~Kf%Z|_ z@VdGDYUhnZEA)!tyF)+V-fOguBU|r2fCVWV-Pk_+Y~kfK3KiX}!@p*kXGMUI#$UF> zh2qKJ>TpZ&#ac!9&>P4NpqMv|8(P>Oa;caCu;YEe_G9Y5H{D|PTae$D`Og49$aEaK z=y;y4${CCxgFKEl^weMY#M?r+W{sG%XP$}#0edgG(@&bIJrsiY<~S zJ|$xKbCSm1wp-eC?f%a_m1ZS0o_Th&WRO1i_}6NL(9e-7fX- zU*wpt%dbRC69qSxeU}noao8_pFnpf&@w=yoWyQKF?Nr9`1%o-kE66z;Y7Pz+!)0bb=7bM-jIh6ej zLn-7Y+waWHwh?Ila;{Lq^XqNcoc%ATf4=@AC}>OBtN8FcGIIpC;+6y(Uh*%>;9RMT z&qxiGElyr;&o1AYpQ6|&oiY1Ke0Ogr_Y)Gxrh0g0(xyuPvNJ^N2ZQ<6bd1Ak2uOB! z#dx)=?oD3(T53Cx&!wXKhUnYJym`c@0fhKQBH754=kURFDT<;3wi~bc4VjbP%q-DI zWc{lvTU?xLpS5@EcMNwpVYGRmKo^hY7nT8Y`#FP&EuV~U09K6%_s&sXL-JdMNFbNL zTM6=kE(0{>CG0xIxq$@LY{A!>8#=ER)TKb_-(vY8^@BJg#MU{AME$3A!wPg*x?ib5 zaFKafn_M{)FhptN?7LR%xR~e!)z6Bx4VZd#451(SEj3GQ(wAV4bCxPzEzu=dv?#}A zr03GV9*B+i7|E3N2RQ}(!*B9>H90ly?j7ze?d~o0-R@dPwuK{VTj|jQc4l<+ckMhI zJ8Y*}S#9B)`L4Hiv|rs3ADfW8MQ(GsktReGrl`+%fCk{%(Z^AK-&(5@7OU10@-&W> zwcpoFkJzAh3vc(dlme9L*JH&Rtw$YMzx_@8>EH)KKRI*fck<=XOz2Zy3adjk_L(~@ zq~_*BKC}WEhor zRm!E^*yYqMsfju4k2T7VIp@b58PYQB_pxN*eTH8CpKH4DN0_!;ZHfU|R6KDV5IfWfWiY_it*4tR3%`}fbO zI^)i^+b|?IH;>GKnRUjbvc*x_XoB!_9+vMt{xg*K#Mf^l?65AWu1vb1oE&(knqVI{ z0xpfvz@&;fJUM18gNdoB-YT7^KUIlvQfc+@3$4aqHPNq%y)w`xpDpqypNl8Yn1 z-03@1d+Up#Bs=mtUTwt$ZS9$J{lH&F`4VvkIk$nqO8hvI)(Odj@&LI;RJ0f3iWpjwT@hmhv?5mRc0k{ek#?T@AmFmFnt~)qacQq#8CEt4xiV99_ToBCl=&GzQhDbF2;+hPiG zrsdeLBzU)qs*%M$O{%xuD+m+G85DoIcot)~q4q}rXD7yf+kYzl5G!NY?fsfZfAeqn zXI97f?W}xw5J8&hgF%Wbn*NwMI(N*bjLmCUBH3q?6ULS&ByFsBTbk$XFEBen!5Io% zhhALEoZLgSVue&t6Lt>U=m<+V9J7%J{Dpo<#xs=%n%}=263F>E#KYYsjEi#hE@qES zz*xtg`KA*lbPsfCIVk&S$8{(#?2qCUhll!@lm$nYD0cu=d+nRcSx+@Mol+Kl4PnMb zBZk8>#qYljReee!tu~l*YU3)tEHu-Dwe{hY0Ketj2_M=7I@4Tz$t-@I{cPR}A9HwR zaAr=ZU$v(75elhgR^-Es8jfPb{SmfSs0uckKodmFPMn~tx8J?{9f@03Kr5E|dr0y} z_twrCg}Em&aP8oL&Kxr;AXkv&0^!_iKnzwDwp5EGwf-LSD#s7)8FM_Gg1+sOnU;|` zbaRVHSI8208<9XVzVa(h+FvLV*A-d+H7Zyp+u{;(=6m2ZpsH}qOmgG;k6`T!2HI2r z9qkco6cZ~pYbcbyv&=&Mxc;5)7}Wg^7}+fyF1|FJf}KK{_e2AQ3&WoR zoujg)oCUXD*&ilq8JMrOR+SnL%1-nv$aa?Szc3-g zT(eW4C9Y95;Z#&#+S*on2!P|1p-Hs=A(f#N{p*!L5NhixwEc~k5xmvqy{@pl(gRHm z75Z`)O}}uf`4o6 zcHL(~F|VtLkTp#=o;>1PC>x)hNmpr&O7=tEAB93E1oKn*1NyQ~2>%|4mz5lZN=)s? zY?anA*_05hpX@Yr*@rL4bBD(lLTTcrND|~1V5BB;wKZB$pgi|M!ULH4>#0aRY+Zt* zpN*fu3b(z-A+MTW8+M90O}q$@IbPepNUMI(D`!Z(JHt-YPNjE7B;+d3X zV?kn(q>7#!=Veu94QF|@Egv88X!+`PyW2|-QWC}x&|Lc{_&fk_SU-MRZg;P2`O?Fa zG{_%F8X!`sYrYpY?33m?_zZL*dgJASd`Ck1%Q{&W_wH;1jh+R!ryoyl4<+9@iU=+R zwv3w_Z002lUZ%0m1j`;3-c2lr-+b10p}G!{2jmNLIyliJfy@0d{hbBEw!+o`TBIc3 z=WM@=&jNVE@cQ5o6cg%@p7?nu4DCU;#@N*3U644#G+xtmE^?@yGe@qRbyLwfXWJGRVOmLM7wT@Su3RaR@?^ zjAaCQwd7R-v^cuERUkCSX1YD;kH4AZ*7X~8yBbzaEYB-Z*2l7j2!8K0Slnj~c&Af- zfgRswR&CFS{+_{L_wzyUR0@iw!3&Qli@IW5q=ptkQowU7{cDn{FsJsY4_!q6yAzXk z>D;pirO6k#j4?lcG+=#dWLy}ouZ87b^5N<*9p9?b$yV-7!e1XsMYr-9m=g?hc#p*M z=30Rne~xhWSi}6IbXGANi%Y)_3*RJ_(3#bzq|$%BkW3XHcuPolB~xuIS6^ymD0ap4jHkZ@{{>&J{L0#SXi_!_)aR&H>I`S(4(JJmLON)B zT-o(!e`YCYgZcfJ_6vmF7i6qgaL*{;t9^mDSQuXfhrSTSzk&nG!QZMtzZjfU|Db`Li0546txKvi)A<4+X5OO) z_pI|uKY}`r1c)SgcV#?{gK`3%WNhb$hIC^?yi1-M0EjeV?BCo^{XusK<($=+&6hQ;6YDCSR&pSlCJrzq zFCoh=)4lSD`Sz90OjzI#j;2;W$e0p^s;ShbTF& zyWlZlr$JQZ+(Ddo2&A7H4`mw~eX0%lV4`nU)inM$GTov$Jz}mrOV!ngi3Lh{oXgCd zqOW=m#)}LDuoJ9wxGkLiw&ntDR{YRA14Bb=lAXtB>BCgs97B3`fKE;}+bwoG-}~?5 zh=*D_^_!J%ulwEx8t1yRHcN=t^J|TZ9`?pTG$JpH)tm26>~^XztJmeu>sAx)S$kx( z6r8*jLw?N!Qm%>QX~sn7lZnQ~USmwlJLaw*_m>!&=n3I19YrI_`!_P?h5~IQS4q|o zzW1Xk>B*bsWtU0kipl%G)Y1H>B7ZmfImuEXysehK>U6%kR3x)Ll`I(}-vdhOrq>$f zt3+=I09vyr^}v?dW9-Ef=f4jp&P1$CE`YpP`E8UPN&#_lKpxGXa*)h}k5^b-e*CoB zws~pkBeu8d+r3s{!>+SRavF?pu9l#TUv3${{jgJAt$bywv=6^D9U#__3uX7X{Q6F% zD5{4U-EITna_Z8S$a054J$ih7^^*Y&6wY|I_CQO{IlE&CtG!)3ZU=&gf#A5DhDL_V z4Zf`D9aAZ{vnfolmUewNHQdw2xKkGf>8?jAp|{rg{zZ^-LH`CtVr?S$b#0fPANbT? zjlX;TWWeq0;TqTEo|{8p1K{`dh!Fcap0K&5@Ax283WgNXXQy2s&}zF==;zy-pooDEWV)XeKv{!6t_1n#L8E z-^;cTnWXGALTijCq40$$JZF;N`BY9EdGZFUcBJdV53(3axyk0Fa|r_F!#0pXbAji?TYj)kbJ=Gq)071CPja0&acJlGNRhrLJs+s^=#`hp4VhUKGRy z9$b0^6cW)HhDeqr__xL_?TS0vie2K=I0D!L0nqY;c})8Xg?ScsT!@18ZG=8CM(}T~ zM9LZ`XJ2$A`|4XQFDf0H&gcp(sQ+|q>}?{aHhreQ#auYiEE?L{I#Q80AT@V;cxYP^ zDvfU7tI;3tI+avJzqr;v-!8`%o5mxr$`s8Kk5+`I#Irr7-OjGtNW#RJSfHS&L5A2x z6|=HfChVq*?KeLMAsV?MM~RR*c{Zm1Tdzwf6G(6^VbT9iOFT%zxUg_9oiBVoaDoh9 z?iFHp^t7E5PE0VUu?uHs)zg47ZfH0$pTTsJPZ1NCPgmub)KUmjS^Bb$i~H98gcr3P zx=@7v;>);^8=V-B@BP+pL%Y#!9MnN|$yE$qfo#>f9zgg~Q?;3dD5|O0R7B_!+|mDK zMJ`q;4JMPiiRk)MO-+EuQ#L1L6|-;YPbX5%U*tuPZ#B2V5?FH?9}*!eH!orv|35>p@J`QEjo^33i2l zUgUom(@nGC)gX<^4l{eWM%wW9{yhktrhY&`r^tcqfW#Ycd+44ZoO|b7 z3^o;*<#xz223^D~lt1S#_In5iA`q+2DJJ8BZO*{+e!|c0SNz zN)Pps{fa2R-Po$hZ*A>W+yn3s$VP<`rKN3WS5y_|MVx2WZ0N)-Xc?rIe8eJFf+`QQ zhzBt)+%^$7vimIr?MYcleo^GGkFKDCjA!-ZXFujkX8ro|(9VZ^LXlQybK@xT;UuI5 zrfj8yT#6opn^4;s6=a#R?XneOA2MU89Wz``)Y#qy&vCOrHsG?nX>n&_*K(^Nof$hL zIVQ`8wQ-e+2XkVTcUt}y-2y+9M?V!Alr&uYTC{Y5!#9Sa$ccWJ^OLB8lZ}PJVgSOf zp*SZtvoUJa-dCd%j9WMtgl0Kn>BW0_Ad58Ou>y>zeoOuub*sG_k82Kn zdA8+!(=XUM>ejmxRfJi?U%2gdxLO%LJS0L=5z*yUy@+S7wW8xH{_CR$rS|~8wjA5U zkNwTu33^i1b3QVXkz>wGM0F;liINiKYwQ}br|fqfwCiRnS1m^7N#6T1L94$Z`=-kQ zt`5xo?7vCnaZS29otR?J))R-7h)LpXfX2NksNe~%Kw(Ke@Y2Hg;7|Kv>A?^5Rg}xM!qTOrTC#7u6 zd|TL{fmScb{O;*AZGau2Pl3tIjZvNY$Hd3P@=jY*Qy-VrO}x#Hi?Kf#^#;eM?W7$`_NmvQ(?#DCvOATs=(*a5rVtI%RjN0!Yvo38M# z!O8{=($-}Rl(w3UE>AXj39OxBWu|J;SUzBL-8!$9+$QLRzwtqh@iO#nXupd$r70xM6P^~qF z9$n`0QKy$~7L?H)O~oE=j9(JeuClW;9%r$cHeqKCXlG3Z}x z4I+$55eV>c`_vaxA_WZ$(maQuV>EYqSR@92HIjXK)b;K_cIkyNmY8bkm`k`Fb3vHY z)%W2nq|%x{awI-8jzOwI7&ETL5@n4%flsk$+IC zvCa0*>5Dj7@#UL{sW)8A;K~XIVtJSDLOk%w zCfcOqoGa(@-QhyPc}O9%Z$&>CLQ2zmmb$))vFSXZrC$&;4s*pAq=}$cWEeU8ssE9I zSBvY|k^IfSAHxlMz92^qsGrEDjLg&*EmXP}*hGUFM}2dHg}Y^=ZTZs^K-LeOTXWf> zPgEt-mtjdwi8R*-th;2=2i=wwFlD{XqX(J0^2$M0d<^fe+SH!%8Z9#h3T(S&XCAlx zfAf7*m73)rM{N<3md;v1R1hN$=ew?=IIl#+d#=Ym>XkLlmGT|%o>)3z)YoL;Ja>qv z;EChILGB8(G0eQo)3UQsCgk1n*Z^;d{U%J7GFR6e`1HpRmCiCo7KRCwL6ufo}h z#E+GJMPltr zS$>gEpn5R0SkLaj3#Kq~iIU;P72#}BcbfDKEGNRhR|J6g%T`POtP?o=Lx1S!`n%{k zDtd9#)tBaLRig=(H)`cI)GJ%(9aRm`(IN%7Q(*m!vJ>QhI`wj#Y#a+d7j&h_}Iv2MBx z&qsCoCIPH%edgJ%R+fg}I`AhwsM`eaPs*GI?^MeT3NHrZ+Gz^gcEFL<-?gI7WBzCt zB)fC_#j7=)9aBC%vmm>@hj?_=S%XPt8akgm>4rbd2C-czjQ)$9-2k0bsA}H|#ALnu zMpS8PR9Pg|s;UTAEe539Vq{2P7xeXoYdzfHG&5D?XUY7bC2q)us2)u&fT#!O_Lm7q znvONNtb#miX|igCQ9sA)drN2G)(=?W5}1queeuB}C)OB6?eYuzb>r?|`VE0`{r z=>VdNE$b~Z1%IXU<9iDsaF??jk8<>}zDR|_*tZN7w?Zw|Q}sj5U{dH~Bz*n`H!W4H z8jGryFO|x$?u)*`+DPsS^u(QUbLbxbBVRh=ZJz#Pb)rnn7D?PCC2x(-1`~)9U)^v_V4?$0eepMfF?O2b%&9>3#+vE_-NpL zJSi|`J?fVYcZVal-9}x#X{R5FSo_qLwR58%`~BC*I=+{K8g_=mb0Ik;2{{qzmAa0C zsxK$sNLZ*lRt&g^5~es)c;Ki;~Q2zzj*${IL}e((G^71hI}P?tb`gb(xRpW7ek7m z=ptrvC7tR_0NgvE+i(rYU#b z{WWPa5D&DK6h|Z`LjU;MjY7&-~b?2L^hyRs0ul4zvZLIL^G#)^G&Ua8Y3IXq?$!IjW&>>a>( z+4^0XdGJx!ZP8)o?;1t)WIEl)86JMIkmfSCYv z(GaR$(+ha>Lh?IdecasxQgMrI2md95RetiqvFKF^Rnn3RuRXp^$F4yD$am@F)7EI> z?=QeX_0w2sC4f9}{^#*D0H4r?@KIy6gr~?@tQbW|%1nvCsseqmyf*Y&Tlcbpz^!Fm zH+hV%MC8IU3zEvC;PolEMK2ql-)!-O{|H;;eMd2 zQj=TAHam3|yH*t*GVzzZ$L+w07vU!Pf}ym94dyr6xn9mlCY)yI7bP4&cKydsvr05N zI1(wB3JI}blfom(4}9?s+R7sw}!xIFtzQg z(>sd(LwSH5C3(A`NyvTINw&i%h+a4I%lPwEypGN=US(oHp-bn>o)OMNaeXryA>LLq zcm#+tBec!ykomscovjw+Cre339x}-Fu1d9zNMsSU)&6I*1w%exxthu|!H^Ea=DYHg zcGbaZFM{BbOA1e0&-?#a?Z7>-&)=$O!-S(;oY2&?uE z@CB@6O}WvrybcXK>jw-CC+p5s^sC-={$5S)b3A<99qPdIgnN~7SVRYVJ;BT5p>SegE^Xy52rhP|x}{hOSaP%~ zMLO8#07G(`#&L(!J^vz5SoF(Bt1M~cg@9GAy1hA2V1r${trpz!pY^Q0 z=6?-^V<-GTz5ndMdyc&6vZCfwWX% zjGTeAZia=nPAiAY6xq4*Z-%nlQ5{*hGCwbQnWy7O#u!(DuvIkKY_~2lNK2}Qk@(N2 z@7HkBfYO9Qo`4n|EvxV0Qe+J^IlIeU;4WW`cHY={Jh6H^3V2P!+SCK8{ zgo4YwLQ(1r8Ul;%Ib+ID`f{W1KsTY4S$|dvgnq%d(PEYqY-Ot3*O>7m7ws$|Wn9Z! z^ZFWt@Y+*6(-_L+gvjw2m14O?NrQhRg{Q_sPBk9=2Ai^)SsBX{eeA771t;r}+ImdYvz3ZRobBr*z!bi2 zsEgEk>n06L>-|SDQt`(p1NXChrxfe`wJS5~4h_{Medbs$%e!OsCT6mqxy7h_6F`jf z0`i{ET9Tp7TT1ugpW>2?+)O|kqwFWDd5 zjhgS&)dEKswuuz*@Ns$-m2Ny(0;EC3TRf$;#oaGmt1a~;jdh}i*_!q5o<6$h49CPj z;9h3W^v=Alz9o046J^w)EyYL1m_mwA3NjaYXX&;Ae=fH_4&<>C9f`Lo)gnp+QlnQ0 zsajcSjFS_c77Iz{Eq0PWo$}YkvO8`&4VG+m$||KU*JVyQ-N2uW$?aXS>6VD*NcI?E zhK!nwvJY;SRyFoNqoZ&^AH;~nbV>eDyO>+`P zjDA-!SfwV_>ylf*sz?cJl8u=;giLCSL&aaWBE)VNq{OtKp&j)5kHKu%D_$-bBc_r% zud7td>qF)rtK4e7;>|>0-Z`g7T1Zc*p=Dg`^A-sXvsLb)6)eKyZ1!F-H>ueDG8|vs zd$(8ZJwp<>U9a477o5fM4n_d`_k*{u!TzKlU{X)#U-pa7Oz_@Awy3nP6vCC0$+puR zx2IFdT;?n}rLdIoJev{Zv-o}jS6uE}qualxa+>4eCotGPI2;j%KNBMmy{G=rwrw%J zn$K&JWj11NjBdQK6Lj{yxa5fI2h`lQ_@kWEkkr3f#uPo7!UR%l3Uyu`^+I?=fgaU(!h)NyXL5465RGINO-P~5HuV?| zK8Yel8HmwLF9S4BQ*xqMQ@jnjs?4^Lssz$x{3zjS3?7VCnO|_Vn%?7XOmoiJ z>pI|elO=AEN`<(lywX<rhGZMJ!M?9e%M8T{mKHPU0flhXtlNeaNvQrL0p#5)WWmNtO zrueB}4u8D%4y7d4)2k!N9PyiKHsCIjMFvxBrVl}aB8&Js-;Kk zhEx4fQ=I!LF{z-@Fb)>J1LTqQf!mEsBGl+JxQRY_L?GHkue^zT_3UJ%E7y(&{*r|c zsn(`7&XuB0^S7|};UX9G@v-tS_G*{&-pT~bPZQt zeiwF|MT~m)(E)u?l{6xrYVu`<#Jw!$h;F6aX!vb!JMsp*9H7??}LQLlNH)Z5)S z@pu;>yq&+*KIG$;p#1+>_{4zp`)%7a-@t9_ZT}xHkpUvq{U!}hFg?YC)|NTRv8g2O zmJ<1?_NL8FiAshfv{XpTY`H%eBuRW^*%l`>v2w;Y4?;Q$q0LFDDiA?VLjS@yaKx;n zD6>nx73RiRZnO7X|0&7!!5-wS0(TTHSH(#t@ z($#ySZblwIA3d1129ji|7cy0o7R9kF&O<7;3Kgs0Gt z?mV#l2^jYke02)$*L81_@F;+$I6bXrGp|qddh1yXv)Nf)KvkQG84DGWAC2CQdN89Q zd_E9=XYZ@}3;4xf<40i(qln()E3wQGoaiuWwOMkkoyy|X{~3KV3aeatf`2~bBq_*> zQToP|m%AZMR$62wwcvQ#{d?}zas)eFMl-_okJ>kYa0`cN=NpoP9y4v;5)UJY>XD3V zyQq7}RMI_R59hsO??resGdIP`J&P=V>W#y+{xff~-F;5$>DQzom9>zIZyH4t6^uNG zYsYuFIXZ{h4g;uYx&Sa6{CEC7*552&TgH+ugfUIQ!({asB!|@cEUGitY~yH6&zTwj zeMD>Y(w;Jts-hq-x#M>*-_Ed_5@5 zdtgcQDOhAF9euNH;0=B%f0^x}wK(ZtP4n{;PsCUo))Cm9J64IuEjujj_P^10vsqgo zyEjoRwQ8o0Ytu#ZC#qd}ZNil6_+C10{Cqm$R~vz+MTw_BpQwMlm8mTy1YP8GZq1f@ z8T|W4*eZvYk<-%_-lReaUP!+~DtE4MiYW>eh=VFOee7PG@Q0@XDD`HJ)C^gE6?M;O z5)7?B)i=bv=Ws02t;ZY-nYA26JjG!v7G+Vd)+)GN{OU03CDC+4{`R_5TAKp$?}5Ww z$FAz}hYFEY`>3YB@16oTpEhZ6fw!C7Nk6eM|A&zAzj_8xAL@^*j=qTJk zu-hsO`eB_z9?Rt~3z6*){ZTnUS%t}C-dVEFGwsE*N&k#)eN>-RmyAf(@XcBX?~AsM zGGh`sKi^ksXtk+Ya3+r6->y0nZ<1MT(SwQx*2?Z+zpD+Ptp$hzHYd`7j z4%y3fK(w)g4m1V98gv$Xn+y_efQXbIy*96NS}k22>eb?}`j3-=ccVrTh5+>Daj#q; z(G6aofdmYoflEo{shEPIM(w`sATDXwrSJK2%jOF|nQ!4f^$00~5-mFo5zjvcJN~pR z2F<=w`m0oB$e&wSP1wRZ4AtzQItK0~y-8PX6`w|DZA7VIXE-SGv|j%a!_mG>zU% z&a8R1Z-DJ@(Q(3NwJZIblql*$Hq({lZFTmS&pqmH!c!QzlE7y`xoQ3nhBT!qj(WQe zgi$qHZU|9LT+@BSQgh(-DLxRNJ0}Jq7EKUX5366|_r(NFy(?AwOXS=*wZO-FL4^j_ zlH=E13b3~GAwzSqU#pH4W#`Cs+P66d#BhDoc*Tc3OzoxKvZ3-md3BJ>yo#y=lXR~+ z)ido6fTP2Fhi!W>%yVdExz{03e{MQyNS5B)X$Sk``@9gjpB}^FVs#GNAKi0N6M=VD z$7(-~V>;v<2I1pz-Q#hVM*-RUEWR{{T3}jAFy>YE%>rrYFf$J+_s3!~^!WT}o303q zfsI!n7QUIUsV?p8YU!o8U)}*!T5Z`t_B=+N?2CDZSvzm!4G{R)wU;;rwEvS}*fKb9 zH07iGm>fF~G^18h5t7MyNJShO*LW}Fw~@*ZJBWU7Mq~d7znyAVuAdEOx&I= z5~{vnGl*ra23i_Lc~dV`l~faEhZ~T)H^f4TNs?qXHSzRVW|Gp8!7jx=i>VQG=62ml zB7?Z_a<^82%dVjRo}OK` z&$o@y-9>stO#z>@^JFribe6mWStR@SC+#C5x4m3a+@fFBTzN=RhvI|N`NC|Qa{{JS z7$CKyN&6!2WPZew? zNH59Nub_F^Z6{2Lx~9Ul2Zi&%UgZM-NEmg_s4fa1l;J{4H7e#9OV6 z$Go(c zAy5K)tu)7X&=}>{EEeIUAWb=%HLGmP*>sJRiJ27QGCpMEn)~5Fm=ehO{b=}7@=Dm;grqIhxb=6 zjJY@bTWqPrsp0u^;bDwW6t`K8xq)54Ze=Tn%dZE}W(>j}GCll3V<())u$z)9jbr|h zm+r?WvjqK=oN9pnLHn-YFXPt*7<3cOH^61ukvcSYl#7TlRl3ID4(sq_BglCA6Wet6 zHUxJPQ21*a{o3;^r4K-5EDM>`N<=rIXqGfJo;bZX0o@(lcc=~6LK){jDf{(JtP|T7 z{$9;b$^hMnA_p@d_vgRapoFbtEr`kr36|eebVUEOVufT@34ag|*b2ctto-#f;wSQj zwS1eL8X0e-C|Ipq=Y$Jf84GFMXkGaei$${uda{&;t?XXYl8#p^wf$14k8QO6nOYSy z<|m^*dTr!Zo7|l5mpHT7RQ+p)&plbMW396^33%9{M8!s^cvh(F57BBLJGK)B1#j}B zkqX%Fah&$I8a4uLuIB7}WD4sG^j`3I+AUc^TYc*&u7Fykg^T?AB@wW&|56`K+C&U;q~_7|7tJ^4)Ib4>)GRN)Crlf$5Y7S*uMMQay@^t4B8_J9 z&0s$>F}E15Hz}Dl?z1F;3GbL9&^upo=<-8GazRwM5##etR#_z9^)S^(g?36NKl^O- zV4I^X*r^&Wt8*|zdCbtO)omaCk?;bHUQy<_^TU0=oBl(%^OD{9N`U>G<8>PsbQSaQ zBnJNUNrSP4K7G2}+O5?sN$v;c>h?7|{-|!UX74%wEacN!=^m=l5|;bTxPWcZC5AOTDKB*$Lut5@-8J+Q)>K7Xy@c2+B!}x zsy?RVE0QEIt{ly^00{A#?63*{HtJFb1$%2D6I(|s$~=~|vuL{#@1;ea%*bQdIJOa{ zr+(@`C09(UXG~7Gh89mh4m_=4b~P?<&%d%ovjGAbfOyt#q1kUHuk!rPAImS``Md4a zr|!@i9c2(6vgY%bgM zA{}QU-eOn(m3_yZ*uEo-vS?-2M{dQl=T^p!%$iYoQt#Axe7*AK^-lFGl#ePDGH&W2 z3C6^%j$AbMAc#3`0J2h-D_p64h%CXhT$7Jn1w^hjYDUoTDLLN;>v!{h3JwHhqSQaIqz z1Nj5}r#wrF5hP*_zNBtTiHpOWW$8?LR!^(v8vi2Tgp^gg_h$AfNU_SPiL>c7@Lok= z8ITmk#FhXU5MXB(tISuHGH)G6$`ln*+$Re+Jwdkm+V;b( zXNGSC=^Pv)rCKIA_h`Z2$U=p(Tc z$o5xb-dgx>7KEFRqtJhN4pGmP0ygd^Ct?Sf%ureN9e&OisJ;Gt*uOj;g%0|ObbQ=VlP0n%Ptje9{QopKv_!xYecucI46DC3(o}`GiIE zS0?MIbo7R@KE<+c%vy9g6;M8}kFi9RBFWJkcgw7S%`SHv`OlDSpuQY=rNR&fIGag5j zHTb)-m4(J>BDf?H<)Rdr_MPm~kAO;33d$yDSuN62(q+I z+lx&`Ppr-`zUvn_bupBCoehiDr`)mFR#NLwl=7p)CO?Z8}DBp;ME$C*g%*SLv8oWmmE3n`^oR#F1BjPow5iRwWz=&+e|I!rr4uqs`2&Bg#qU z{EQ{K>*lsn6r9Q5jm}9`7P!B%c4S+On26m-+!TJ~ZU8J;&@)b^f-2Vz<|(HQh_iK_ zXSUQ)zs29FsJvqoDVLxvOzN_rVam9(^HGb=5ni%E^nRTRkNUy$l|&FmrsVZp2@(fQ zni4kTX9IOQV(sYZE>*l4_N+3sb6X0W537VQVUd<`7I6W*NFg?B8?o8&=0q4QwLM1f zIjR$p6YN-o#$|awDR-?66O!rSn(orVx=le1*c66euCQ=6%O$&`D45kUK>8vy%^#I{ zAAQ<@a_v-)JLG+4BrI;OLib{*kUBSsogp_9)1W;Y&n`}`XMWPBg@XO+bfPG!DNbrm zaz8qNiFlyn+&QsbH1b+vVyQ=L8)UiC=(nQ=oHJ+oq01v`T{GVD@6@-8wyihfbd3_K zmuCY*8TN5I#O{@yb=DS?tJkeu9b%VBs7w|s%Y|EU95Eki^luNy z37Mc--2K+oIx4n2v_2fG$)m5Nn`%N3Vhp>_#M<@MCKbHwzDn{v-D;)?ZV(0`ddZV; z4y9ZShEcrgO)L>h&rY}+d)})(9Is+D$sc;^`989SpDgcS0Tj!VO1Kh+{d75$m}dKWV6bfY^zS#TufplyrYAAq;7Gc@l4yv@4Po#0ig ztrhU*e->!+0zBXdl148QEMmixf`K5)fe2pyr@-b%rp)lZ){xG2&H-+Sv~3 zUnc%az8Z*!WH=5fK?WJ#Y#=BgE2kEp&EqTnDkA#8y7S%{`jcqsupP^GCWYvu4ZnzB zp28Xsarfl9@YUd>+hfOpsZtjbW)CyHUK-8@UBk(y(~_R z_Q)P>kVI@@1=jO%e$r!!N_(m`VrX_L?@s?B43kJ#woX;jwVqq_3fxIFjjo~IU67zQ zQ0iT!*Oora1urq$&Bhls{>RNYO@G9zY^E)@*zQ4@iC(XoZAeQ|q=U?GwM^gKzwZXP!Kb1ZdJd{$w| z1Y#E$@_JRAGT%IKtM9(t-TE?2Eq8BaEOM7H9gur@&C_Od1~CY$^;0I;4}r4^`Hwr{ zJRkB$RF=k%&2&H<7pX}x|4gkLMN4P}Zx4OqJ8b#B78}dtmqu4Ud4&coUe4M|i#cYP z#g%QQ!r$O&HcA#N!R<-(N1fQ-fjR%w*Q0jw~G+ z(dRL`nGre(e@95S;(N*Hdnyq(%dA>pm8 z&AMhR$&U0pp%!IOXyczo7YoKoB*8stw473%^r&=}{8C}bu( zc+3b`fWMW6X%K8--m^2FRDd%)Q_c1N-#idh)F4@a22r-cGLEsR1LVBuh4K(p&8A&f zRH486$;i(i05jba0)&yFV3OMlGBG8INtO@q3w_FJt%l(xwO`vW6djr z51jg4x8XLsICCcckZmpg>MR{TLgSD+(`fCIm5Em_iNSFLlPio%4EuX|SpMSy50+oD zyi)6WowEI%#Cb4-^^Ba`JKUEQ$=7@yah+9&L8|9j{!N41|2Vr5?-LA1bh7G!MMwc4 z(L0zJ>4FMmPSf0}nSC9j6R(FWwnrE5db<-N>_5Y>$NR6J@7;4wx$yEWktOe)nUD*o zgJMV7MYQ}@p`0)?W8jm(Nn3rIjcrDkmYQkMNpk%g0tSMX&e&s6|qcwlHMme{Xr_G z^b@`G^{_dAlui3Qx*-_;^Y4EOF+z_c{&n#`*=66##s730H}=0b_y5iPe{=u;t?vIV z+8&en#Y)({u;1h8okKT#|GiLjkdX*Itb~i7;>(CYWBypaDVdNcYw9oF(;GW0vTxzo zqCzon9Ka0EqZw<$A?qP%U8Hr(%wZ!L$q9gCp%94iw=n6cOudVZC*gkLg{O`;_SU)Qw8E&t}b{ zmWsU=4JtufvaUaFY=Qp#sC|;6R)PA;w>Qmje5zOL&12RudxASF;@YxIo75I%w85@b z8(b@EPyJfd$AtzmD3>$)!3{B|&>-AuFWHoFrs>Zz_a<>^!Onuj`PN}S2#cM2wCfoT zm&^1p`jqf{DIQ;4QpAF)5KON%Ub%KGsGP|OoBX_?iN(a@8fziU1BBvVi2#W76b3#= z&x%#|}+$AI;S753vUL(11pQ62NI`x0)(h z!y9E3$m@cV=@^`1zqBu0Bt3Qp7*FaVW`id%iEUjCv1a0P#$y1;O4ux_S~9QM^ZK<= zclYHpwuwm=2)&o6%6PGttBXgp&Bjh5!}ZY_k_ly|3d^Th*{=GR{+cb0u8GT4<|Zgz zx~_a7Rv<$40if^LYrgZqsUi>|ip;JoGSiBfu?uglwTQT74XffR+a}SFh}?1OmNeRs zB%PK_#NA9J(~c~c&B&+eJEU^mMCAohILgI{s2ehvaX3sf2J2Dzn^MG2K{2Y&nFyz% zcP0%Oq)KE@u1p2FW6Z3ON9BXLlXB`Cmp(4~qx&-}6O9W>?R2~LV!YHc%4Xi-Z(Q=x)6<|DEqmXL zGDTLVG$8XecNz)1OAFsf|G;VDv4m|Znj zbbUkDoQW$M*x-E&Vjr)bs(i91FPHM*Y^Mmrw|k#pfx#;xn9P0?kN;AA>mL72SK_)) zoAatZkn2%2e@wl!c@85lL6PG>y(k!&E9o@ z*#^J>uHBh6cGLGiAhw?gix)e>K?wy%I2T&p^CjxoMh zfbnr&F+FStea8Q`G`hhP2N_GD17~~6V@;@2Pm46`J8sC8i;y%siyx;ya{^8I5^l|w zTphfHFv09>x_vR7`@tv*Z>I`nl>UvK2b)PU`{T#ymPdL$qpl5z$F>mq;iTrwX9+!@ zB8WZiU33rw+WK~_pY)vn9{>7#OtuHDWlOD zXSaASV}t0=c4PMFaTx6hiTCP_hzLuuMRQ6kxB(%F(Enp7^#AANmZ}E@(GZKQCpAL~ z75#+DO=nYW^r`~F3lI#9!{G5cE|wH11^PU;94nCigajW+6lW4L1Tr~(-C4M40{M2` z36lFZ0vAFt#x_TbRSAjza(17dm1)DE1c4FN)Ry^ES|&9nDTECobV%$~C2T zC}a+P1j|e}#BS+L%OyCWvhCKJ+Nflryx7Guc%P?xy&lgg3qkyRJl%BGO$R~@E!Pv% z-sh&Ky>;YtQIMDqBd@(8`r5M-*xq$1Z0~9k+xrk2+xv_}ws&m``@=lzG6??xB%&uM z?rQ*EO;w2suStY^S5wrVn*tLGjsd&axTiqQF@SP=L{WtPBFy&2A~N~|1_G(zi0Uhr z9O*eyZbcb4_VWMj_WwLI5rmJyU!(u=+*Z4pwf}FrH~OC&{m+g5=SKhYclZDMEXL~V z0xoXao~Rcu!x^t3Y1zS2f2x>UuWx;J3P!|B;4wzWFvML&e34bKQI6m9i)Bm^kC-Wy>>4OIjJAi(>Mf})`HX=>r;rm}M=UY_RmKb@O-Yn$u@#@sH2Gr*aM^kTn09AyTjH6ru-IJvU>jZpvpX)3@if2PyUE z=Jf+C>lPxO2$jk5^iobC_)a6VF71z!e$Zo-+4DC&XES(+2eJqa@e&u|Bu_H~xf%{R z{9(pr`Yf9aV^!c+Qxh*9azw6C3);h8hyiOp^<_4U^Aa!gaePJB&$*TCIgbuApdG}P zE`YJ#Oa_j{&(tUz=i`)jhV7E`J8Iq#zzU8!Sr?z|OLi)t&aU)MoA}%>P7im-HX`l3BE52Q_gl>gCkv~jOgQqvIL4?^%LquN@W>fQM zpvTJbR=Ku?))dpig4&)rSI3ihA7VC*oH?22(L>{7ILS}wxeI?8-6LyA$<5ssI{0b0 zam!%(Sp9F~B#0e)`*!TloqiPf7fYpz4---{(D_IA5)X!}IU3(lL4e7D?OzYlPktRx zIA~#mP}YEFCh#l;=5Ce2f_pZxo^z%%M@htD&iTf&r82Vg zZMeZRQXxn0y0LagfnQz@XxjNB=ln(KP&{+aTH|!3){I9ION6BrZg>o<9z58%b*og$c7fgp&pCXubKK&< zDZ9p6_y;@QR-GoHb?XQXpwuE4dQ9IytEx7;XN3%BHDQaIZ>wC5*8{|qmqYQ*KwS*)7&vOFZLCildjn|H`CgWevWg@0|>?+pHFv{3F7%Vk8}MMLM7`rx~PrMj=Wr6%ik-@moBc|LDo;Dg0NMY<8TLS(Vc$CB(7$(jc5?Klw|{v2;*5egl+}^O zy@E9izLjHn<*JI;3ewZT?)`kLFckbPXMHgETaIOx*usA4Xj3(l5!-J`eu_WW#HnNc zSW_r^A|dcz(~LvlwI=r40FYtdwMhXhV{GkP*9rFyPD~MSny>SADNAD9|1(k1wFH0I z^46oG+Lm&T<(A$w5pt#@WFabM@s6`j@@XB!&JqW&E>Ze#!pWJ2lQSz$CK^sAAAytC zLrIbaWO<6>*9g+NG{sWNS$~>)yFlI4+!G&y&BT1UfJ-}PDzTWy{mR5!dXGZA8xWZ9 z7KocsliDFUz4Vl5Hv2k3IlVB<=LwYXjXr4$eC+E9l?Qn~<69m@%cCeef&skFg9IB` z?R$nivZe%*>qT4F6@hW-SJCSwYo0{-xCj8B@XEpU9w8_;XZ%Z}0A%gIrn9;CnZv(d z75}}_YBqEJ|2OYH-`IcM*ni#FfBo&^zosuV!x-MFCes0%Z~jIzyI$Gl3tb!u|A^6F zI&UMkvOYO)@fRH7BE@6E5gE=V{BX9Ch#+7j0B&sx9mVQpv%e@R-(W<{h$Q?;XMgNW=iEA&`}0wq!u2`MTUf36JJqxc_* zHRSOpa7JlO*io~DPoIt`DZ|GQhA^aN^wnh@;xcehlmFna zPnVSlF=u@N0jx0r=+v4w23bSbdsHyb0HzJ+g1D`H9Zr9W&BBnB|4K$cw6E9zUP;Oe zWC{L4x1@hV)URUt9}eeL;c)($7=bJNKWdF;JwyN3U9WXR|KHI6H}wAv{r@+j|KVZD z!#(&8PEvK<(~?TugdV=a-{QuF3iVYV`n}cLBqXz#fsfa%GekJ*G~7yffDm!lUExK- zdt`W#z(1VbGn>wmYwJi_JYkpPV#NseNxNBZm5 z(jJ&FNd6{NlE0T(Q{~j6_)>pCV?xP{BzDY1V4prb`eo;VBAugR4G8M zQ%HViJzA2l| zE6CU<+;pnqcy~%-5EQc68L>te)aFQks{*lioO=(@4KiJ>$cZ3vJeeOeHqn_Z^+?sM zb8}h?6p_=W1K-~;>QB=8sdMKvJJ)F=;cZkiZLr}A<2a+Gtm(B}C~kc{hXR5j2&=Wq zexxC__ndb$7&fH)X-a~WBu#lsFt6Ygq>>1T(3bV&6~Ybj96mYkXm`9NtGsvQq4PFL zv#A_UB$XEjRM}WWFB4(gQ8|QcYv0nKlVOpR#J&>eE$~~sc)pmZ>rcD#H|-ld4TMA zfhtXD(j?uqP-xnuG}1PuO-tEKZ6!d{?PelDx6#eJS+$~E>_50}ae?R3by?5r!neCjJGjq>^LpOkqS+y!0t4qSl zEAl0*xO4qOH2Fz42~ELB!BaoXZ>Wjt2%3`UHy{y}kVLvfs7gwL_5>Q8P@d&@a0BLW z1){B;;cMn!V8KL#1gTGtU$bGtzgyurBcp)pSfPf}S0SP%6 z0^*Q9QstpFko@O^d!hp^iQE=u!+>z8Y;Pw_rs@U z)OSUFO6zfLgSySpo%~C_VU_p>g)1`S6Gc20#^H}jDwVE;)FMcg>}@te8Jb*ci#pJR z5G`bR$4bnQ8WJrJuSJn&GhpH`+|SFl^yx4-5VDa6HHxLNx!DTs^|){gNqH+smqj&I|0Za(Ye}kBnGEM@UYP)gEKi7LH{5t$McW;pwL^8? z1Ii_tU=CY_gjdc`<|?f^Qs94qB&^V53+~Hboo$>iX=B!DySL^e)`s zR0`T6A^Wr-2T0qsq`)3mEVvLB)L*bp67?7U@T~se5!c<`K0|34g?=MyV`}Qe%FttjbqQd66u5|*@~q}kQ#K|1jjYiPL3r#^ zt>m@gnq_dl0r>D16qqap6#N%ax0mI-V#V;>V67q`9}QAbpU59kc_uUg+9L8!V$@Y$ zTnOYUgo>g=yBQ>ul@w*;ZKDw&RI$Nm#3YSKmGB)jfIJZzh8*ZT85f*V~<8a1d+GiGd?wE26+wM2F=gL3s%h zuS*yJKgolKmMTa_f8;)iC*asPX<<>pi^%oxBJw1DR&WfwOC+oUEKmzt03(S?g(-1p ziNS~#dbHVqtqJUQYA>e-eO(*^R0tSFwiq04%L~i?gF(jOVFFc+P>&IB)`-N^f?h3{ z({OZVaju~VwF4ariqS%9GZ*AoGRcn66kH)~3&D)~*#K_B3{j*bpFLe%$Eg^*k5)Uy zS2`**g~TBu{D^WCP%Ow$Qicp-Ga9T01QZ<;HOyRWwB)1hrU=0#vH?4m!-Qm%gd_+D z=Lr?d#6nhcz9~ber~5#lRtC0lBw^_E>MGD{cDp<-B)hmYtOh$=^MWS0SW*z6VBjji z1B+UXCZ6-U5XGYBfXlssTjOn;t(NqcLLZK4HHx>0?e*Qz^O5(LT z8tKzgQW`q{;o}mq|42$o*6YyuPpeN#Zb7G9KmRrN{9lthfUBJU^(kqo!u;!X$*FpX z|AKz5pZ}ZVM>qixFxM`YL(GfljC7RkYC|SfKe{hsNh{O3$p%Pf^BFb0HSs zYg|4*tuCyst)(c_P$UuL8wO*!mqii`7-2ViNK%>2j-%oKMq+M^8e>C}j5p}1V0pEl6=Ikmu>|KRxFrTu@_@QS+twdkeiB(Qb{xSy zJ~1}dh08;xmlb72IX~*izyn3emtktVn`OLe@P_9`f)r?x@=gIN%GFpO8efAm0agfn zTN&h8$%USW@dkxYk_ziP$fjU?4x!dHjyaTelyuq%W<DPMyPtrx)|0kuTq+Q?to8#y4!h*qVsjfhYZOysHq82S$c0teS zH?~4gEo)l51YIl4vzpefU0YvYKY#xGIdkSrnl!1duFmatmzS4Yt=8P!+yMgypiale z#&+)9xlNlksL8u%@v+Cww7(RMhw~`LOo$CA4(HGp# zhpSf%D!$0r9D_I9{$B4q*PM>4x*3LErq4X~#o|K)ekyGJj^~1R`QF_(-?eIehu*(g zFJx!0e6#CE^oH*ZL#X#kAFi_Av8eo&k9%+E`r+oJpGSYTEdSGlrJp~!=Y?PV`)WVT z@Splh<6B+$@)6&*FJ^De&gwVfku8SrUr#uEj-7qF{PB^SHk7Z~_u3Kn?dAEZ6&0;V zAOGj$J2yVxA%9?>(y_fh?sSQ|dC0rxn3=Qsce>z=>)55@k!3fWtG&n`+}Y!N@~agu zw5gn5vFX0-fZe}odYhD&r>%UX*T=`SulJi>w{)s*^VY31W_(}TMKT+xFgZ z?6y+2L#JJvhadQ2v2mzn^VmH%?mL@u=fhi9WOcH~dk^hyF>-G2g~MKc)KZ*#_gBx~ zyW{Q^QwMFWN;@{k(!O`+_S4c19Xb2PxlXsdS(9<^;q7tN^oBL94*pj1Zck(4wi;8_ zh~Lw1o^HNnfo0XL_Z&Z-xw7W7Q=?6F{z<8uZk;uFZ`bAK=ayE@SaGhTq!G?@k-oK}eaz8WhOl&YvxoPO- znK8YN&q#Z1&`#6t_gj9wX!N?9FK)f(gDdCW`umACIc>igx&1pgJ?8LFnFkBo)_u2a z$*Pn$UQhnVm|th@dwBb#f{kPQ-!Oc@#^Wl8mF9j)|2FaVqwYZDKAn>KTWXwyQWXd#{J#b-1}o$ zddGqqFdzD^1HDdUqL>YmW))|7#t`3hVsu1sbs#*bS5w_TTBUS3o%>fqVx ztc@L?S;bH(XGgp^?}@{mJMY?-xOV$2)4yB=W4r7=`mSf@#_qP+YYuAabf%>fH{I!( zRu-IjYkiN`7K}Tgx^##e)2@{%IQy3oM|b6P>*n71?4gnAE!*{EjUz_ZA2{8**MNxw z%Ri23HSOfm$;s+fi5qj{Ce!84-`%gSd!<#~l{@1)>&I6!-p}K`C+_UM=Ms}dpZ}as z?$G(J_$Th@=4)fPV^2cc)aA3jWQM*t?=JmQBg?wiY;HN>u=UonNAAjIe&*8leZBT~ zpL@%}{Y$>OZQ6{Xr%!CIfBMLgg%zitNXeJob=VI&L=I*aOHk4brV{iPqfm=PVk6nI5-|hkaMvg&D3W`^xc=Z$Hs0yw$QU-!nfPc z?LMfgnLYZY<3rpPr_cTH>I3(5-SIz1%DPh)4`lh?oVRz!q6L!@-|e_# z+3mTh=`SR&U9j@E*niYlPN+)l;?MeL`>jviQabnV!{fj1Vwv}qmY;iS;i7%?;Z8R` z@UC-Z`O}?lId9!y={Yxc;^^9C|Ca<(1Ue%|Ab~=U=hi@J--#0CG4qI#Kp)1%k|M0*c zu&FCfYb}$Bz#^ zR8_G0rtYn`ZTZHlqk3G~zhwRHGtXtM2)>oxarCfUqa#N%FD5VDed4jzJCElZzWnf&WOw`xPt{G~{SS^Y z|MdR2w7N7F`EjEYqH8GUXQl>m%sl(V!Fqt zt_irBQU3!yr-}DJ+9Z7v-2Z6x+UxRPbNpn2Q@D~sB$t_tv|dXWv%UZer(5)*OQMw7 z>U>LqH8(1R$!Lb})-)z0k|ca35t6Pm+W!syk8%Zft@%GGB{fZl_+PI}(|h*65kh#?=;qlb%JwD3acE6h#ain&bumDQ3FYUf(s~&+m0&2 z3P}|bZW_M)Q!X#fxxs6cpkT%mZ-|1n3{h8Nr6SUj%S_Yt~L(iRT^4Qnv!}{#rTCww=o5?zti2js z&G7+tuWPj^QhVa2=0<{ov6F8|?`_@)GYI=- zS)S*3K_Lr+xn0#P#OLA}h}9gR`JflR=z>2eE`hG(S@3d2*>RjPKfVTJ9VpY__M_|o zc>jX$zzBobb7&Ho196xIg7Q;n`UD4+aB=8$Fg%Wv2>wq|+ZlVnh2~iFZ0ZDOPGqQv z3oxka!656Wf_~ANmV#t(nOcso26tHCKngXAhA$aj1%-$-ffho_1LHE5Wq7{^sE-xC zQ$*6H5Nga%CLY?7t;poOxbN6=mJiX2s}50(ABkJz9Iy!6#^YO3&@SYhG|7Q}lLp#}8^5FwQtN`^0zP1D+i);?1 zWDp*>>?K3bc_~a){;{b29w50);IVOPH4rmux455-k5)Z_C0Y%Lm&VghH&Y2c7zS?I z{D_!oY&j!MFnr9xEkH8|&xj2f58_9L7af9umo#7>G?2J+sHSY}YFAt?960U;vB(kV zgCcj{!W8Ehn!yAI?yTKWmK9WYChPH4jYGUMp0)>h9&sF+UZw_(KJ*wUIFw8f;!MPs zK`LHMQOkIFE*Jpy$@Fx{h8nU7^cl z40^mIh!~_TgMBdQs$tyt(>VtREm5A-Fv$LH#d#-vJm$aWxE~ zFAzcrp@l49@SS}scPh4JV=QDFE7+E?WgBB`d3Cpv);`_Jw|AC>ITCscHIP6cgx*5v zy(H9xl28)9P($b>Kxhdi)PLT4GqbaMyLXaN@%R1c`+}vr-I+IU-n@DJxp`l(q9*YQ z@ij@fo`cWXMApQDw^*pq!!atSbl7$dDw3^fbs20-LN#t2gxWGT-C+S+0@lnP*04aC z;-%@P?&j=;df<}4Urk{Bz)-r4K7b1@26QxOSZmQ?i-A^(dZT(};A+hbJM2lkkQp*C z+=uGhK?gj>GcBu(vx0oRG4c9BR0Ad? z&O8LKIX2sP;)4zlfIH?&Hj9uF=7<5AIG{z`>fSUumNuki7hufQct>+ ztP$BxM~(?I96h+R^ak+tXiUSNhwTtXm`r2jxB*udzCr?&1Gq|?2DCsAxuJmS}HslfWUxPJI(Bv@dc=|neD^NB&Jb7Bho%E za>*MCwVODxnX&VoU6oS6r7&!gCOJ;vObI;G0x0(jKxX_XZ|V`Vva`~Uj+z4fs=3NJf~1eXHE3dws^1R68LC8a}01hL~2f^Hh0^W_?CWuo= zDX>~Oy2_Op-(!cxk=@xuwt$hNqap)x7LkgBKt7y(fcmN(}FLJekvEh_W(hBAuvt8hF2U~iQ zonVmG*q;udvkxS>tcmQBt1}3qxR2yq4%0egI+cs&?(a@ASoZK zS|&{rj*H+1=2#&*^r|h#nJ}2l<3#Ny;}Ml&f4F!;bKp|gKESU)Rg6fG8PFY-wUR6P z+y=iHlSdY7jK-{VA1*|P_%&2~AaEhm2}dv2YckcR2?ysJFcD}>p8~j-@{uOwqk;s^ zD{rWQ%y?V7N3a_^5f=1R9}^R-WQEe0P@D^`8PzqJwZoQ~wk;BBAr_m&5qSKoz_Ie1&`r?y1#g~NH6Gx3!KfBaq>clMi$5E57@Yo(}+37>nqy( z*ky#XLa>H7K{+}>IKO4H-Ij-nO_^78*?GwR6!`=D-U7i$}lP8N#i#~(aT(z$S^5|Unx$3xETFu1NcHm;~4eMBk$_o zE(o_~qH1TZOI|$fD8jN6Nq4tT0OgX5ky%lYFv$&X6&M$pv5Eres>!&wiip8@6R65Y zK4*7BS~4-IG%s(=524C5aj{vum;R!f-$0NArelF3MRjy@(j+4q9h1a&RrS& zh2$+@Br>nmW-y5t%k$&S@1(JSd3(N7=EK3fP`a7PrfB72)3zJQ6-?+#!HwG8!XE2pJ?o&uzj75ueg1H2O916Dl-au4>ArH)HID92nrEPBc~CwprHw^JPg&q2PHMY z*(ReC#)Ww|C4w0Ps?dn-*x7bO`4OU5(PRV0I#3A!24U`raVw4-6|W#g9ELnP*j2W3 zuxT32=n>Wm{^A?*TX_cI_9|$Bk9DMN10EEV$M0mO7J_;qFLsjLt4NQjaCHZHC4yY) zZkZr0F5jq3hrdy%azE>kAA;R2&m;}J>rEeC91Zz8T2Ev-d6U}&#Pu62f_`0FKq-Yk z)OHaoX+ju)6(DSGOqWVJPa-WM#O(W9SspNeQdsb--bs3r3(tLc;;7>kr|N zfP6z7VHl=u*0jcX^XE=0xE3({c-p+y=2?xc)40^FA@RGjhzkm5l6q8c77B`I6)b>I zhT!D|D{0cZ$P`8rPcJuEw_SncPfd`apcyqz8sM_Ro19;~hE6SsKn==(nh3WbSOC={(q`g_W+A50 z8RLJGeu~9p*l>&pu-X^;Ph{;coA(aM^yG6@)E!O;4qRiz5(#pkUUoQZuB+^zA+TJLZIDRxz-u)$RX?8Obw33cuYS1J3404X9DDO={+JLay+QQ8uJuIbQ zOR|&P$!*aAV8FR{u$7Cn6U6kSnFZUi;#Wg!T92mS57buZgU2?(!3#rhEZk_xkbR5R z5OjDHFE!3-h1*mppU`oU96P*D8<-mHyn}8)BMa9Jw{TjHuztYJ(*bR!u_6TuSx!!) z=8YCUEerucfGNipbxVGYip_V;sIEtfy@A$<*=BDA=>o(I*p(`tmKP-m;accU1(6Md z0!+R9TwozTbVR1{e4)By2obdcMfs`ITgmyWoNAFDLNf^#ohhhVYaV1|G;`nulCt}C zc)@xZA%127Ps``}bCTgLbzjLLikl>?b#Om*0NZ}OW32KIZ?N`@<^0Iq9UoC zohd%Cyoh2tQ+1PFf>?W*dKSbF8Ty;J{112~@snS%(5N$jhR~iH)8~RY4Yyg3WE06~ z;QOVQ3DT5tar1L|?5ie>)1ytvSGCw0Rh zy5^d?5X#~1(WF2xkS@b39AS8eW9(Y8P%CflC?JL6oLo^CvQ{B*Zq(AURFWr$#uf>K zUIYV?KavsCt5O(zf=mpp;b6evho6hg8F}LU)aBZTC0Edjxq?tc(T4*I0V7sU)}D-c z1QN1LGdP&&o;4{_MDTqEh*&W7jFqlT*9_@!D~1JyDurd-bG1P`BonSnI)E7)ZIH#+ zI{VsgN1tM6-hi%TrkSeXrbhur#9))yoj_`?9eb`xqvTUVD=_w~%KIpyoP8J+d~Ub(F5PeF87%j| zA`llx9F$c42khpTQ)!CY)QvVhBwUcu=&D9^dL5H+(MuWE(3tq_@m~l#4N@Rn75>Xh zwau_)ES|jt?<@B2MDH_5GVmW!FH_V<-dp#0?b_n0$m|%q_Sh&f+^gv=a~C$wof`Al z52C)|Jz}r#J5fs#d(rX-Jl84UP2%6Zt;Lb?V9QA2YAvVB|O@&dZcpf|eaB{dSu$&N8zmzDA|Zj_eSlS)sRDU5F8&N5Ep+&jvH zYw(KXYBO-$Aet5)9Cl&mf=B~QT%t@?1Rjcp(k)EUmJ!d6FG)k{utDVI8B5b5izE{i z9!886#T_RfKSUOi%+7!;G=LUB(WTI8nUQ~vsii4sNC|Y7(MfM)xWZsiJ(bUjI(|^Z z5A1sE{y7BwJ79Hb^)OcQeiggX-3I04&sUi@C<|p6E*oR<%q5FwE%_S!wk8#s8JorU z28Vkdu4xt# zN(}{_ODszA1Zsh5{F;KU4rvbMIF)L@j2=u<<^i@aQ%`Hwzz`dBZonXE0~K(|Ymsd< zsU`_e{FLy>7l$l|hiw&eCU5YTEb*&Gjfiv);a-8z0~wm;3CO^yDuYAj#D@&^Rmns) zEKH8ax($L}8Kgz(LH?Ki>yO1l;*CoYj3&3}^_n794W(}$X2t{5s(5f3&czE2MjQhg zn4=*q%66g(VQ{l1WOwpjv&hyivl%p=&7ga;8E6V$_JXh#FJ$`#W+Wa%S2536<+@uG z52Nbh2TM`A0nRknH6bb8wH`st2Cos^7gYo6z{%*3tdr3;?BF(G0@r*kU)6BkDYE5b zWD87FMay%I=ZfW6Rc(kM+9=$cgDL|_JdcR)e43HxJH>`h-!o`CP5FJLUpWYvJou5o z?>v+HzVl41X&U5rb*Rn*wp~106O}Xsp`sTySx~Fj{$E0)a`M<0Jy5F(SYbrG;JYQX zMji+hiolk+qMBw*Z{@`^ed*l6ugiSL(w+)TQ7oPQKv|4j*3koG9ekjP z31J3>-%!*EJvdmoj;dr@dPT7^%ZY{JI}DLRd@VgMwTcii0vI7hp8aLZ=22E%v+GDA z7=htVHF8F5^k~vgpmYb5Co$ZSflc9Il#)ZibQGS8;d3&e&QW8C44%TL$#?Mv1@Vau zNO6{q9uZ-?35fcrje=E{0c2!MJMW}{)4#svrJm^FlAYa z1+#OS*cuvp0Dt?{;zo2a?cdBsna(|}Wwy)(Y@9m_%hsm3S$-Cjj-6v5r>9NPB5wY$ z$PveLS5uj&Tn+YcUdbTixosdOl{Y8>Rj=4j2nuMXPkMnxR-&uiA%f)}^QNi4C*&W{ zqC@^p$dP~3V&=JOhD_3A0-4l0;WiVVq>T4+l&f)lonldJy&AcPAv)L2WXw)R_ZTP5 zh|^5vdyurz=Pga15aU4Fspe)LQF4b2o#TU&%10wf`97vZx4t+%QTWKWM*Td@{__A!GL>P8Q&g4+J2ORv!cGl$j7WdWjq(G_F zwD<9pcgXc1@kV&ZBTQXlvO;k#k`tmFs)&+ad6)`fkzKd|^TcaV=w*LWlmU3lHBW^J zwgNyb5&?LuIzik6kq}-dF^I=t_bQo|5@Pl(4(A%>a08HB0-^yxz)P7G%G*}1=;4m6 zX)5ZJ%0NAz!E+jkedttX0xFL#lR+xNa046IZnCE=h@%pLQ5-4}z7NyJcv>uNAw^xe zsb83AO_^GnVj$qU3r|8>sFKrvaw zvu{AICGAg1z)745*1DF0hf=Q8iev7-W0^_ll8%&qPD-M92y~CaNq*v}&ZUpbICTheHuj zU3h_Sst@q@W15=0k35)dl9lyj9Y9bt3Qh9vaWIu>P{h1)Vq7VaG*(tfEGO)ho}Cv$ z5)XR|A@Ou$8O0Qq(Tr(A4wLD55IrPaVa|JpndUso;5B8;lrV})t2u_jGMF_8bd=l( zL^mXRA&x0&3<#F&S=(cQyrN# z5*(f~&qQsA)?)BDBCciGvL^a&^k|TO_XTS;RW_kYJthR45_LM1zLPV1Al?8nOLQZ( z+&~eZi(W$Z;pxU``*XA3N5lRCnpRQyBNQl|wB5_o>ap01$FC#a(9|~=OG>U_dJDP` z+j&hD5rz%cAGl@E`(weHMP@2cIOO2!Q=s3~8g|oSDzBQH59pqfVIMea*lj!8?!{Yx z=c6%vOVN(IsA=4GG|?%ZCOJU_444(|Oj1ihdU481f(r$Vc4*@@7`u?OGcwPyg^r3? zZPiS`Ym38w5;6VYbjk*^xYf2MRS_>lM^(~!fQP489neKYi&%@Rm#{|`$Ju`?D=Xnw z_VAJ@f0jQs1zQwEtVxWNCs$9Zf`8bf_-EYvXM+DpgW*SPK>AROileFG09Fx@9L_xp zyj(-BOGw=&w;@8+8kA#FI+wsiMgm6$U$j0}&+y+O_)$WB#D0qqitv*-!&7xM5J`j* zc#3`*!^UF2CB#Pw{D>_W|HcOZtm7WhatE`wAk zrP8>~p;G6*J~km#*uz9dDi0>}>2bTe`jFqKPF6ZSOo#@#m1k0s?-tLGxY2s@IZCv| zay0I}2f}WI$*Y~*TO7p*fwbM}pNAvFRd;w210ULx1g5Ex3V0D9LK#P(i4d!<3@g{{ zR%^gblYxCP$w7*qjPV3wNRTJjHsp+h)3TeaNEYd#hK?+ra`aJa=rrjJG1V!rM7%J7 zn3%=u!9dahq-e0|*+I*5dlRLz29Zn14Ti;-a2jCUzFHF~J{lR474dPdcf<98Nsinh zLrV3$Jzf9B1YLCpo||fF-t2Mr97KS-LoN#kICG7;mB-Y z{QsiAwXYk#48Tk&_`)jiP@$a+K{WK5lpDXTWQuptMscoD4aYbR|4FzB1mLXi1*F?6 zxRilK_XKZ1tt98(_25xLPGU=r2+S=4fknKop2O=`;#EYoXOc`)1N)Df;GHw61dT}a zb09y==w$Kf$T3M0jt^@&a!L}D;9ULBa1Q$z8SnWw|Py&cGo*(Aq45k1_ zmMxQvX!K~jP#6?Z;jimL?HNi5Qq@fCj(i9>wlut-xH}Cp=6QX|hzqp5rjXsZB^NLu z7BUv|4i;7;gV+-Z&8C2LA7-@tXbWwJr>}b-vm13Uk|FJBx0HwXpi$Tfi`9wL*!^LA%VsA!IWsP1az2sCzwRt8}nNxUoLP8xFYcXfs^|C0l z!T!KnsH!tra|cvXO-c`Z9Kz4)sWxefq+^8#OGryFaP5^sh2WK`}$DPqoO!dI$^9C=}8DWnXZqh6G( zC(3(iO==RZtN3GRPy-jkj1tB9&@G__?yzuc$TQ~F@kB2y2!{IXpu$bOG^HN#q}PKU zjHe#NpV=ZjxhHFsJKoPG7fTJic zSE@}xDG-fLb+LFNmKaw+>9C?k@QO-;wM(25VU$8nwJ>%X~UPhAXpFDhSbWY=i|CrVy_pk(8ubynUUp?m5=~aQglh7l8YBTSQ>60E$%gy5ci zCOEWH;1Kf!chOc)6vE%2N2UG#qVg~8kHXSDQZVJ02 zU_h`LkVNC;J3CDWy%RjF9g4$v%Iu*C+`vUbI#?JfkWOnP50O8fU1Am%T4E#$7OE86 z3@kae&`lBW^qe5mgC<#yD2rh6YPQ_%#deQ6P8e8K8ta4LS>WqNmlzedP{L6}1OWaX z{OJ@hI89pp=Nk z2B@B>TlyruZlXSRtQFOTj;74A*jmD#lloH8XktQSRDm-_h0cVtE~ihL}!wU#X-hhST2zU_=?wF!nCRDhS)FMuTj2Tex{0PO)h`&KtXd&T& z_K|55B!`Re6JM7aw6^RFK{_Ac+9lv|@(+!lU3Enb0F1UJU zW3`0^edO|}R;?jK15I9L#9W;ms6gU%U*e~%gsm2(GqkS0_Na^V`;lOscn|(HSVluV2 z#}tlxEoCS3vflbc9!iJZP{>Iyl)O?LH>N@PST}J8sI!vk>7A8HMx1%jxVmz=o`$Nb zWJQOuvXXsYWn}w$a@i_&X|kc&xDYS^9wesdG#*eGw8)Lpkr^S8!fPA1tE89trmgTy zEN^3xbtAk3^bFNe!aK)Vp^@e)QyW06P%g!wS9pmh&_}qW(~T8$JB(xw)D43ttzi)x zAq(>ozho^yKL{V18gQV{gvJ+9&#v2q;t!UCp?%zrk0yVSr=;sM(EJWrbX+smJdz9s zl|Zzt&SX6^U8zrTYeL9a^FoYA$6*7aqyfQ=8k`}7n)qPO^o68QJ_xq~@XQ-tNm#=j zkcG_Lek;Z0GGm?+n~kl_(`L7_4`l^VvYs6{qjCPc*5(CJ?v-l7aup5&^Nef-H&ej$ zYQ>)zEyCy%2_NXehwTDmCf2e>JwQqhZiH#KY495ErpB9Z!J^R)(_=eWE}K&X)~sW^ zH%TIDJLI0&8B<6ZOu5MSfV{*uhyqoG&$h__=GZiW8%`?}16jjaI&P%{RK_kcF*=*8 zU~`eFmXTdH%fNz*gKH*E7duLtx0VDx%?t5CB!-#w^bwG?Xn6pv7G7(Y@1)3V^3bjn z=(&qhBP?}LIzKwPoCZ;k6}N;bT((VVp1hVRaGf#gw4LnAb{y>NQqOT*zP zMAw%uR0@FP?7)Q%ZXD^!bjS^r5+l-n(>CWg9H1G%;RXAMzwQ$!Yu~4wu6>`nRPFzQ z<5i6l{@cM-(x{30LH|HFzc4@U&Ct`xHTdFt1G?BR=#SB0M&c z(4n*l9ztImlfZ;Stg3>czN>R|hG5C;@C%a>#8|sh3Ne4Wk~stPTkS$};{dLL&K+)O zSuX)qG^X*$D9olH5|B00Tr-8N0gP1Nj$z`J0Z1P~s8MSAo$ z{)BpY1=V>LQZ}_co z498VlruG_Hwvuk$V`KGhfkpxm7CU9ML$T#NkdT@RiZTvK2AnVUL+q20(Xfnpw$sjG zJS&#lgHzzxNwRM7At5P%>^J0QR(R4X+v4sCPd;`8J}-F!eCgW@B~aKAWHq-L@vwR% zXx=FYWE{#FqK=Yg%F1_>34!;OjQN}9pv2Bw$cD(&dbv31azb^;$UbR0<}K6Az*?EN zNxk9Wag(gcO2ith$^r!^*(HTVhyLu$T4o1PZkH${l7Yj=d$=0F;9hy{e&%ifl z@fr-%Av0aZmMGoZK=`Gy%u+}t%eODz9gFl+(h$4g(AtYSsFG($2Z<^Vh-N;9?t4qa z#5a)?z~5x&c&d%QQ(HN+1S1FsipYu{M+u5+<0g@dSFBcxNl+~TF_WjsAev7y!u;nh z3+x&>rRf0Fs3o~a(OnEjSMM1Q{yBJBJ48Q12vgSV1~WR7DX27Gr5FTtNeEXIfW-7v-XzhtgKKTl;k3%iV!R(`b7qEp zVDl2G(m1KJ^K51vjs3^MtWRS3WV(gYeoCQKjw>dXL%vhHEzINm(8si#ZC6Gax26DI zDqF{+8kP09CtY6oxn6e#IY~?cu`xuDN|ACb-Xt(4;}fXpYdcnZmHMA-R@TAI+b|4z z+@vEK-9rGkCbQ`PP)-qCzT%K$uR#(8K}m33RPZ`FbTOe)Rs`nKAa?Cc_Z6LE$7VMM z2CpJDIFb^u_BA?FNVOI;$#1f}!_CRO?=$&c>M6TUWFGb0;tCmI3@!sM zhfze+MJGdw1Bq!$QkJ1~Zj?n*JWS4YEh%+VH0h4!O~IsAf#MgV1*JKsCXK|^I4Z;fA~H@wYwwf69wG%W13e`> zO}R`(NakTWa9w%MLQKQTE8MrvSU&c@E~z5g3OzWN`u;z2F|Qo8;J{9dVFJh z{f{P4XPCU#47(rGXY%xX`DfD1ICNn&**$$(h~4p(0P&2VO<}5ChTD&lJ^xqE%Kyb5 z-}$GmT3|)1NDR;UPbBK=YM}m4O?6#uqPiwggY|zBb>E!-;rJ0z^X|sSgdYR#65zLo zPj%jQU9YW-*N`YfufSCyB6%q2UG$To&`a?i(pXGSRO|B?pD;0AEm0k>foNS_clnAQ zX^OHhs%!LF1{1h!eLDNtF7c4#Fv%_tEkYd(va)h{N)KrTN3or@JNqhmwbMCfw%a0a z5reT4t6QYp=!6WWIOmv*0wXZM+nG$(&4l$H3uEzUkesqoS%ZUG#R%v!ykt5LoCQUO z&r3sy@7X^J46FRNd1{F%@Sx5T3 zaTr0PXglC$0`OVqne-V`kV645UKH^W{Al(T_3-VuSR1K^Gy+6J3uCC-BNx5=tK5<< z)3c_j&l4)zbcn>JiWi#JJbQXe#nk4x74xPwwKliR)~A9m)$Rd(Qk&P>IJdPzJ~C}~ z>)b`!7&@>G6m7!J-DY?|K?NV}uyX`xsnn*;p6Y*5`++vyf+$**N9ePe+|b|`9Q4`d z>Rf|ge$eM+%~cIyVuU`wrvYUNjWHIl7%|58!=&y_7o$|M-lj{SYM7bHH)!ma`r3+i z>~`h0Qqd>HCpQFSLAdQ_Ajeb&q*Ruz0AKnil7=8+y{;x222P>~oJ2~WHK$qVUzMJL z>L-K@)DSQ^e+-*pH;cTWL0XYs4}cV>ga+XkmjhN^y@{I+D&2uiHV zN(G`s=s@+w1BrfT6jL)*iK&@7y>+l~RG$cjDCm>`YADE_6Q*Y%B87CPjV_{wl9QJj zXu<>p&#!IBSgN`{;Zw)+ zK~x(sP{UeqBw}q;gvWDZ1+5N6Bs^z|^QG158LZR6R}}zEVjZ}0$0dTH3q*UMj50`o zB;o)_c;d7Npx_k2LA^Jc#*Qt0la=Q}#HMkeMA?Ca@E}XKs0_AF4pdWipn%MiN;yzM z4pcjNo#2Z#H5{V;@I`^6mW(+>;#HhZD>VD)$L3?FTG2Y#@v1Z9C&+=yZ+^*3Q9#rm z3hn;kM3Y?8**648|w#}=7_>Xl>q})%YnY$8A&AgK>a~eKhB8Jo$kll8j~V8 zM!2>8x)u!750LhwAS_w_6+DIDC>*Ry2p5G;cpmO$hg0|v!$SPk3roY=C?4ah#XwMO zuFPhY+Nru)&p@RKaj3B~&I3zne&0-OHn=SftW0?)XLpMZg@bf6Pf#E#N6P)#uXLK% zvXPMk0ee@E_|=7 zFd<~1pq(pekBjqx+(J3wN6g=$O0}U(s3{&OQD&fu;uc|pMa|=jp$R=?z5+!`L4rZ% zg)TG=rLMoCqD7VdfhZ@s3^Q!%OQyjEp2x(y$^do69jGKT^za`Z$TCQRSben@j+%bM zF;sjo?m=2XIoqm_c<0G72Qzr&VwG@-4eo7&Y#>Q&AbitGaSP6N)PWk-g;R=3 zSy|K1FgacHFpz@ClPo}rKe+<^r9F^FGuQ@cQoaKK3u3m#nZk&@p;9nwLqMzT?=}wg z<^>tKOUYB?Y_JY43aKeE4RHyjvZx1v!@_e*z@k#=u<_hbcpBCXp6llo!Fx9noFyEzhJl^r zl>Zb2uW|TKaw)(RVjTurO_V`Y!$@&MM0WAU2Yg0F)H2-;E@aSlXB8A_@~P}T_* zg{Ydrvo5PBYQBFdn{;r^gF&?nnmhom3?U7D#2npa5}eY+Gz==!gt!9F*KzSt$TO81 z{aOkInWh5rP=hwFlx;d*7cx-8uoGczwGR|v4`3t?0;#;coyzZ&Wr}DwYJ#Fd25%oZ zxM8;O2?{Xf*y3=6*;4c$2dG@U6keu+RcAe{de8(#6`tCD!=uC%i76lN=Up_y-J4T%M9eliw7bVITOm!^DxC*ku$!ur*Jqg zjCw>;ac7@EZd9(J(4bzb0Wc-{1=B1~x1ynjDTpsgkED2hXfm6Mpb2sNm54S-R4W5j zKqW6M=*~Mb`$%*M9ljJ=(vhXEpM9k-!{If^kZVPP)-cj1c0Arfo#V#!&(u3)aUF!0 zPPm=QW*rQDG*E3IG$B&Va3xdv!3mLJe94aiC*40#i10Ctd23#X)+*|g#Jesd-66`y z^WNVSmydz(>R%B2 zFyVT})aiBofTmPPzyu_r8IU=jvy4o?uCJjWWxgN*$GRc%lF6pa?#1%YY1{5;ST}5< z0;C=zYjm5T5l=&J6K(Ea;KmU95bNSDEM={t!(kMaxar5~9Dbu{Euu?ylq|h{Loabq zB99AB$sHW>aA=Z$Txd#KZyGaDZjj1{WKDbn6V;%y3uC!$jp=mGW>V~+Mx?p0m9*rP zGUL>a_YPE78s$T2eW|baf>K`=6tNsnn~=f6uo+uhTTsF~P)T!8DO-?#ppxdG z;kp=WJx8`-#BD)!oSt2kaik;lbxzjoZcdxVDk^&$CJZ+#k70q>p0t&dZ8itT7C>yx zvD=bu?d+-p4jRh%r>%zey&Ra8c_Wq0Lwm9wkwiHJ7W{Dm;DucT!(qXv@N^GA{fOfq zTC3R#28SNWCbH3zclIy{IDU9aa)4P-3U;VC5s7~6_Z7TSG}wv4&@+=i24vkVy5ESH zRBBl?IK&eKR2YutV}k>R8nS&r4_E`v-eAIm+cmR!-kkmfQk2an#*R4c22+-krP#>u zRJHH|6S}^cp2vbLRkNDs%+u%0TZc-ubhB$RWhF&{=kAd84RJOw1)0G<_9OUZ2o3FI zJ!Ww9E4zMpk{3ATFx)_k(LB_`4$o>I@>_yJSBs$uyhqC?Hx~~Ss0)=(ZuSq0xir=H4NHUJZQ_tm4YY4NHrno ztcF>tN*SrfCjthVP-63jJQ0Cvx%t^pbudW7Z-Ngzb@323Ipp5NL=ZoUhw#Q=7yXb# zoYfV9)i8oqMxLrjmA|OIIjHI((Qq^DUa0TQD4U*wqUrM;bDu%IW?Op9%&a+Og+>Aa z8=mF*DoYJi#(Op#wu-n5Pg%ipBIkBAx#*3%FfrOCf3)OCWh53TNUx&&c)W?NjL!2Rs9Xv)rMt+?ObV zCYhjn4FGXf}+#YXzcG5o^O1u;$&kkxqq* z6Ln`3$$m9>DB-Fl%PS64z8*xerab83oOHb+JT+gdd4YnV+J2Q#8`^w}dJfIH*8zb6 zRR!rSAze#6sYyjOvIjE8 zWZ3#v^aGS(v4oMeH>*Yil#Hzy%D4g2IX$p6lq8vvDEyRFVmM0hlcA0FP%y}?_`x>mb* ztP*{ziO?Nm6&xmTa$yJzqmdN>C$KTe2nCNF6U231C9jduIyx$b!pa#8SkYlD6#!mp zprWIrzTba{0?@zE&ZhAA(})%G=rsxq9#jl<8CmJHF2|#Soyksf&@c_?#M(S)%im-Q8|wgewcs%;QN1 zHPX%pOd>RLyIdTpXP|H_4MQAh?F1K|vL$MV&;w0@l@gA!b(V*8x7AH5TbZ`MyY2MP z?NmxaaQlmu+^ACKUg~Y743sD>01qjisp^;lOih2f01j22^aLL;wfzC6RXp$bLIah7 z>ed<6l{`=qw9*tQm*!Pj2Myo2`E)Usy(mgmP^1J?t_+pC)`wq%5`dKv6Uu8)VxTgY zdwC6t1}cm5Vbh=po){$Xx2Mf+2ZMft3IPvkaF_=ar_afm-4(qdk|GbqZ0?3&G9S+; zmukR3!(YZ8O7m+!&>;M%0p;nMN-NW0$8>$R4e-pg+OtNsj~%R(xjKdsG^-k*0)5i# z$;nUW_cZ9Oc8{jTYrSu1V|+iFw%(?TE%<7^O_xB@x0%T|XwY`F&2St$X&E^))liOf z^?8ifFjP!i4cM(BBoD>;r0Aliwy7=i_nkRy#0$Jp)SCcj9k2pW2>=05TT{!dIWwmn zSgLHpFycpm(=gKbNw#&g_1ISF&b*Sg(KBQvhn~18<;eqF+0gRgJ$N42!Y?%u7zn-w zFc2_tgeQm$dSGWwG0sLZZk<$V1)LF0Hlu9(rZ!l2+uX$5w*8xDPaQer)NpPveP&Bz zS%2E_F((A43~w4Xa2V<2Gwk$~LC>(WraF$R`LpM=&TSa!t)q?|O>NDyTl?9gXGp;z z#*N^VH=GWq7{CBx+tt?EurA;y*;byeN9@*ZYMa?Id%v=R-0*QF1)Ol+G<@KcKlQ^* z+Vh$Zn%34j;+%-6CxxDmlk8B)Ax^~;x{stcWp)a{s8w^hHmX+*rq7KBwkT%iCC1_#8sJ`l< za0O`o!=x_;K@*_s4||wgZ76gB8h^Qj0YO+Zu>Si z?Z2>b?$nZzFyReT;{gMOwhtJt^vnrGK#gSiI?=!tb}^YYjZD6$gjI-&`SMJ9K}nw4 zit0cm6io8|DP?Pe7-)X$(6R3l%nW*mk~{!Hm`MV%c8dC*>mOx+h2#PwN?-~i4bsxFb;`Ay^4Wp z7^s?3@9vgrObR}$!*MPWwIKinoz})xwv`g0XHyvuWB2Kb!Hx9_fF$UcmLg={F}`00 zyJ4xlTI~|gjB@UbVW`1ORx$xk83XIER6LHmXPup{=2?xcB_cnX`q+ib_AL)5A+Yj> zZ=kSyr_?!31Pv5+UkpP~78RxPz%!x(**NzWrRt{}Fgxf?$^uXn8k0K=tsll0gA8FiSrkfNDmh2@+-a_0N?y3}<3OAUJKo{m6%!bZX*Zz%;BwxCyR` zHbS@wuB%N{ZdFL*ct{* zR~>1)r*z`+aM^!Va7rZW4VMm$kTk5dg*!$zJXgZJU6LNhyLVeh)-0F6Ucx=ESWjr6 z#7I~2PSklI8u6mp)h=PrXiCg2SIBMXeE@YHcpA$30EV`3uFGL5B$cP?w!wYrzwt*( zqzQ_;_3mS-3}oeYEgQZ&)EUS{Yg&ioZROf88=X8rg!^f#VXy{LB<`<2P{Xj@+Dc4f z06adqc9^AFC8#YFwuXW3o)V-U%z#Tp4k=D1??6F!-B1^4QMb+mOpxJv*gA~V1On9% zB9{z#NR(n%u;Z_uo<}nxILHqp z{JEtn(KIsZ>+Z?gP)RgvVkcun6=RS<`E6`7b2eMmpc1ARwnVAWn=rzx2^c8!01j`A z6NhJn?JUZ{?XlY0v$l~+8cwjfm-(7N*(D>;}=Nfiw_2$qK6K!t#^WeM*Olh~MyPhOVnA?#3A_ADp{FirpfEu>k-}k2%1f^- zby8uVb)aeLcn?q@l&9N3=WPhteC#DVRb{Y)9R?Dw4*{tyo(eo5!DM4coT1#7N;NeA@sd9~&6rl%N(2lv^cNKQ`~pD=DDyB38nMrw?E=&iP~c;&klhkcnq!2K-4als zV+4@hI=6B5yg4oNf=Rm+vd1M#4HRfJ7$%u;d^li5C?8^_EKwf@O8{-J9kv5#d)>fx z0EG`9wr97rwKmV1HnVwFbL+q>Y)o)#e#~iXZJt)L(EG@_*d=VCF7_FAuRaUZe{P|N z{LxgP#ir%y;-};iShA81C_6dL*b@F6*e@X2%;db%vvoiv?BHh?OCvC14XRi zE!^P&C@~nAPL#v+kP?wnqEa#1gy4F}t2y|%qJ(Bp5M8s*AvzgWjlnJAt1M2~S|$Vz z6nym8ZlIuJHeBhCb-_Rdo|3g$UCm$&6kK_w%s@dj8C<7C*F$J=C@`+n#`1L^7$7}` ztZ&_;C$f_c(&_>UbL4lgCU||rSB<9#n#5pWyJp?Oc4t1DudfY}1&1- z7z!&EG?0NpT{a$O#CT^^B&GFL_h# zfoG&k-ni-l9P<@yq2U-BuFl;)a6-EfjZCAfcrlD4Bwf_G)tu%|W0O=@m!R%pAnlp} zcoGAH#~FO)$U!O7>_RtJnVBj(m7?8>ByGl1%qsYgTW7+F4u0D%0xv$oJ2&1B&pL&! zS|4G>N1D)U{qU??)aBdF_y|*1ZNd-Fx?1*^M)s_nSQ}yyh^fPt%63t3zEP2$&E7e5hMYDCb52 zCM05T=(`pq#ubATdXUSP(ZYciHqV>dGOMj+_RK|V5eG?pSdAJj!B~bl@RWl7VBme( zwpeDil$By=i=HP0Buy=|X0gZ_8jdaW?9X17=QZb_?H*JDvpwbu`O0PO4pO&}RNuyod=lL5{ z<6(J=2L1>bKp^45$ke9RK@&YFBd@%;k%xHFY*sl8K*e1y)8&8vp_ag^AVL6ejuS8PmXw)>bCJIq2+$ zMifp%1N%bphT`9pBPc~8{7eP~c|Z0FPxw&@-3-5{%q;q~%g6~#vW4|wKp1-i9-Lw_ z7!h)YbiLwh{AjfILCcS+YmXI?hi{XoI3}(ma41b|NkCOmXt@ENw4@g<-EdSYfJfP2I)S09<19`r zndl{nDGZzx8%ljj(`GP=jnSSWEQ_m`6m&C9HUI#@!7nkeugAzzd2HqJ_>zKF{J7O^ zbXplkVE9fYP&~t4hGArtneL0}R)^ll2(-&sWil)@A@5^*lGP(lKH0@q$%pSuCJRwE zqLI^_d=Ic$8oz161P0P7LOG|v#@X|l*-#GS#3>`2is1}Nriilr(wjy*ddBS42n1cA z6>%Nu?XuXUj4QVz%oXr0dk#>FYB`K9P;Io^t4t;rHD_>XRx+P9vT{KLwR<@EJnVQD z_?c-p8HJbyjh>XJw}5+)2_y&x7*R|L$fDgucxWM-XCbgPV$tjzT0ME-@QjVnGHj;n z;+_~;_Gh=rfY%~sWoIRyb+x{?-lvbzBQ;}d$23P7NWJWO6FbcSf$`~&z5?7PS`f7E zL(K>}04w%Hclx^9?KB<|_POSgNj_ucqKsgZM5AnfnZVdIb}S`RJdBbCjuGnqQP)fNI z9N(?%Y!~R^B)cln&bo>pQRNWBMz{!8jw{eD$Ow^nCcFhp*QVr|)Ul>3m+NV$s_O0S zt+ad0Oofw6RodCks^z(4yvj)?5>*TLOT$QW5=>sL%EW8NkFV@Wb!hng zZ1}TK8PyqA&#^15vrEs|Ibt9Du-Y9RRubeHxkZLU-?2-mm(eF_6}-ylET(jRb;U zi-zWW#t2j@<35vyzo#^*O?A*N+brw0Irdr6N>=~)fupqZe; zrQ@4TOp>y@dBNjCv=XTR?iEG}4&!68svzzqT+tR|P1Yd{uJ$~W!*l!-ZKfiK(VDB& z^%DJArZZ8ugkT&d78y4eo+?>7&}6)(@_n+Ft-wtLMi zqiB<8f=SW1*HhSVJ#@v0ZIz#Nv=KJs2Wj>J@L5hx?6*K-is|aES89=mv<~)DZGLj7S*8XI%-7 z9hWLLK^J4Ey#~mZ0aJA|m5<#Bz*(WJNH;_>((d3Tn(?gwXqvwQ7blkl8J9Oey-CLy zqvzKQ97+=s<=8aS~&nQ4S zA$Xf}Ek32U_i_2a!>?RfmYr&?CQ*Srg*z2ikFS@=>OTY0B>&+OMU2j}vf2E+uVjiF z0L}!FF4Ey5KsbC?takBTL0*39Y822dkf2TY94I9a7g?**&ag9(gGP$d91+D80JQE& zUD;O9*c_Rh)nRcG3%HU3?jgObw&%HoibhbhCvYz6W0aOW5vuvAXP6|4U&`*P5qh>K z>es0{6rG9&@qPv`qcX`>4;w6zLV`oPiBbY#B8i3##*GQ-G#uVsLeOS|0Vi3VG<&4v zVfN{rd3IJaAfQSKl!*uVEJ(trezId}x0`*A2B!@;A4pzq$0NoKVaEtAXh!JJ=EKuQ zy364jB{+N80s&$P6ng7GHwqC{ww*H@kk5`C8`GDg!O8Kd zn;!I#u#1){U|S%D48pJ8@sWh_m@f26a)ZGD-;(Kz2n zdIrOWiMl#`r*d1!p<<#1lilndV`bj-oYN@TJz<0-R3#+lZf8ucfNP*6GsQxOQBdlY ztXOqe_zo{$3lknZrcD?_YxJ1X2sn1ob4+eV>S3diaR!hfSv72Uk{k;NmPAF2+vJ6u z$QS1b-O0-Ig2cY7IS!q@x=!S-`QDC77B-wTF!ZXQLJ?c^+mJ9D+=q&j?>>myl&4J$@#2qK^q$ZK{VQcYw4^rOC~xq?#>1<_%JLjr<}f@kwjARI5(}yF)#Kn9!+NHrrht08YHl}?z zc>PO(lTE$Ku+m^V6K9_r^E7sHI;_roR@66bCW~9IK|I@C8m;-!~49mViZ4;#;?zWRervWK91fFx=Fc5WzlKa9R)U?J9bjY$1 zUH6;%1UuV?IDha&4>E4DJLvfgw|+Bym^%WvKM{_mkpo*fqK6Z-j$&U1%+i1|Bn|wG z3yrY2F1r_nE&xtIvA^Qlh(Z2#m3V_4Hi9EYNCRGhMh)_40`44l*U6%R+pcn8qmwaa z@39k0)>F1g+(p?|+6tPL!$>wccImDH3gMxZY>X9-B61S{Lb+a=){rc%9C;Ku z*M>`y_LY4ASEP}_V>OX6w zYNC`#@qh{wSr0=5T>b!I(ny)mkeYo4CKN}D(D`O(0=|cXhg$-Oiw28^Oq1ww0%4Bn zMWJ{?gELZ0;1Yi@F6;i$(QTAmD^90r`yplxuMi3MBz?ffmlkg}e8D5#bsGg@Ka61- zNjP=+jHCo|7QtV>a0ua^V5kANg4L7ey)hlSygI;TD!%HgV2=yC3u%O_?DQ&EB>;#= zJ1+kt$&_92ImR19VNeE)AR6iE<^Jy z1DqS#JXdWa(s1p?*7RA8p7lC-WHlxbXYJL)!J^bb$ARC{>}B${q>XH+nt(P@C$*w8Pb>mZ0t5jD z8_(z(h9)ZxoBq51(2Ejqe%yi{A*X11^UP`b7}C<(z!~MS^_F>^J)2~^%xxh~`KL=9 zJ@;kr7s}_P3J|Pthb~*juv35%*Wd;ZJ{#;f9O`rIa4}pJI6!>bIlZM&3+*68#)tXG`l;)-*OCKZtyTjh74Cs{rq7*ZRH)k z$uJ!w8?7uf&}OGPGHZNL6*R8@1J&@erRe<~XbNEp6qsB{MUx|mwt23~T+roUN-!x% zVZ_(S?93)zvTNc1vo!qOsICquhIc)6E^Drz!DNLd^;0g*8r?3 z0+9YqtYd&8l#Cu%#B{p!;O{Y+@L9eVh$Y|)zgrb*4EZ7v_C-y|7i1)tQTnUN;#h)c0v=$Ko%B2PFf2{>H zLm6f!v`K^XBT|@z2Iw{Dqt5IGcksAV9DrcpMm!itgvWvUDkDslcQue3@v`@tWWg51 zq+i3y@klx*0y;!42Db`I6NA=aW!ZB$UxZ20mdDBrDM*?yGXoDJYzaA?$tN?V{Eb5- z*<+-8bDV&A&=(DgSG3wXDCXW6N}M-ag4c#ib87~KiBzZnz|3GuAP_)lZZ}m3rIAVo z2ZGa*!cN#e@z@TYR-${Xo8q#hM}?;zWHA%eEZ0SWw-qq%d^>o4;rT`(f`^8q@t8t( znq{mm{2?}8A!FDUsX9>f+9A??Lxyx3Yz+Fa(OXKkelYL@!ZKzj1z&Tm1Jo3<#q&Ex z3$CeMhzaush4)%Q)Lpg=U>!Z0n+$jy7(4W!tD|suwS+n2f}csKI&5Zfb!8<%umn6Cj*iMDQ$E1qjphmiqASVh5v8CJ zE-5KHuRyQVbw^b6Y0Cch*pB7ddrenplBpMYM=pW5Z`SUuz?faFxa?9Qw?z340;<_xm6essX9BO48qs(03RF=L z9>b+mnhDtRfp6v*XV0Y25da96mNq~(d!Yl&=S(~`a$Rc@OAWndX}eyxG^vkUn$qL( zrO-rlX-6T(Blq~zId;fKg+4usKMhY!>B@DdwZtUGeI^@|s^A~J2LEd3f7Rh%N&eS3 z{3}I&$=f_0$B#|^P@G2Spg;L+I1x`Yz}1*zJCGTf7G6a3VKqf9;_vZ-)GxTliAnVA zhybGlnlQ5MR!(F$;rE0WN)Bc@FU zEs*FC8A_nQ11=tuU~H(O_?WSu;0drNexKh~Ad+)82 z<;BZG!TtyevshO_(mCRk-?Ly7a+g=Bs{`-m85nFj1T#RS0nG4b+UU_E04xbY!oQa6 zGLtKGnWvJ3fB}l?bN8PIS|HM^{E_f` zf&5sEwe&)ma?4yMy`WHWD9q6z%%xR)Go~4inwf-0*rSsdibAZpASjGD;Ju@G zKok=tDjN7RBptF(dO^M=#{~sMGKh`j3jA1+<`|r-tR(rdj3~Kbm^1^)j(j^9nagx!Yr-`hW#ZfApo#}G@(nmgw<}cJtxu2 z;d~3td|5k9a=pbaGm2pW_iz-I2eA<3kCaaC%I@fwqi|rPn6%ZAi+Y2FZPKhzHw5q` zA-Gp3_krn*ji2tB3)j$ZQcmid+;fBcCJP zy=>g@PJh*}0%siXb65!qJOXYwE&xN^90>Pr%VD>;@z) zGYthwfMhE=@#Czn#Nz?=#B?$i;E+g?__57|cXxWYJsD2mNOR*1dVvGi-wlTqqs#@! zzJYiODno*A4Bk(b4}r+%Z}KH+Xg<$baKj)dT?V@XK?T7#`0c@gB{4m?BP>Nn7K*j& zIUF|?bh7w`5vpjbccj2Tun0oBmSs|oKupcr@{D^RsvNX8m4>abOv3Q-YxJ6R|sT=tl1_do^}}F!2c` z{-70cc}Nr(kjIRIXhKlLXT{h~2mO?@QPh&vG4 zaT#=po8)$+>xXD#^k@qCjHntzfEPGQ^K!2k_*^pNt`>WNL7y79d%3w0F+iv+H+Bey zrX4t=aXvdo3%n;wej11;fx{v^Wyn8`*wO>Ar3M947%Q?>Ov=ivAQN8(W}~bg#%@5f zLjNnruIm8f$mOJ*=NbD397??B2^VZWV1}IJCB8zipgbM(RPS7CSfZ3wUkgDXi84uSWD z6g)BR8Lzhj7d+`S3cC{Gf#NaI$O(4<4`GKfNi;IC!h!cr=4`+fg@rn#LK(vRJ?(Qm zwCMR}060LKfSVSU>_QgjU%NPpaQG>s%S!i=Zy#UfcbJ=(2;`GYU?Q;I1;1d)D&aU2 zUE-pO=Ryfh4BuMsmFaqQ(h%946{0XyP;g^*1Mx#Khi*7DWWcFgg!TuUM;yzjXu?S> z;6CfMvup&#_D83&yU6GZxNsM(_=GaHhND+tFi&2jpv(&3%=RwlNV^*$_Es5v^j}nA99a94%Kt zA>%Qh$vb&p?kWbRa#1)FDwz@yGE8G;DmOWTEF2XCF1WGGyL69+Ob~*&NQlYRRQwzH zoDDV$%HJh!&9pYl5jmec8AwqSA~1+#FG6&X>i z1SbpdKt$10n-ADK=R3a8cae+P&7@w()dj#XC9p&C5~zr73ISOW^4{QIl`;weSDa$F z^kz|Fa2i5Q0e~egotaRpUR69$R8m4%pnyv@qr1U>o+|euOH&B)rQ!`dFZvRAWWcAZ zz&M~<03$)kkDEzpnu3^5izvaK>At8M>Y72{skHj?H}t*tMyp}l?3OmBNlu&DJgd2t zlKrKgff4kI|?qZ9?8d8Ker7BlTOZafQcT6x6A?QMnjAqxcenE9Klsn z!gLTTzArlRSg}>=AK41Croz#Y(HS~r&*Sz^1a$RenVN1TO)pG5 zc?LzPUgT3CLlGHrBeSFu5Z(lp^a^{F7|3$OQR%i)sWcHy#*Kic6;PCj*3NlpHs3>$ zB8{{-b}M7<5Nd0F%*i^P;f}NJ9Z9$8d!keFax)C!F|IEFL%_Q9mVx^Kk z78v`-Lj-uJp8mB$^)w3A^XPt1rH#aWA?BCRSkdE0f>wZ9>Cx^zI;I{07b-f9qTfUZ z{-2Hx#1b_;L@T@5?^|}OImAD6#&Vy z4M$!)>~irOSYLHht>|_@{zPG-G%A$*$vPNWxHe(4c)zJJvmjb~)u`bNm*s3n>qppZ zW5$a;H)uy9THL5^vk^~pwCo=N{9e`lg|`z+b9u30Io^tL>At{{iQWKf9uZh3$X6Rk zkZ&mqXh>#taVT)VZKIwERAUiHMgdwmUA(kVItp%uQ$wH|FAZu^j@_Wn;gZ0HuYZ9#}$Ii35t+bKlaaOK0MuMNXP(1_y zvPrXQ$0z9$J3J`zFa)h)Z5&u6P(PN+he%yUGiaoT04q000!l<@An*#aGt-pSC)?a_PPTih=>i72>G3nxgE#q9i9Q zG)4TtvSmF+a>eM;WS+p_nGE`|d!cM0h<}*B1{gGuT`4VEfPB2waAj$FDujhSXc*Dv zct|1-&Jo3nnL6Z>GK48$M3ZWx;n^fq1+v_-G;JPvc9K+HiVTiOz#ba~DI+N*(*jK< zQH7uBQ`jWk&KjPjBIXkCgH044z&#L%(83WBl>HZx70j@j2H+q|o=h!e_h!iH&xIxD+hC^N12jz02T_(Q;<4{ zk|GNMJ+Ng|CY%QXL*QvfkSNylCIwnfMYQE@cA}FN)h5#ql+nlUv)q=drBPdS3xmWI z$VFH;_}qgcmbj`C9A^}BwGlswW|Z(MO;~C4B1#F^;7YAnsq-r+B@`%(+C_|ux>L{; z3H9qt(kvoN(6$7FpkUN2^(pYIOvEH%+@ixBoao!tiip5PhtU1Fsfxi4mANS%e>DSH z5IN&|MiOdo+q~D1SEx|It*EGg2nu@La%oZX>?qncP_D|Lla<)Gol2=^Ban=>fE9?{ zgYZzg#e|`Xot?Hdsfu`^Dls-59i>>OxIrrcJ*P5@*&|Ev5wEq2Oj!8HB*xJuv&X>l z)IM2x7N7AJuHsmWU{x|m&B%xSc{j~IeRr?mKtd*}0?PNUYT}g#5-ZU};4FMqBE#M;&h{B`DN;PJsgcuhp zs)ba*DeeC*E7TQFr$}_!G75ZFQQl)72WWq_HXI9vSplgG@SlE`U&#il=z|19bu8e+ z(guKj1HE>t`(UkWV9&<~_uZBc2%$&8{k;tYmyQ}Q$FooM2LgY@@{K5WqtZL zMQ_%w=#A=}{Kj$qjpKZz9p{ohQ4$~`mzRk=K66|6CoV@odCQ{w3q@si=+MK2z@YjPVB8@{RzbAKRHj)Ycf-ms%%N-8ZiIK`z~+q7W}#I#S+QGy0N@@Ztihpi z5qn*$+0%dPhA?92B|KFFH)7DJ5*vtNRIG$wl)C4DsYn!Hj>i>V>m|Vz1frWu(%z@J z9lI1-6NP7{a|e=WM2K~}t52xE%uZ^BKwUj4wcsC;*d5Lt{GH&x5Jz6oWawVxC>R3_rbS_SM z+_$_IPnWE$ph>=tRktR3%3`^FQf4Dn^MdXo(h@hDmxsZQCftGy-}&z*2YW36UFS%` zmrLUQK27yOcwOqj{&c4SGFjv_!k4bG(@*KdbFo}4A}Pz`DHq?5c3eCt zoP%*aA1@2{r1vuoeQsh#lX~~S-%5FOHDLhFlGF#2Zc+x$vSr}2;b!O2qq&2V$Mec2 zlirwJ-j~l~8__%@>Ne$T;3DoQE!$SjWQevn{3j994^F3SXiS-HTa&4RE6HkG6Jdfz zv?@^n(uVlnf`_fPI1Eu_9nQj#Fd};<8)4%x&C`m=Vc1_xAz&ZD5b*#b@}wTh-P}8g zolqugS+puwlTDe8iGRkue!RVJ~_V1$-t!jIza9RLV0EQ3Ittng7o4iz`H1X*p=P#*rFCk_$=;q|Fatrg7y zAScE|m~0&l#~q(02>2vZ-ZRRLBA;NBl~_l-cpdSeb;Lv0(X2<@dJ?=(;<9Coau~y4 z4@3jknJKfzcqobR@3nwe0bh1>-dd7IG zH*!M26Vxvc+liU0t#%8H`VF!LE!N5MN^5SP9BzbgEcnF8n0DR)>kj3nLl6?iqPrnD zT7Qh3Cq|xfchaD7c5Y!zwi3nRFFePgH$DjxJ7yN*x7AMG?Ke`0ISP3*Ml5(2ct=^p;Y1RW}@ZnBguE z8YMRca`xaaQjS!v7*ahkgYEg8#(UwmLs*c7mSi~Qydy8AF=v!wYP4_Ez850gpnoLQ zMgk^9o&w;q*aFOtBC!<(0M`-qk`x!a=EVvdVGTEh7h>EBUYJtgD@R%buTl6j1g-FM zhCc@cSl}jFyyyIl<3je6cNTTr!qVI?ffg6A1;C~`kOrKN> zD9M6Vb-1es6OtiVQTASz7VKA;^>j5Qn^K^oaf4C1jXoQ&GnqKE7*OOOHt^|_5jbLa$KiMd!O{F5!+B5 zYvLm{Ovu~tvOF7dT~RJ{W~Ng%(nP?hU9M{ils-Zpi;jK|^w%Phf|+zBlAqlV2;d}m z>M2s}4;myz-K(ON7DsbH%9hxdDM`@b|}9Vm9g7TRz5?7lSY4CBhvT!2umHF@R*aG9kdF zP&|Q>(pjF-v~BmqD3S(EjXZS(Ljg32r-*@B67Aeil^iXDIa7h3NJ+7E0=u=*!t=OmR#DdSimoD6>B)TsYI`I`QVINP_ZMW8) zuS%K58hIk=RJtbA`hF;RSw zS-gb(J!MT@Os}6(kROZNV{bh!Kg0W(ePZ)}t0(GJV|1wFiTwa0C=W$5!_Wh z7&xs7#VLemje)2vL=JnhI>sXp!9|-iUC7F%I@3?Pnd>!qT|Eje=ewyyhMq{Ng`(rtz`UuNehq)l2_*pn7dSzp0dmpY zI4!s|_|yVO{hsG#0V5CYvd_ow;50^MWMKss=PM<>y1BMV!*bWwYJ|3mJMgE?Ku6; zvXCe*QKw;mC?5o)+1En6nh-M5DDS7yjEXIWe~qOhX1YB(0&G1o5$?m7j*yld&=!5- zZp^Er#PnhljvgWuQb>^&Ai)Css;*a51f$@>MD{SZ=|#JV$tG$Uj3CWMRI_1!_duAf zNZ~FrWtCnIWI6aNZj`_&#UALor_QfdBu0CtkVQP)T0>}9fWjLV^(OM9WfG9$Epc#4 zz355!uEZ{iGRr4W_w=+~rZ8KHNsN-gOn5L-%4GOZKZc{1sgb04W7?I(+2A$GtXUtR;YdQq~u)uf3+ zC`3^10MeJi|K9^e52rQvg5b@DRwMN|9*XlNV)}CEfl=;k6eV_h zL(N=b6-#kdO8R{A-UX_^5Jq*1O)G*OZQvWWqpPS8I-yl=Ky)3^ILk_3K|+>3Ag@^o zNvnA9{)k-JLAm?CmZ-H>xBb_<>DTI(AH+mbf%^X3>pc^;Z4_4!4GwKdt zvV`C}n#*_eugP}?A!5ZJoibatS((N=s!VsqxFC0aSoDf_U}?tegpZY|6(E;o%ivQ_ zxC$dtkrF4{fnWxCq*uzwCc7+Xw35%7)I^y( zP}tUKu1_z(R=sT5DidPU9R_OzjL1$@Mz(l@O^Q8ycvsTfRRMXE=qtixp%k`U1S=EX z4iLqEMWuF;HcFM^c&9i@RLPNmq*4X(95*>DfKP-T=92FB%+dADLu8Zsf_CCL4<@z-w0Os_H> zw`sPWQ=(&#>e41Q!$th{q%Gmgz(5$JO~RrtmHviz_6MzdVOt0 zI|IUdD#{1klw3=!+(L?j&-|xS5i3f~MCa7IyKednD4 z@`7H#B4d7lMcx7gz43Sj;d&Q$EGZz6z<>r)&5IH@M9iD)AS%Gww$M;KMQyZD) zi%EY7k0#W3bp^)!u|*H>DK6=T*KgAy$4F%Iy0lAGwUoN-?jl{@3U_WxM#&|HP>~{N zH5Xb@HH;dRsnmqEsj%IVC=JNQo&k3w-Iba=HoV-OWP>sQrI-!$@0@$>wf*26!Hl5H zWP!XuB%+yA0*=legdicCq}E^Tx{awqr^Tf2?m|qqMi(uaMU{M>tL$zP#zU2=d5915 zD_Si;3^hkmW(S8upRz`i>Of|qrf4I|A2$1AN0^pH!6~Xw z<}F1fL`cUIHQ^LAStXV)9N#unBZIe2Wl_KfPx#fi!@`rFDr9m{Y_Q$)D${jZh+I_c zDIij8d5i)0$FV(ghXR~puprSz_8-JbFKYb`*R{@H&4Snn%m(^HWBst^4z(tu<2mS@ z-NZD370g#Bra;V5NcH}!M~ei=^ik>_=b4VqhR#wLryK_%_%H;C~c2>)s+j z4ebFc-}OIjJMPFl2(l<75YX<828^`2Dx(33L!D_)kxh{k0X9~p1E_zw)xc%7M#VN; z6gjQ<*45&mo+3UnpmwethnwZ2!Dz?DTZC0v=f+x6P|_DDV?Js6-mnyOu~){%m*`_O z`jY*QUq>8IVP$#2MY*BK4Rw;mIr&Ml_NGcY3~W!iP888rVT~N$+gu7IyD>GG_Qc$}!xXTmuF|f}u_c8S_2R*KG8va_b&pfPgV2KQk@MWMR zGi-|yX8Ek8RBBXyhaO+@bDO_3Q0uwap0Kavk~LmU$LkpHp{k4GCm@S;&Jv4m)4-U@r-4rGTw z)XVc!JA-;yk-fEmeic!-PS)7CQe)oRY{FG=G}q)oeZ=9O@d~p($8-ry$z!JAOB8&x zRN}HMABF;IdvHW??6~h{ZO=${`H=|Gny1Np(Kbjt_$qeAM3_9)?9z(wJYIrFO2IxS zm8``tW(ch`77Osqdwo=@YD zi9eyKPx$PeO3}Sgfdu_ESgXm~BHR^URl9}JLj`{DFhV*S`DDY&-%Jc5dCrZwLcr@+ zd8{Mg&gAw+Yz)*YsyJl?cL(m{Q{c+bKqaMnO0Oli&QjVZCB+2w*zp{tR$Frm3}*tl zSC9&YjqWYp5D9!_;ChmXZa0!EdW|eoZcwUsWR8!hAmx53b4EhT4LQARhp_6e=h$=o z7OfVZRJ{Pob=>3F+;>7kU<>5Fq!@CoBfNnXMpY^01Qc0Y z#vU6~U|SRQg)A&jgqhPtRhYG}Ss)q%aS>MIpn?vV!j9aSDKDh_5xs8WIK+MuSm35jN-m_Zucdsbk$k8RNIuj8G5s;Gw|4m} zfXnJH9#5)7oNJ!IICZx?j%aV-2V6F+3>0J;HWolJe$_A{=&j%@&QCCSB#5GV?iw%5 z-`~60ZL3v$K~JPO;(lH|p1!XmS6x4VsfMsky1FU_P$#sehbtnO8 zB&~$o3#YIY+tF*s(4VQOr~oTs%Fc|=QLi&bE-9epzFZen>=IF!lx4upj22vvGeoyb zS*)FxrlAZ4SK-3OUaDB{g$o0++^SuSZuzSE#6hzhjS8~!%UiEWxM<<6IeEhx>W7W} zWtcz?Jw188ghpM(INm6R(nXoHrJ`k+gIXN5qEzx%`n&m!4lH4E z4OAJ&->B8kUfAntVq9%j%6k#Pa7wLp9!STCe<3;)80C;I(_!|CWCSXr&$AI+!N}W| z)}q|w829Lc;sRL=DI3EqM9{XRQz#j$=#oV-t~_Q99TBpTj@uf-a72$Q($66Nk%!ae zvS6TZ!zyOfy;v&CKnbAl_@5-U!mnOFE{>@Qmce;f-KhT&X3wCiVswk@S9IUN%k{MdU8OMjg^cIIPBbQCy1a*Cv+0T1LPFGuXllLlvvj52=}!r51GaZU^oY zWgkFPU7!#dbDdl6DU!LE9$JDEgO_X|rxH7=c?ksBRr%O@IgX65cR!JF_U=bT(f0MV zW#jGZYc*{e9As{tB4YPqw4nManIM2^c3RMrfL}LYkk=d#HZ|a(Cb2gwt9jGYkmJdQ z>AZjgIwzB^_pv6SUNDZvcfr7h+HiGH$BVC-)XAm8k~y3UEhlAn7iWfr<#Co6OiG6) zedBhOk?+tq*jr{cmu#q+6@SH1Tg@tsK9Pp$wv{bedksh9%~)e__lZ)Y$`RnBM&S8q zA-Hk{*3{Ohrgo+GAc}Rk5}&tCA2wIDd%7T2lFA{HFakPJPY;-WxkiKa@?-hBqe z)B;|t{+7k^Yo3dREJZAfgflix4#d3*nQ1NcFg?=Y5os`cnc~J#a0bmbpSJaQJrL!* zdDHZH&9kQBMVZYf-Gc|2Y-%NHlDhfJwYVYRbitQN^{SwDaj=ufh;5}I0GGBgoG+uv zIB^to#jz4?8o4~^a>Q=@iY(pIF_aP>D;|7=7y^$F&mBO(T(n^%xH4EYpywa&OCjDN z?xG;x$&>W%wijh=8EMtc_vErV>FDeOEnpqkWgMRBM)w}mk1H{n&bEEMbH`eGXnL{fQF5xOAH$goqdQt|0_4u`v)?Qnj9HcHKp~l5WM7pV|VKSv)gE)jckAZ%8 ziQ@$aOv~yB2b$MFad(-`mp3)Hj+iHI)|;*lnRIZZBA}Bb!GhsSJRDQdH8#1l4n(O2 z7hn``X(p?2X+j{kNH$YceI-p@6ZQqQEzOFI-J4;Qk)c}go*u%qHWIwhYDn>`@}zaT zAOtir5W2SD*TRjiNqN2yjdE8&@d}i(Lf&BGRkoG#2*Qezt!Tsl#) zW=W%of}G$l+;pI@_liT{0(Uk1{h}DTK*R<=f(}y3QxXT$<>u5KN~uLu%=?sz<{2$a z@K)Ov6WalY&&oXYl;;*e3U$(o-*+F;y~V$HApl31Ep2Gf0{smb3*rWkKuf0Zpn$Mz z;wre6K_qM_tJg3}9i2(I0$D7DAxw_P(`I<1MJNjeaZA)~!~osdv9j>0(15zF)j~#w zcVuq6bmKML#=y!729!ao zQYMU6p)In@6fO%hZqc|>ed+c7=}@OA5@tcLvz!&Y*_9YTm;&h>P}3VT*~N~B(@o|g z8UtvT?LPFi=G}oD!a0oTdiKPdmTVr1iaEhmP)b}8;B2WNwqt=Q{z-GU{DeumolJU$ z>FG=Lx%oNXOsaehD$iUo??kRWQJ_+BDSKYj0;EtAziFf8wdL%#4vPtwjKf6es$l5I z>SM%*>^e|ymw;Cz)0<~b!>fZ41%ATb;e!Oe1U9csX9R`~A05BeBV&4*!fLj`aM1`3 znvCiA)tIRG1;o!Xx0W(+iLX>-^y9HIkI*v3b)(3CU^vvdDo1ajbJGnWGm?zH^J#8c zK%lXq3N<(f0_L9UoZ!W2j7OuAZ#-?52p{+`_^Y*4K1({GTZJw!eXdLb?#vq9l}xrp z(RQH?IXmo2BBqLYc%Fp$HcHn9hnLD^!NUZq&aV)oqk~Z-U4p`B%n{3;3|9Q+$>)-V3RD@T zO9NRsK2Ko5OGeTy_mV^z0vZx?7$;&2Fy2H$tu(ADJ+c@L%REMYtNT1nUd)g!g;%$+ zsM3|!E=`?8mM!beLQ)mfHIX+G=v~63-4Kp`^*j`GzGP(=boi27qGAmBbVLMK$Qv38 zAG7NThRK)5w0;L^CvFTP9z%tiiSZS&q*{HJ>n%N5KhU#A8WN6{x z363~nb`MwqAT&5_bL9@f?!#iH=?-4>*z2;U{q?LB@WR6sWW!TrcCeA z;NUhCr->=^+_tRrhZBso;0q38Cm)xGi5vuS56D{%*fb~Vc_#OOp(ht}mz_1c4GUt+ z1zO0}f^)KM`G7N*HSe*=mq1=q)C^q*KB>qfSX^ z;}0=Rr}`LuacjG@2&tvuc=OjDDD>p5lZlr*0K-I7@hVouR;;(|$P~zOPNQXP9cpv2 z*P!bprgJu?(|QpT6O3E|Uu`cdsuzf2j2cGL0GkxD40$w#pP2Cvqffev85}d4=glEL z)HtuHxfud>crpeCaySq-ggLbA)m{kuV%(6j%1a0rLYgR&Sz^KBN06LBV+6?=bQ`rf zeNN8oR&RB7SNk90LFiw@?vc^DV49{?ZUwIHw z;$<%u`t@Mhhr(nLdeo&@;&dbpa8a2`31THox>ifv){2lr4IO;)gyxYabgw)ir56rO z)aI`C!Jwh%XB6r_(E~k#6>zJzu989i@40 zFTc0xn~GkyBqKj{=+SZI7S8xx8=)hGa1r{!R{#M(xC2};@5rO*<&n-s!-7h;3I_&m z8;Yo;DV>Qh&k;FHM&UUS(#o!#9>XamgleJ?aG&TQ93td|OEuCA6Jl5K$T>yB1p00| z@F|~^6D}=y9@n&{;-D(e69pZeUQ|a@z5BTGN)Krikdv~UBqJ$q27v2=T?BU0Qe3Az zbO)r}6uYEno4uN6Bx-|@0~wV))@h*kJEhpMA)ri{8>1y58()dzr5FMXY=Gt;V7hj zlS1P1aPA7R84-`=xkG+#Wi*~bAmdovII?I=HseMMkS5 z`IB@ML?s`dHAMZct;`A%_yPSIUqy^d-DD~hgQ(u~423tlmiM&Po;9+4R8d@$VHgfy zv8-IryMT}gjby<@YTSA$v4`VN#Y-ScXrZtu2iPD+JW$l67XZ@YrDG05^N8g6n)pSk zVU8~w1S;ewg<(Pz6^EcBZi9d+p`w%|Uq|=I${IzC4_|AZ1##8!KCY(TJ5+(`c zvle4nZUxWC)ak8J^p^2wJ*nvUh4>IN@E|{(z0}m|L_J^Hsg(F`p7NcXc?M$$X?DlE zDVprb8RE%VMa%K@lquu2>*p$CflDmuX$?Oys^rwq`8Bnew)aUl8&Nz09`IJTmYdL0 ze6=yd2cjvd6-zwjs})1_G!MksXQ~;4A7l#hw7QAU^wpvQ^t3S{h>8*!M`?@NpqKT* zOsH#HvmB~=7nZKc=oLECWe#jxuA58OR3r}WvGnEo3ii~>Y!0e?RV~lE&GpRNwP#id%~m zi^2#*4g_Drfv&;8meqfBxp^`wFV;La1JGJNBOWkQYSkMn<4d;8K%kJ>(P1Smh<6t3 zT1rcxVhGy_e8BdCnt4*>>V{XhQFj{fMBnwt6Eb3}u2Bw+uxZgfS99?%j6#oBj zd?dS4Ss{cXRQ9}7sDw($CVOX(b9a?WcCzOQ*_^%3-6bo8?0I+gakw+@oLk?1zdzoO z$NT^H`}KIf#`E=jM!DW=RRehLM_x^9zQOxdX(_%Cq z-_A3SEjjgv`Jm${TfFt9UFAu=i+RZz`1eE+xv@LDCZ8|lr#?-ozF7#3r-?o z+pO|&&2Z*3+s}ai9+#c0cc`z%W_ewi4<wXs_bN|olH`iJo zOTV#bFL@mGqIas;{GtcfeJ_^frkgx^;a_Xti^_1i@KS4|km{mY~vHbYF1)h9th%DCZK7RPyFxbHRn%R<`2!n z`l`o?+zQ?2E1TNx53L{cBdwJDgB_m^46A#w(|oI*F3w(l?s1W#J`qd~uKQ*LDyvX} zSQ-SkBa9_Drz>E$FN+i~N`GjX;mqQ_uRhvsW-8TYMUfx}`{0^)A{TqQIuW-7icKQ!aWJ69X~!RDOH9SN>3fu!)D^P|WMjY3t$ zQU-?w4;;&7&aIUOmVW=Q`i}K+L3?&fLx>kSFkK&ewe`(vPkW`5zwdvXZhpNXQ-5k+ z+nxXR`>Ru}^wkE|^pEGAS(mGuY+}_8Re}GU?FQH!S<^56;`Yu-czcfBkyGu%-B;&V zF5J41e&N@ntqYxbA77_!$Fbp}p9}xEyy%h9|J%~3`&s#h_)D9~ua0tTC4D_b;sUG{ zH=Md&INt8P6rGO<1bMag?0H%)47%8j?Q+&#xUcY2ch%(Y^1N^JP$jHlf!7I%@w|FkIY z$>}(mt8YYo8~pOX;V;rIOgr-%A&}j@aC)?0(JJny?5Tif<4^5>`Vz{1#83=tbF^v& zIW{ey$VN|_&JnJB?>oi+k?U`7XNpJstIfMRB81{k^Sh?P0cH^ zD*=MFvMy33`@I>9oEObL#GT!r(Rvx-q^Rd0sKQ}a}uD&i(5KBP5J0Y ztn?tRFc9SU))1;FjL_l%*ihqgV-BGm;#vyR60+wNT=xDX+3miN zebC~z*resV2QGxq&L{S3zqo60_5E|MFIrcd6W(^7e|GH$OOd!KEAZOdk4yWbG!a6B zgIn)qk)!j6yj_Ok1G-I*EX=-)?{k#By(xirJjg7FT$S)JdVD8e!ce&{dseZ?0B&KY zh;e^k_3#4mgZR`^DLU-Jjyym6`d_~>;p=h7bE!f}Fv%kK5>V;8=2;PRPU+LKfW`f(nI(tKz@DcyI=x zFPQo`=2@%1~^~qz!Ifba4Ay@bSt7v|iXD@X2Gd{-6N1Dj|t$ zh$W+tbh%dEDSe}l*CeuB;vVm_Zr*9rPb=;ZSKWN-edg8Wr`ca)IrZqV$G6r3u4Nka ztD@e#{NTr!woaW9KXH40#v-rXA>QLhvJ0C5^lnViaFb-yvCk7Z$$v-0`kNc+g6T`W zaO;;n@8X|aVM47_t{47$Gh8?C^)sd;X0YU#H^M!N+n1K@L|W?#JRU0jWmj&FzcSFU z6??Iw$L*sh+nonZG^X>%mlxL>bi+BH(wiP6eC4W`Iiu`%LGHODsWg16hF-2W16`+V zo5+EwriQI_56rZg0RM99CpKr`x9uW#4?*kUu~)`!4i7o<#P9+ki!xE#7v^7HFIhP= zu2+^weIe{RD{#$*I@zH6eE9MspuVl9Rv+qW{^(~#*zeEd%PmWdsr5^TLgRM8ioRUa zox8;m&jF_pt?>d)bAI|}9*ixIeiBoeYP?%_d9}V^;Q9s zkvP3BGWBVY%*A)(ehrVq`OnmU?QS^zi_AIjfE{w#;D?q(JP+4pc=B%3yBkG!M&~V5 zA{?>|;znadp0w&rKTAbZ-#!Tg*xY;lA~4Qh2dyb;Tna1|dR-eb&CI`@BjD2DoqDed z@v}*SrhWSdOWQAmK*p^qP>}WJ*%I>nqgfQMg{R8B+|;KNmnoyIr|V}woex@DQ`zpyXTZK6BoK>qx`Ic#0NSN9ONIQ*m-vA>@W-CPoOjU&reECC5$`=o^vV| zx1Opy9p~QdbYuIruL;+0@#dEu<)5vk*>?WqcX$lB=?=O@xjE-3jsMv!;=ZQ$DcRtM zetD8RCUV&BPsaWu-=sHH<#Hn987==YZF zAekL6qB1bb<~_3;8G}GxB&bP!$E- zol#SM>i6s!jvvrxiz#eBA8e%PdhK$h{BnHx4j_<77)q1F{AE&se~EJZxxzQ+-btnT zv0kgb!%e`A=jUX;<_0=VbpCufKc&VW+EwDB_R8nt(+7{g6+h-7u85J|Z=0OkGEL$A z&GwO<>>84``8efXD*0zD&y9$iHFb8TxCp+A^S;aHQ%A=hxE)?y&e=$pdO3K|wyCVO zc7LyH>1;jZ{(bgKs%xgE68YL`@8>z4WNzyH6MHLgW|z_^V1BN?FqZSEZtaFLUvY%) zNh;?dk@J4>H}hMU_%EFO`=3Z1?dEQd-t!KJ+;-@duJlQ@F(I%IkjU&#|;hp!j8U(^_YCRu4wn^s)kc9K*IWw z$NhWX-yPe_oq09Xc@+Dc|{_{k3kpJQVkHqCF$Kd3W;>IM6hx@OtZf+q5d4 zJR1J(7I4$u^OX~N2(v;>h`3(otjlQ@Q$Xi2;O6X{dU2`qE5E=yRjWIq@BThd+pV%2 zc%S>j|6%HBIjzf`YB#E1;yls>i_OmDi*p!ZxE>z9dBC0VNTJgGaixQL6z8+6=@Slb z)_`R)&LwIVD!&&#+GJY@4ZU!&Y78s7YrMLCcPhigT7PQi+EfAyF14g|L%Br0uvKQM zEqHuLXb-)4T(j%Lr#M`k9Z?4V!4oK^Z!~)08`_ireB)d%GYZO^25&e=V? zTSmoD zwlZ9fko%cX>znrJ{wFgt)9;Elb@{PeEXSaP2W-=c;eJs;3Q8x*nIE$+icJXS4Ar&S{Q5l-SiAj~^*~!dq3X-JDYCkooRue#a`mwTq_N zbH(y7oe62qjgE?g;Y#l;#CvV<_X}uFRao-}KdrN8pP?1QKU@Bh@Vz2&YB2d(-YDJ> zer1caY%>8}eEI0qrKd9-X#-tqpIL%=b%WzN&40y(R~1xM!9I4L8{UnuC$ny~PrjOZ zHD&%|+c^z;ss-afd({9vnX@`p)v4iTRws^QcTG)sO{(}zYMGTVsmjFZ8~96G zn_G0hlcl(1CPRUu4j$g7H&29|c`#QW-aFB@Ro%ki-X?$MQguKf0#{-W96bVEn~mX1 zpM~U6wEe&lZSsWaKkk27kvYsR&$u*0&U$KY?%!{Wf080qr=`W_GV>-*ZpP40 zK4MjiG;-3`)_|*4T{|k(oU-;?5g0NRvbKOyVQ1k98rZi(r9GNo9XFAmIVc~*-5&OU`vALTTbL(l^L~DF8y^zfjNr65))7jN znYE6#8(E?mqh3GDr)}UH(M6e_?BTHs{_SL+d(?9T0WN0YLNyP2_@=ZXrs2>$a&MmB zHoZ4b6sBt2;G3XiYZ16aLCySFX=uaIBKz7x?SOytAe1B71Ew~CqH3LC)aEc`r>T>L zpw<$RtpR_QiOjGlLqHC2or-$BpTRmWIx8RiD{lTOKJ<90kf>FH&~n_aLjYP8>)qE_ zRIeS)e3RH;2_4fgrVkT&cGR7Eddu@*gf?pb*l4Gy3NQ2pU83lTG@BsJdw zBQ7}Nq7mVsGD;zDRNI#vCz{b9z^$UB{xdh0k&I zpsHptbx=fYr@Y@xv;&BCF#rg_{q;XJ^lbHk)I54Xs>Svi-lQ1m9UapC>z(hw$WTo3 zdg8n-4IP~bp)Mwch#cTp+l|4&DSPAjHYeL5(K{_e46>;IIvkdOYImi{9m%d7{( zR>zyOeQPOka1xC$JIpPL2|aG+^NFZvTEsk5L4?C0fP=+VNxX`Bvm}^7EC%lokyC9RGL(&4{}K`> zi`Gu286*rT;Ijif=OtmFuweiXtp^Sfp(6sD%WU_)o6!fL02@XNi*2+v#IGmCy2c8; znV1AQ)HU@3t;Sia%!Xnvjxe;~?)$KaP@PEEE>l&2Y4DB;%Bpc%ZqnMmEqKkTX&wW_ zu|y1cMB4-p2WpRia6B!r$MT4iP)#2|@P5K@l%dokJLaKi3;Ga^=?dv^W=4~Rn8O=X z^GGCZ!4wZcZhE;T(5J^&YT9=z5sguVwqDF`#}Ri{7Un2fos0U){&=)-az#4-j^f@{ zAkl+%^r6`TMTS@RDoM#}QGOIzVKlc&q1ajn25yH7O4~^#`UZt~*^f(44^0Ewm;>6) zcX)DioM2|6N7Y%Rsa60qWVWqHbOwjf@9QXc?8?apI!xy<112;9k>uT5fh>JgpihI7U2W+ za23>YaGSRU@tZX3Q)b%2CIX+QTZ zM|p|xmbD*349eyQdWZ)FI`z>%fwE%;RoM({dCcQF|humIE_>ztKv#>dD z?GrXo7@JK`De{CNi`GrH0CY-t9l8|d|C`TmA=&T5$O1@%&7~_4T5*Z9>VAGCD}682 zx=E9PF$xIf*+~&?TPrAX>*Si!@*z!Bl5In}Bd|2iLR#sK4X!3y2ES?zMuC}7SxMDr z2#HZlQueV>jL&bLLR!n{cN>Ov= zgcUIODn*=45M@eQ(rq}io%%#U7;HX0IgL7Az8E@VpE$P#2~ne^uN+kZG$Pw)gSyRw zOO4t>qf(kR@cZKg?ZUm{ex15+kyoTY*#|2} z#*CxQDSugT_{^_7dB0ZR-rzhGJPH-b#q2N8N*SJvf|Jdt&f?p^UtocCr-MGdC-<3k8H#dAeN=j zz39B{AJH_Y!Fj1X#@M_eIA~`z2?)^I6fN~Wcyf|w?;T|8Jf4!1lprK)VbV(5kAsAC zgwG|gUJKlmm{xfus^@S^ zaU<4bn4n3x7?khc42NQZQ3zvqGme4Fb{U~D>LB3bmAslwVE7g_RGT`+YQF6R2^e0L zbtQ&+;rq>`MGx>$nAV%lA1LN@lo$8RWUOmLU;gpm%C@tRe_-1*9+DM2{zsds=BEwp zbIXPz!)CEjp-O7Uaw(G(3hve&r?2TwCx8x#b;5IlY2WKStr82mQUu0Qw@j1VUS9SfEz4 zjt5S|kR7xs;RJwBZT~G3;r5-FBy`{(*zUQWKT#6G>edG7zTHW-8`#xLa!w z`%7u19n_Y}kh$f0P?fhcb+8npvZX2nV*(~2p4dfcKYS@|3qed$C-nK*>=VeMbEK+G zY1`(`tIAL>XonXueE+KbD`+y@n-z3GbV->)$~ z6WY|DR~=3^jODFFLgWT=#v{qcof!Tb0Wcz@x9`rdV7GM04TDLoy9ISX8iI-^lSY%u z(9GW!%!^O7Ee`yFGOhs9W2#I4e5rQCav>{qn8Cyv#&ogJ>o6hoR z-8$*_gIKhN{OJe!25-Yrt%UDKu#TgRle}hdP-PoWE)wNWa{+`Cuv9FCp#tHj7SY^H z07}H;Y$rd!@lvUxEOf|rx@C0%0gG_y`;oQU4Q)i{TQUL+La?R^{{VW2YRfn_A|iCg zHGrj8K8f1YF&p}Hn0;(;1OpEVxl0l`NHW_30Oz;Iv6VTQo=D`uvM?;{tu7sG-_blf z6UPJ&2P$~w*dinLXOMY}rbEk><2Vtou&pRm62*H-7$87*-!Trhpf6+MN){M+i^&5K zHQL0Cb@stniYn6wTjZt+Xh#d@N6z0(!E4AS?PBVLhG*0W;DL8Y-Delq_U9yv2^zg$`LbCKuy3K7|$J81`)TP@<`g&2)u+QO%n4c|T$RosP+R`HL zxj&hsP2DXoWLdJ|5=Zk^>;8ZxHV31;*(=9Gt$+o>en5SxBvA>V@Yh+DDO=6;waO56 zV4oBCN;q9q2o|;tGV2yU|FHTT|5vt=l}(y?j22M?(kvv zi3WE0&y_dp;Ucunz!97Jp?L$NIn4kZ*MSLg=Lo;!m(_${_V;u11396{p<&hJg%SJk zgIRzXsP^a}!2&ZE#t>7WlZ(1wS~VxxFhU2tz$*#7*f3qQuoSRU0TgN53l$PoXa0D& zB^v3N^duPIu1Wdi1(;n;u$QMUrjYs}y93XD5SjR;R;HKd%A_6{VnkOZGtZ-$tbZY5Jpwsr5Gt`YDRHW;WFMKBuw7yp@f85EDT+<623CE=tiK>P5GA0KB z=&p`hkFIqEsfEay&JlE@^SDV%oiTIC4d7!Hw0JJqEw^_2z0bKyoy^hWI{5A5!if_rXSk%|8)6l0J5L(MTur$PiCm`U zteOvJEAMQI3WLYln8$~E_HzofBev4zE+W<(wO{>$d4PU6=V?I<-)f6S(0ZbA#2|f@ z(MTG?0?|g4W4-3T_C%Q~5E#Z_8UZP+ZGEtOF zss9thoF!$~^bqOzgCSxV0bO3oz$=i8Q7tQHO>&u!LMXFLkJgpOq;+~L=_8LT_71L7 zA{6q2v@rtpB3PCPLp-qKOshuALAhv6A;|Hu8465T9J0WY<^-a1+xiqR$3yfJNr29Z zU-WIn-H3x$E1!8@Kty2#ZvN`Ce9~G2d11c2zvDHQYLX~SPTBq^%aCZVzP=hQ-QnL`1VOHoVq`PO80zlK>RAAT(%*-{fc{{dz_i}+ zN)g5S16kwNV*kOryo5;46;=_9W0%BOA3$}jE87X&hR%X`&>x~Vszrd#^A*{qJP?lo zYi9cR zHjj9pjnenFr5?a5XvE{~HKNXO3g9->){$z$)fylZh>4 zD8q<6gmfk2RGEVW=}>(;2&yeF|VdN2L`dns%aCtb7fjGo!=yPfkadw%!M#opqU_g zk}ANDCKj3(FycxD*X{MSSZeApusQi)*A@e4-0gT;)$$1o#3pFEV|*lr(6Cd=TsWY} zP%HEEh&Fq3czURM#hXeO2o?Q|KCfx3vtr?vU*AVHSQpiD8_VcJzoqsiEiiwCAJxI~ zL4W<^7xokSa47P8f|MU~V+-E#mhO^}#!Kq(DV3I=4d1WxBkXySK1KUc`uIR2K1~tu zUMw`^U)fJp@ou3!oUf@01CC>f9T=ES+v-v@_{bF-JU2d=NUQNb!ZGVb+WZC-=6Jj) zmiwr_=6prh@!@}?bPNTf$UW@Mm=mL#+XZ>))`~~zbgudN3xe_Q}F%wqw zONuCG+ZuovQfOQ1Z_wG%3L;210N~3=A(IpQkc36)Y;q(uNq7Xgdw|6%Hy|>ER=vGy(f~?(q<7wf5=bp%2i!fWe7o5UMF?I6)OrzpP5BMnW}0mbz_o zyyPJpE9yy@+P)UR94Zi&4i7<7j=GouGZvpHp$O)3BP%R|Ngav&3;dZkm?0A3hsXMX z!1G;z+(QcxVx&gX$8jxVAYW@FyNcTR%kkDG{=Z zNVIuSC7ANFC3Ha^8|e^=KIWCqq~;xrW)lRW&20dK4C>@a;tAdj1+)*9&yJYQf?C+_ z;wyoIh(H3ce(zXRnRaZ#Lr3^Wm4e$WNbR;(`I+#I1w=h+JMTEh1z>|{U-~O)3pfra zYQaz_c1|r?9!Y*x29m1))r^4OYbg9lw%;~jE0NYxp2`%N+Z+;z@?f?ZA2VHrTLx*w z$Z%@5A@&Z>W(PfW2!ryDvIWecBV03fk|HBpBw+2#DQ$6S?*LL#lA3?ch~0wEN)Z@5 zg=M5!)#B+cfZ6JkwRGvwC-E8%olx6o3_N}jw%;WR$W4m1YCQk|IzLMEGJnWRl9&Nt>wA1QS zTEK*402DbMYbN@PF|r*8X`HU&-D0;0(rzOPq0r4l3{Iupe?1UO&|E6mthUY#+E$UK z9}a4oHZ04^w+Dm+yRMkpVV7P@_z(K24ilN%Uem)_ijY#-K37IPV{;l(xwK}o(w{$1 z^24ft2H{E2x*4a%F^XE$uco6>H_&~dyhmRIGSByfU z+ioI!Gy)D>{p@mPm!l7AX7-w8nZZDMsSs`dn}mvW10K7_m9Or2lFo_@onI@(v=5e8 z$9r@HZ7a4wkX=1O+ijhN^NE<%C4ngjW0LyjAV0dQou&yv2KW6E%fPl0*EujS2J!Tf zEox?k3_%A)OBC{%mG;@_oFKP5Gr;YK>#{o5&0Fc3P)gU26`~L*3{4633ycq@L(+AW ziN&l$tPA7NR09A$`7l(YQyc2L6!R}ixo60|<78jdBF@@|f-SYKDZ{?)gow-#aPUOb z_5iw1C0AP_EAp7;L?Egkbxzl46nP!h8JI&U==AiV7SO?0`}ld%uRfDF3^iwq9QFn) z+c!*^_q7m-JdraL+9J?4*+Q``=qywi{;M!If-q9V4TWHDVNV>1+N{O$zw;XCFG`sb z@OpA}P7NF<3Ph@tN1*cX!)1UC=j5y^hmRucVj@O zjwa@H*kYCf52`7AtHDHrKvCd<9?T?xpKFs03@w_pNtB1vpyMtlw@0C9-vwLpwOLBH z<1`ZpePIUAe@PwflJ(uz+10Wx6GXPr^f)0{gKE8V z0>R!sI(3d~Si82vri>ke5XwG$GqzF(uEnS(^ZhaOKA^EFxbb9%t%53R05UCGx|%fq zhtySGNH96k33UZ(T2|#lvj(ooMT>^uMC@rn@GN`!(Gd?xD0E9Xi7|GJ8HYmdQLIbR zl%VO9`9I9XT8>a1{JR4PX|u@yFx6m!ti@Th5rtd8%PU8Gw18-kxT(Ij8gaIT8@x6H zblss(ehcSo@kVyu!fLFsvZ~6p9`3g%K0&n~BGgSi0T`D-6O`6A5kXA^`xcpo+E7jy z4H#_9dIxxJy*qT?iPgRv1T{U-F}eBF#;lg#fz<&XfA~|iMatB1EQR=llPq&a=!?^(q@C~xe0__B z&*5klD^};Y9F1&24|1qR9EQqtzGiJ-xo_6}_b>=+v|~4@)y8 zFFpHk@~;p3S#;pqq*&YygQW`oxVh|+Sxb(WT2?zEw50#HY`*VXdvfFGDPHB?h4%yJ zZ<>rwcd#|-u;l!NS>Ev>bgZY(vZ!v3%U!yIejBjPbRt?66qgMv$t+rBuYSxZt4jAy zRE*Ldx)a42@8Irwjz2Ts!&U!1%O^Ymzxk#eK372qFW8xNPj>;qq>z^OH{2J(Y}i^W z3%;=VNBOb6D5|{hKuNHua`$SDRECA`5XIC>7C{FQCY>LaPjw-hjoJ`n)ch1|EqCO zOScU=d%;+~6gE@7%O~fmJ};ALDKl_I;ei`Rq~n)M_TmBt`UXxLA-@gJv0r4jXe!w{ z&-wM4Ik2CC{3vGZaparExAT_m8kgW^zayq@iJMJ~&Hg5<$u8f!@|R}T-@h}BKX>4- zm!ynsut{}g*nHG8zS)j>yKH`1R*U1Z%xhp4Lr?LXb4nen4JZUC?-YuYzqP4fB2?D& zb+}z->6?A!!x=3^r>@hKZz|`}T+3>iR2^fD228^ z|E>Bge_?u>Prq8IIgjua^AAuISMF4!U%Lp4J-Gvn!^f`FI%rooW}d5h_gO$b@swz7 z;O>{rC*n4$4_G!l{XG5NWo>@)4~$ta&a1rn_NDMLKto?u66V1DA!f2-SMHY0r=aV1 z*~ee@?~Y%x)`+_q9$Cq5A!bn3s|P7aPIda=UZxVk6}MH*Q}ahw1||W$dRI6~FES^F z<+?RHXY|8m9^_*^xfrQ3p?Hk6#%EF3H_4@7&XrP|tl>8`AF{t>aSvUQ3T_;T*pmw^ zyi$W%n4QH>euaug873GOA`Q=%oHcrvt*H1`vHfpo5=XVf&S{R|oXm>TjWu4T9aw`3?9@)%Y}{Rm^PF7M*Z26_2x_8-4wu16;1nN2Px z+_>rTAo-5stsd4wQLz&}Q+B@pd@F9>8sWKQdJyHQOs_2BLEcKF7U!FV2GOdf3>>OKn?xT5<-=2G*Ii|ob@U%K02GXLzQzy+A{~JH4lV7x^=slI-cAyN}9Bj zSxd8jID1Q7!%2|a#Bt&6Meg69)%*FB6h>wq{Js3jmR+{s{rs~zDe1OF3r=m9BMDtY zpV+u!mIP_2`a5;sd$Qd9-`GaGc2g5Bdnb&Ky?QCKKBFF=c*av^*6q%2x?sT6hFk1j zwg2m!q~DLk%yf-!{NKKj?7c{E`3K;M5@c&k9m9pbK3!I-|O)Cd;P83CO0{-Q6^#yAO40450Div z{nq?_;(mYijIyp?vSAPKb%Ed{5_;nTM{KeOKQab0k~OJz#ob!=SWx%s9j`m*$0uv2 zlz+6~*efnIKE+GB_H4i4aN(z@Era;7FprEXei&T{m%n)~gLd|rDvRu?4t}2V*PpqGWp`;o$=UOb#8ntx==2?hlK(c#{yTrBZ3Zu2sM%lh(6T|l zo^KPN?mUQ0yXf;U?#;=p;n}movYnS!+M@)C@)~-OuG1zg?^h?tYx~8_(F-f-92rV8!O0d+uNdDy z%Ln4;zb9r!0Pyb@j(S-?Sru|{3xE_exWMMNq8*p;=9X?sMmbLH-3d38e;8f8WB6Dy zz^!|&;M9;9@7q`<0mgu*xU@Oxlk~;3=cAus*Fl$D4oVDN-~IShvYT0TIZLD9Kdxp) zuIBT(*IdXPw>~&bH|H(&yzz_LX9z5FHa^kKwtf)i)EB*5C+K5*Hbb9n{|@q9_NVyP z8>-?j{*=={ysuq(GJ?2#f#p>|%gyi8ziAF#mj#19y?V96+1Nc5k80DIe}7j@z?1!t zT-WoRKQd?3V}oLz+j~##pUk(%nala{wbnZaR)46hGG%HQ6vD@0C*Nj-UR+Oi7f$Bz za+iNFtoCiK;y_P233LH&cJnp}uNSO&Ghaa1R6KNPducygdK#OW0p0#PC9ClKaFuV3tel$#3GHK z4hkfzV&+6@?5r(c4X@>(=*B2vS!~Tg)Gi*%*6W=vXe%Kmx z=t0IuDxc?n__5r3x8^2ZS=LG8$`vuu_q)nNs`+2NN4KQDvj54x_h0Fs%)1Yhl=P2= z)5Ghg9t%A!ynK`AYmnd{)A)YPI9{~pYJ1$`M@osALeA8{YcErdc+Hom+HCGTnA76D z%`td>^F=`j%{<1f^Gehs+s8M#J;&L}?hbzfRJr)ge1f+ECE_0BPvcJh`)?5QJZn0p zW_^hq-`(8z1_dnND$EWW?M%33uR4*Q&-JUf)41LToseTzz*c*&#mTMbz6g)`FAg1Yd`vy-+xB7r{-&V34eU|stG7)jRn zDIF?fL%g&s7hC$N!^t}3T8HOH%nms`JI%Yn^XA`x%2@QBDSU_H>AF!c@^80_r~iX9 zj%2~vGPc(sZuiG;PpWLpUJJea#x5zh=03cA;HQ-$zSD(PdF6Dbxb_{AwGCceu4TEI zP#YKLRJ3K-s&K!Hn|idm8S!lE%5zq(?V0dv7na@57lyJF#yLF|?b6Kblu;fqE_u5B z1+>0Tx^7{4agp~-K+0`zEpnMN-26<~jB%PTi(2%2f#+?tE+Z!M;?^#@T#9@@ze!zB4??kX^Rxiik{M_Z#Sa6C8D~XE@zGB{b{z zIRSSTe30g8jchsLV;S~ys>z?lZjEcyqDQ7ac!u5C_Bdr>a1#=v_C{Q#VQt@>9n7_M zk>apX(0MZ=Xmvmz>6AX-Xl7I; zn9%g4uQ1%H;2Q{nifT)8W1I{P{8Z8*Q&jZueQ~c1oRdE<)CDM!bqU1JP7J zx*7CI#QU`RsgeDvrLBZt>;v{LUK*jllj5@}14jl;e>T~#{t zEI*f1xhVNR5l+`X&Z>F;RQ7Hv+S4hht4uFRQ+vTve@FLGUL}(meN5x(YNiZh1tQG| zok7bm$iFQ57LFx*nIbJux|#BcC80wifwTX>)(%8!P&9b-8A}ZnR_L}s1yNOby2Upi zQ`cJLG{d)@GDJ}u{nQ3i6%>h)qyPZ>kAtKYCiVGKU=?2?ow~nlF)n!2LusU97E}f5 zC<`-RghDbCWEB7sZOqxcBU$-5rslzGdM4D!F6#-mk8SofOS_GyD_@Cy7xHE0-0j zb_5W6b+)Bg|K(O8UuuR|S7jp>au8$dqr7*vsB&a3a~=UQa$eGOn%aiVMNYf)eyISu z*#+((Im~OAgpoc3t^4;}B{b_`d3_Ud(KbA7zIk!Za!dX(<|XrY86Uyh6Hy+p(r6ST zlQK!nvO;sWiT#|R^6i;Xfho$iAj zRr;=*16mt5g&Yn#O+jDrV!_^M(@MC7?Fl`3@alwLZo@{AW<&4T-sTvzH(oRpE3GK% z*XA?s=Q+oBNYL!hwhC+yK}%>#>1gdnxy+N5KuWYx9-(~X$sF_Aj0!%@0I5Qs?vjo_ z*&!RZA4`ugT|falhYV#WyU2aCT-U$xd8iJ=W#LHL%|LFZKKKwgkIfA}$c97b?>G{R zc#v8VRDQzGuj!q+pdRvEY)a8w!BXG)FBfz(46DV^rs(jF- z^69E^+Z!X=M3SmV=1~fl@z6(D=xy!elbT5wDAH{wjJ&ln65%!K#&g>X3g{4huynFAe6n5a=31k1bP@yg1HW!eGuaEJPy*lyEBZ7wmsa=mP5_7t(f%XwA_Xq|LG(xew0QBL_(@(uOW5br9K{RscG6M^R(H<~GKqk^9k!(*{>{Y-$;Pss<`m;gl*W zxkHiBxGrnFbKDW}%6qDPTfjP0TMfLq=~q2_*%ts>R^>Jmz2;Av$}r#QP--Go^8aNr zPXLBj@1D6;s7I4z`5*1Sq(jR0`WB3nSdQKnKm?>gM!S4;HSeP zilrF+PJX_;HlqIKSP^I}&ifMPd#F@VzhRTIaxk9ror>yt$t&b1s}hZ$Bq}2D3F2Q_ zlj@ZcsRa#u3!J)qzgrMqzv~~b^17X=J2$bWuYJjDbfe&YWSsHCJFk1@k^TRzKZe1` z2@g)_21gE+kFIEqiosYk(;ir4g&b_OmN^8ih-BR=H1BDHrCsbBc@-$1tir4PpEEl{ z+~@24(4L4<%$J3!m{w0Awz#TavSP}bZ=~5fhV>Ip9;zYy;}ZQRrINg|EwvbDVcJRX zvtseY;`RpqcSWS+nVgZV&ne&Kf4(zkG5^{UZTn)x*>0X9#ywp4rRM7tfj=f*y={Eh zA@}*?q|P`28+3T0?Vsqw=HDGMez=5{>atQn0|mp_!(SQd6HkX5G!pq(OTzA5dU=YH zUK!r^;X|tPv?O||G66aM&@x^A#v;&hR_Qj&s=L8}mV|4q4RiCI>xt+skYo z3H`Pj*zQ_^pDE;7(U-n`#;iG*Rl)zf`8n0>u&&tV(XaPy67&^hxHn?r6E=G75T}iD zxc&z@K*qn5RMaNv?eO(p3qFXOdF4#n&;U<#n6wRz#728$YS+xA+eGnduHf6c+Rdc< zxb-C>RRp@Wc$n@+#7MC9AQ_iGm{8cmX;TaunU|T(|74RaB4>y)fS?YG8SD(54AHnT zWUKnm`ysXh_PWAQy@g6%}^Ik)zpbFC5AQj z$R5SA#}r;nHb!0mMS9WsAgcN?+(zwegPKq`HE**|)n}B4TJpS>f=IC;-r)hM;Q0MY?Amm z-H^@m*{_x-W>?$ahvB^vqOL~@tcOUXd1u}^yN~57EFgn(3sMjY+M{Mq;2If{;Z&Up z)eVIWH;S`3ibc&@Im{WMnu>H+NL>E`Hm+}q*OyKea7TYdGF4bnn+)C%advnwcmtNJ z;MfE7rk^TsUMm|{#JW1FkR<4~E)zoFMpOIwb6T5MG`2@$t<6ioG*IH9atavDp($W{ z(wi0t10ZC0nF91?4eDqmJ{qEz@L{_sLL*nqZSPnd>1YbkkLJ#s_79kzt|}wth>pt3Qb#?sqGXfxm}Z_z93bGn;n3`thidT^ZFa#o z$70sJ%DgnM{+}&vUH+duxr49B=@vqfj&D%kG86fhtR%AzP<!x6eacK1c4RUzOdj=Km56---bbTxcE38E8d|THWP*z}*C!odwm1wjATvCzL}vGZ$PR+W zuunRrma!S{3GKjpDgsA+w2MmZf%vD262h7nPnT<3JzE4p5tlVY98${|LkoH##~q@2 zNCusd34>n|h>j74Y-Z8f3lVbCO3Bk&tSc$2R{*JDf4B??kNzm9jhZ}d^wovsZWePH zs|S~Du=g?8^$>TeeL;3&8qw)sEg;7&vc%-<(8)XqVmveJ=UO9&Gh4hh_fEg%ajm?9 z$F|Q)294}p z3Rbgek-5kQnUNg2me1H$f%@go)uLlt-XuZeh>pa))uK@x;m|p(&oK+=Y6O!P$TY&_ z7U+i^$B1v}MBKC0Wt7QmFmdwC+1#LHxWk&ln&ms)RI4zAg3>yztc9^&Lp!b>fhf{J zLT~oj=9JiI%)@dOPP6)?CnrVgpJdiBhv=#woK7 z*(oRn1oyCx1P%qVQQ2>vv#yE2R>e|>^?xW9$)@;jWFl;eO#Q>oDu!lcEl?;uB5<)$-fo1c|O(aOB z`%9_pdLu5E$mCPSTcXX8&htB(^-I}+X#%6AqkSnT#Mt>=B^hDweW23+QfP>GNRL+r zEL)Tt+>f(qxheL`;AP|lJFIb6PzA+R8UPMAkm-~#!&rzqkRT~t>Sl_V<$MPH;-Zms ziZpe=LzX+p2lhLqjT@ue!?`;yC#61P$1MJQukS&^P5H)u4@{|YitW<|+MC6}Lx$q$#R0$T`Rr)Vnl z19z-~!S>v0$)v?$Gsp2%L1yV}8H59Z8-T?wV(tAm2FHn3 zH??#ZfvNetKA`!k1QI0Zute$W>RYtGxq#`#-en#y=XAhq$uD!K%vG;`vr{3)LoY4 zM{sMv(1TUjCrzj*IoUS}nM0TZOGgRwbTrp-5~_IejA4=U0@llDpz2mbO%^?}ZcD{L zzACY^RC+M7f=S!08Pc)E7o~edHR3TFFM4hF|HjXtl<$AO?*Gs~!vhbhHHi2i%=dDG zVFQs1tmZN;X%4U`rio;6R!~ESR+rhs=@<4rqA-}28@+%Jr?%Iv{-~Ih zb*C?cr~J{U^P=PeLeHYR!3)VSvG}?#G|VBB@0^t!_ZDP4|ATON;p8#*QncYb_;7GjjDMUIXOtE*@V043ST>BB!K>kuIQqFx; z8;(6%u5IPzh*DY!Iq~|YC^F`K*s93Puw%)m&?5801ow4qRB<|HB;g$?c78{Ei8G-a zV&2SyHElP^Ro^1Y)(sIB_U*ou-!sMnP1NHov20Rn zs2KR)ne62SsJq@UdNxBM5MdFaTu=RZT*JAMa6z)7mSugLk(R(@HtF=s_ASPywyrv* zY$4&xGDWtI42(4}w*%KseqCT%E>}hFfow`EN8Bg=zRL>Oo1F11vE=yV3=Q2FaA{!w z*uk1jQCW{}%afmQWq+n^if4=H*L>UfGQ0+x8yaKWL?p2yDkWgVVCD-DVX70|lIzz= zCye;U&QPM-5_fT5)RMXf7|a(xx48sm}0*uZoW|&nN?#F%N z-+19+{-8hgvF80nSuW9&wjr9Gbn~INI(;kUA_W>U-if{8j(B_B!@D)c{{8DW&!RBA zab<3a#n)SC`=Z4uic9l6L2sO2n*k1qgY{A5TO;Z4OQCpBkF*nybXdRO;B17*qmQw- z95|0->ZZH!y(Qda+yA-BPx8FA1p6%l;L3a&`cJN4`No+MnBch%W(!oH0VaqRA|7J+ zQOlyVjMn`tIv>b~=2~2WCJ)}m{}Jh=&4rtpZ*x@~|`C17q{pf@q1w=w$S3F;DiEijGy4q0}SYXz@%>&?Cc4;r4_NG zC)>V?f2za!!r*6N#ef-O$NwLJndnp*o_h6or+piazZY#i;8no(^C;HKkcA{$O@^DB zWZmXV`+cxHS&l#EC;@_~hAsB)`oTXg|lV}>xy(9 zL6c0Zd=>ax;~;d4HD`CJzm^u2JA=OF6INtIpG}w7jAZYcP&u939u1bzG)AI=N^tf00~3{%I5#!4n06>8f-{07>9KGJdtupP01Dv&C| z<|YM=-f8m$DTOo+uYaaXw*6!p;9#2FhBNpDdriX20YP2pbl6WiAKYx1-{`_D2_uRD zKn0u#iliCd+6qb`ehRWzc@?4%*w)#{&T@)^!|^a+dR}^Qk_T%Z2aJSx>;cdjY5`IN zn!~CcOGM@n=rXOQ+gsk95=j6Q-xof9xI&G6%4f{A;w-zT8#b7DkW=y(niUTn{1Q;a z7~&y9r+IRjPCnXf3yL~v>%mnm(cKVQmIap097g^H0Ur@ICZ>~%#b)joY2NbDw~zF3 z7X9gRa^sst7SXya#Yb3>@@m&O>|`I}1@Z}D^OO{&5*9gk8aE2ALwHB;OJrQ74x&Q9 z@uw*zguK@&Ez((ey~cg_yd#Yg!p^@76*VGkY`rc~0WJ$TeFBUvRJqElNarl!uW@)` zo}~riiX}Qrw?cj5zI_x=9Z&d%8QgRevnLx~tf>x6<6N0>;0^{E8!rB~Tf2E__&e^y z89$(&4Lh@%F^ioT0Mdkw+#PiW~;5AG~=`yF@~!p!R#*qZ*&V5K88yp?mK@~WpIoK zzH5VJCT?3b3PBy}9uJSF$2}Mm>e+rY9NYya?oU7@6^@rTqR@i@3eCj@%Tm>%I~~8k zJqx(2*{a~jN< z6E89+H{2utRmEqL>Q5{dnHOSK*X|OedUn@y2)87TUuN~8iQ2ecjey`L484FI#Bq)A zF+>IfijbmqIF*BWUeU<2<+5DjFgO~_`-;$rY&o{)`9LSDXcH3cF>u+>vb0)poIWf4 zEsbQ&L`_QhoqqhB#|hdT=E(@<(G&$Hc@wHkn6r`G54(%->572d85`X~rnxNkfkn>8f{Vgy!TO5k}q$2JB>g?}# z+}ID~jep*csMLwqom{xU*{59n;GeD9z`el13x+)Zy$bMW-y8=LYK-fQi$-Pjh*WOJ zIxA;KNXi5?1eBD5itZm>XhMud|Vk!CXU(7Bu|5I@{!k4=1_;n8l(I%>tj2Q>I? zMoA|(>C`WlU^yk+kFnQE`GrZU!tQnq-s92-xUO{^r?AD-!+3yAeuA@;X$=5GXVavn z6{aZwH?z50BRpGJRZ>K5R1!sfC@bpcPOUOAy#5aqDmAE!0H3OFKlz& zDyV16S#8TH+<9;@%hJ`o1|g5|GE?sG@=AH=w?$L70u45OIXPLjf4THu{6%1O;@XuP z3@-$KEbIP)J}Ek?d#A+FT^FQGKEc=&&QWCj2M{6~GGzJ)fEkdVq3eg$Ykho66EGL- zP(+XnZ@R9Zg=Sl>{anbj)qQk+!uA@;k{*SVwFX@uunnvY$u!?CL4|}X5WwoBS!FBU z+%ZE&tYN8qjA2~C1#R%bdb@&z4mM}oX=J)sEXc+eq@$EUUTCeb!B9RzVS?-lb|5-Z zPOrY;Nb#NYk?NdZTHiehEG2#~m6hp3(&&Rlf?h&S5GAHb$^@8>D*>qA+wH-4G{0_fG7+Jd7P%T%&+r6?fQgk_W1Wu|oooUzk}W`tVN%2Hu=V7$3&Cyo;q2M# z(?6cQeDQ^{j~WZ>M6xQKLS@q2Gz*LpFhsr6X~dh*F~9JgpJRVhUF8$18vvf&yq0$f zxd+Bm<%f<3>htfu?GX=bGs|*c8sA~fgRVnwTIat~{ohZ=-^)?56`ZiYA+S%6TwBiV z4xeoc62}&#q72nmY*Ah?Rj-Kx0_ibrd`F1FA`*dkRFMxTkQT{k;4L(u{S$1Hm%x=f z(Mh4-AvXnhf>vbqdcg;hl+amU@3419Y~eXyKqyEu|HNpD%bWorIl0_HDzlyB`~3m> z9j>oX*}{6FG5gD;(Q?9&Lk1`vu8Jx#G6Hb>i-Kc`U^82(?Fr#h$yM zuW)j9bkQ5nyYbI9cbXBL^$R^B{Ssmtmr8LV8CO-66JSPX;v+%$$xfo4H^%7V0GigP z1gFpn#3$?%x!#AE`i0==s}jplN``Z4kK~NRecKI;Xg<{A0!YY9#~Up6hiG>RLdsqL zf&xF9_avbO@tFFCzw|>LOsV39@P(|(mmJMR7jM8j)z$wt?^FbnO93R;`{KwjIGGxJ zUq7k)1Ghu&T*`pEFKlK!oHoIM%GwZW6K2F37Vk;nYQX%`4KeD#Rg>kIUq012MIaQG z`y-&aqbR3|O*Yzt*{J@5=A2~Q%68MWbrYw^R%|icAH}LW91aa&5cAn;v85q(399pO z*yKNwr^#!98-9WIgN_VszHWgcei7hr6TTWxe0|f^agpenzbR)@Kr!%gkh4=#x0G|t zRJwVuV_3v+O5AJ%2&Q?geJi!aC7-FtAaA#XDfL{15K=>&aBsetJjz<) zr;P&|AC|K*K(e(>b(^AgcxyLUzKSTs+)9?sV`%8 zM}#bNm_zOsEZndc&ODGs1?v-+6=Bvm_-0Z`ylsAjHwa_H6t3~G-n=!ZSp?+f{h|4= zxXu9&yXYa*OSX>$lZ@Dpx$y3{8`*PXc0DuOF zamy)H0kaF|tee_*4*|=hk@!8krp!A6hx-oX{a<>pFt{xK`!7u_@uChS#?lHrL#=zT zezWYIRoI-Jedou5!e8$T2e;G2$nI?u)&F?!sd}F=cx($@kDO&m?XgOY<2r{1(a+Ko zc|8I1Pdl%uO?eVwC|tfG&|pYC*_g!jTf}bmG|M({(Cr)GxrgbtPk+>Oqwn>v6$RhO zF^1sN>Z9|wnA9aPPUEdLW$I-`p>Ptts?(v)KzYfQmr-gUxn1r;=~wndy1%aT$wz}& zmZk`d0Ig}s8yfga`~q@*y=6eig_d7Y5gXK5|nccG7B32xy9cb4pi>j_s{?hrJ+Q$R zNrznaLDKM|`N@JebmCsn!nQ8OZ_|$;%eWu7jj1Qita4h5#S*=)A={68f?yIZ#R?`T zs>FA?I~-N$oAF-2l5bZC^w7n`b)-nmEm*1+9Yq;@^e8y^7jYlrVTV$P!AHi%UyJ=s zsJ*VZ7EprAKBW(j5iATE2h5s7<^gb6OxM^STFoOqhS2?@EdC=~mJz|@X-gel+!=5m0OAh603y&Yw&3j4&sVk4ipB(W zoKL1m8!Z|fMQ`lO5XeutSy=XZd3Su`_|@DedLXYzUsU z(r=__8j(=^i&(ss#M?0t55?HG-fer_S$kio{k<>DufE@QcGvB=xL8Gb z;dN#uhh$%iTn4pMqw|c;=!Mr3iD>Y&aG}s|oi1$Ci-VI^i*h@@lE4ZUAM5naOHv}N zFpd-HAW;}X3>KX7TwdO3tdaIy5^+y5ZsU1?49{S51#5dl_Iz+>hVHcbIE{kAhX;=i1JvpC>0PDzq#&O3dqXs$w>Ne7i<(zJ ze_#peMaO{o0Hq_WttHu1Hz1R2j=scrR;1t$sWuL3R1z?h{q8WA+Heo`=!PdYOj3{< z4hy1SMiB-D#3e@}6WirUGIr9T6`YS=ofaZ?hpB^CLCwh_FbFKw?fM z28=Wt845rr05~D*cyWhDt`xSgrDO=k-Dq3(0JOcz3T#E<^~8Y{+~KsAbnQSqV#P(F z7=Rb((o;)sFx;l{0Q?}*QcPK$))@_ld(+{Ju!uBeX&AV<>{up(Co;Z-%x}O(geJx? zQ9oO6Y>JuNXS%g2_c12Bt=LG< za<{eI^SD(E#go6L)&(S7+Z*2CLCval<+t5vC~*Hb$VIeuY`W!2Y`r0<`7dU*I6bg3 z%1LdDo7rLl-RI%x@Y@9KEry|subCF=4QL2Z9eU&`olbxWaB`jafD{rPO$((9MIzWY zjhB%(pt1N(7t{h5p&bYn`8+@&LNX-wAe?laBVl-esb&X*BvtxLT~aF3Q0JSQ&SffV z-L}?fJ&m%RY*3`Yrc2NscPDm0i=eBW_Kmmm7I#+=ns*Q+o03rY3W>1oya&;);z30K zyc7nfKM`q=L|yXAXfE=Ky6$R*h5fZ7WpwEF^Y2BI6`fjbkq+(s{AYEq*I2*4?)udsv5m2=WN!!m{_(C2FLUl)8VWDfbqKa1un^9Q!M=fCKP0yq z_LCZ6Icq!hnqG;i>E)!R7vr4s>l^gJGLJy;8ARDz)O|ot`A?k!W^tTS8AEfw0L1PlU$wiV7(_P!guI9yErQYEbTom(I(a zPdSwsVh=gfwy@UrGDBtBl9P;zf*2BGJT{{Ik#Z1m{>W&erhQBi3!5ccMDN@GMEsK-sA=}D0Y1N2r@k@Z~HE%^qs)W-ZF|W zH8SRUB{`?OMRNZlL3Ew+R(}4lj(o5KjW=f{)-|QqN=BtH772HfW6y0LhA}}WvA<^j zQ5X6D(E87`bMxY=9E^U`(#V_YKaWPo-;R#I`M*Xd50AfjbaMRg@U(+u37yS-r=~?qiCEH2b_R zgou9vRy^~9`1P^_zC*vF3{M(iXCV|sK-jw!%n`;Hh}JQIh?D{kuj58C;N?aNg)l2J zAyENj?6bF1ziKKBSGkt4repxM>QK__HwinxXPG{@X7wH24K z5e*2nfC?>_F|qZ<(*?{p9X!0Cfd%J%>CYK#mG2=RSxRl4o_+sj@Z$8{;Qha%0sY{&U#Ift2&QG|UY@JDrFKzhXt3Ch6vfVw%(M(Xvg3e@2BGWSmhCOF11|LDJEog8gAHz{YcOfCB>Ahrm_ zhlQO&O1uHw&6!{9eVuH zhlM|Q==#&z6FLJY_>1i&hqxd&L~mx<^cv?8KYQ)Z2vCOL6Cy~dUr;j5AFfmI#qe(l zY#^U(+n}{gNjp{6L3b%_W7wnqPtJ{^$6S4Pw(o{$BOt+o?%Z*0>$=vhJGOflx8^dt z0Z=Z=q2^8wwgW;xa4U-iy?HYy-51}V_muv(Tvtv!`H%)$QJ|^>pa=*n-i&-uD53{h z-DoX@LIHh({n8(SCTHNE6@gh!r-SNlKF?OnxkNuiS}>?{reB%L4e65e5@vVQ2yB^x zGkC-BCS`?Q`elOuHRSb{PL`OT2fv8?xOj5<>$wbPdiFC(4k?F$LyPD(|Y~O_#5KuaYE1FY(v?HE=iG%tMKEY5>T5(3XVdCPkR)w2uD|LE;X-Vc#wM6;yrzh9-xP!H9dxPI-`(}q~2 z*0oFgkLd`xpS;MVmqBqiB0hohfX9@*?`1*cgGfcv97w3HYwOoDhu2a8?&q6Cz2lR)R!{p5{ z`3~f0I(OZ-OH{40!7D%he)1Af{I_N4h3zcAy7C+D>|guI==Z<-9k@5%_-@^1mwvXc zGuORYtrm}uj&5&nhag~wXai2Bw~Tq6NmdP7MVtN zT&~HN2i_fEOPQvNRS+jb=I+<5X>;W{D3*t$Vn(Aq{6O%1V9L-0|^jT8xr;bAXYfw z6zu5%+5y_N06xL|X%)m!rzD@O1iUN+2d3*GNny>*Npo-vLr5HnaR^t-RXXk#NO^YS zPtL$*x0{1n^|^r{J}gHr@Mcn#C7NP% zC_Y4(A|%qEQ&Jwth`GUcSaLzgjfQjXq9Qz!o(`R)dH3gw=uakqQQ(2diZl181CDE; zc_4={@!TQ@7Ko}ikp$Hfe!hZ}i`K2X$-MBYh<<8`rR}`#1qujry5U4&q6tah+BFqT zHLg413~QIKzxmVRW1lkmC`ItD&$UO`IWD<7v(!)3idLPo$Wa9fIU_Xp{1|ZGF`47q z4-G;j@LCRcUg7NO+=X5% zG#=BZ9>h9G0LX}bNdM3(Red(T!?NZXv+&a!t07<8aF!-)jANtz%wyh}*RL*_=!JbQ zY-iWz5-9L8nEf`^TtU1ll@xfX3W4B&?1>8`ft%q|nNO7_PHw{QvMLvhoK|;>=rr)& zp;q|gSilt_suSbhQJa*7q|t-CXG4q~|75^mo>rX#4A~T^niAV0zNKY>e0W+K90;#x zgdHFqfYMfOhzBNHi3uc03zv6IeaAgVoIs@)Kb$YQ{HfG4wPC376tv+~$zz`ol|{bt zLMlhTO$q)$gAJ+!N_Y?!2-FyCbKuIVX!~T+B6FTHhr=y0CxH}oe7pGlu_~8RN4Wy7 z2vXatr0X?nucUrM8}^@>idF-Z3Hq~(nF?|c28;D_0q+Tk^QT6_Yu8*X9_dCv z`sRK_IKT=5E-<~q_n3i=PA_-%lrZnB@BINhF!PH3L65UT?+hY~FJ-*-fL#j~ae|5H zmn2{7`zxq;QLnLqZ$=N3r(P3HKD&qi{?O2LN4pnOV7TlusWve6@R(UGzDA%BR*8C8 zP)ecV^>Qli4$`&p)=L*~s186}y~yCsL(B0Lx*pCn@9c;D1K8C+49Q20OZtA8{BfB4 zYk5;t;BX+sD4{-GUVO^&j)RwgT6pnxSx$z@>C2ZdJIU`K`dtF3h+%Rv`quyX`1l(k z!-DB|x?bpFtrupaMh~9R;x)~FiGUtJ@k%Fs?#tuY708+ft~^!&M!*04?~`ZGe@Nb+ z{_*YWXJ>G=NyRUJpTDK;ft-u4*@J2(EvZdf_wDN!r+$3TR$g?i(!Tp+=5NM4?I%C@ z{Q~dmXkHNx2BdooJ_F;T(wf+CpBeAqv;PNDJd4TAJoQJ{95513eWFJAH3Kk8m9Tlu_6osNGrma|)UJtXf`!ZRO=;T4^Crw;*QSeCZX5JFk~l z{Cq;WTcAdhG6Dt}>sONme|?8D>`f!)E=Japjm z?DOZFoX*PmUa?7~WKvyx&}}DTd;FNoF#!_}oTF-T;|B#NbVEJZiW^S0m(Iq9K?3u| zHP3)yHm_*!!rMZ2dRb6*IyWr2@2(~H-8VZVXRu66-Q^w_rea5ItlWV)q;i2=U$QCKm(u3jP`*-e?;WU~dT;M$;T z1V4t`18gBwL9vVW6ReSpTD(I;8YkM4v!M(VtrGg!H$`SEC4UgvL~ z87DU_*WhvhLQJ@rFxcZ4ewK~tt6}nmFW zk|!gw8&Hn86fLqb7I);laIhbjcXV{7Ic7l;>e0W;KRZbmRGk7m)mUp`Xmn(`S)Dl* zq#d`5Nx_f@?>Jj;!XQoz3ib?N5^0{bO3R-z0?$z8#58JJ}RB<(_0?2W4 z4g{_~?J)wT@qS}E zii-@Bkpy1YoYPf751Hk}S5jhPiVMC!<0HkQ893SxRkjSOfktU@MZESogG~>n8r}y2 zOvKTVq}mbdrI!R;v0t-t1rJu{L;MX)qU8DM?Af`#1a*^3l(Vlqy+Y`^c<8AR3C*~P z%WspM+g3uQ>2{eG;=@4-qeK-^>Q08EtuJy!2owfayQ<)A*$J0}Kc(%%|EEL6MWE z1d)-J4trMB?ZVi~tLPU{@A<4}T7<>>^{p%#C7nl5&RH1oxt8)f ziz{OEo+L+yP}(9(S0NCR93E|ZIxhI!tIscHDtlA!iTNuK`19|+;KC{oJ^_+t)q|~n zfy>63bWz_z83;jO)1h#Tm_ta+!ebyop4P|=3J;4f?S!8o4mEnGCZDii!dy2BRA zY)am%AdZhi;vha2cXq+?!57s|gKp?0NKDyyo4Mfq#SE_k9j&)Z;EOStI2SEMcxSy1 z5C0}*yBI=c6#9*X4$(w6NsPEzZm?t0u`ll+mm&3X4@k_Y=G9LpKX<6c8eS?_Oi>C( z_(fj)l>hwG@z0$e6FjBB2fw^?^3@2w!dg=9`EOVkbs_Bu-x%ujh~Nyet|3F9#3oejZHUYG6Ob_$ z>CyTRv;{6dz)n&fTvA@?xXU#0;o~fGe-{;%c2qMR-T*X9n!JsM6jQSu9%`D zpG<^2ST*PWXq+ih+yE0I!i{lNKvY1xAzMCrJSPlF^8?e}XN@Xf^Zu;_b5O0)Mq(B^+ zl)DJx0xy7!CwIBdp==w{Jy%|p#Hxizpf9PG%knaXsvOn&a)5=k(iw;DZ_4Eg;!07q zLJ65xdmuG{b~1)t;Dm8VF&AG86>5qX|A`6WK~f*CbOpUzF>-yZst(@`T4;kUVSRN- ztoHLWR>I2qb}Rj^!E|Xl0shMB99?)Z(Fxj1_uQP8`Wl55S(R%l*}l}Gxl)IZt2a>D z8OJ>*KP$;{%u^#y2iW3lVZVXckPZ;=VOZONsX_a7tG@xnf$$-!Md+V5YsQ;UiJ%*! z?#BpN=Vdzh>P;J;@|0DGs32VDG2L+(q>sL)Dx}6{fS*U#8kjp|aFH0VB>p>~v&_LY zQe&{Up&qS+oZi9Jk_w^SCEXX#d!Z;Sh6nuvprugI*N-^)A5Rl%B*tt3X3Bp)D6d$& zYoSw9KpLk^_O#?M44nZS)*pa42k*6&Uqn^SYjXAUDoSk(-Aa?OCa;cTN^(7XxFt~2 zR?P`wKUCfdRr|X3(jh8VkhBV$K$tLsyF{-KK3xgFDcp$58s%3Cm>9acrYl25$jX6% zf5--IE%o72lda3V;2iFT-NA?v@P(hXI@8EW)!-Tr7*nms6jPjC5+O`5IARN}eV0eS zY1`zyu9jw;4Un)dY|VPz-q5U>t~v8tGz5FFn_q+?c^CX?0x*P|EQQ(hYj>G@VR3<& zgRCPeN{mGJ-5IY7s>uP7xG|hYyaU&fFi4@jTfmD@oQ|L6us{! zV&z?2PbMe`(p8M3dj9+0E3k!BFKFo^_)%EDAKv_-lZ@#O8YdU(ULomHxY*hfeT&XW zLN?Yw>k6xdgoc{D6!`tUe9sr_nJpYs0`dZ(bEq9diP;$WOmG~`POl)D9<$T!8?5b@ zuaGp{_X~6eJu7}1qDO{~4&C#}l%px{B2o2&2Ywd#5kEC6!0kh~Co|w!5l^WD_+N$k z30x>t;e3)-D=0QVdL~8JIDp_c1%Ma^^-9b(NsmJmT>cq_JI#IvsR;7VxXIv?t1)S$ z@aNf>L}Akna@9d?oc}iK(6ui3sWAxOXvN{+!F2`s?y>`afO{EZ0u+nDPyr~U2wJPD zB+!k9mK>peg68!0+4w;rrT#FI6GRbEKhtsiIOa}w96#RA_q@@q%(1*(;WBkV?{H?< zozf>eda%u8?RF;6&NnIPS1dr6$uT7ew?Kx z1ifJ=o)F2)!>O4mMlThL`)hj`JW~RGc4o!_C`{_9HXS;lr4d8nDKMcCxbS$p~xtgtUQ5<(jzZi93FGYv3dot}s z@DkXM_5u9wNe7nS?kt-a2L+jDGpF@6t;My#LNp29?TQ!YGs_Cm^MPV<50>TaV4nU` zE)U3$(YIA1l39wNDDFKPh9)Cr@F^uPAMtHjt4W+1gaVI|k5}NWA}fm`mb@9b`lZ5a zk(e478KP(|&Vy1Z9psNc4_E2Z;j`c=-y)mj3LMZ$<64NGN2)) z%a-c%vx*LtX5zpUfj`NG;c4LrWc&q%4-#KY!in$7C33fNn$;1fSJ|7N$W44JhvD|2WIY4y?}(T}X~RZPl|O|>bGaQ4VE-Q^ zh!~j9G3#g@5Vgs(x3Bxj_ix^vzk7DpXWS z>2`B(A3KgLzCECi4V!PH5m~qT9`5eQ9)=&Jylx8POTd8qG3Q=sc@~u`^Is0x8USXl;9FmBa*%UZ$yy$uC&>Idf;S;NA2q+2R z%VLm|vz!7(rV0#%!W^E%6+@Xw-<{;k$$Ab-EbCAjf`b5(`m&9#olmg0k(ji#)}UyB7+qR}O=D;z9>p z6{fc)AsxP@d|raN;S5!$$ib%QGAy6}UGUm-gd3v?04y9o4l57XE>M3EQ=toujFjXp zrKa&$M<)+Pof?XwLjDhb(G&w&<`qBWRRWT&C_^>lvYH`a+g}}15b_5+6VApgqN0L! z7LxZE@06{JU_%pi?&{1T26EO@8wDI*1A?jG< zl#tHw_ESd=;&Y%+!YdQ+sLgI1@^Ol8;dZ%oq8I|XEStcguWmrV-IBFa+#Ps6ch4@*XObqIW9noLw)j&$u zd--7|C(Es%Bk9nudc7kKnSk=5sb|~-s4IG{h-B&>_=!2_aXLu-NBTUrrjPi+9Q0zr z@}ZDI7Saq}ZknOJlG?OhrzSv+!cTB9k!Pfz_|A}TmX0LE-Rnpj+^{E0y4D*%Q``+i zG`udxwOWtb!w(crVAnl{6FU8{C0R0E0#Y4iDaE<2W+ha?!)GuxlYd|HDoG?HvXSv_ zpOx33O&mmU5)6-l_9dhW`HYj?Z|*8oKJ2f>EmSWG5#W8?sUDZP20;#ekc#Z~l9C1M z#c2HsrL?m?}!Wx>KUIerOH2_D_EmV>8gJ)>!fZhod zm+VS9u}LI+0akVWMjLe&Z4ygEN|YkJARsOx#=eZ8A3^AP_P_`4jH#ppQU4>$GmO!qvp%pZ%z=}h>o zwl36Haj`sEc1%MY%m(4~DxF=4RzltsXa@74QB^&-2|qZHU-10mHXG;FxCV6WiXqoy zF=kCCJTU3X(BQN=NKmkQ0Rzl8APBZE0Jv5$!3U$TcX@_7#R`M>mH=&=b7eo53AUlFSPd-eJ2 zB2&LbZ#S7g{z#)(OskekT^AFOG-_8WObP|S5y=g%d0*W^I?r_2h)*Ntqmlwltg7bf zB5s zijKVzVBtXD>8TP#(6`7wX;UeKPn=D>A_`S7O}R#QMH08@lNdV!;xX6Y4#V4TfsP>6 z5rROtL54#X85ITIK0A!Jea48K{||%^;V;vH{}fBXXhfd8n(VQFGP#&r3(2@A6Kj^l zUOWFiy(npWQJ3Cybdo$sMm?wC-kQ$`>sH|c)Oype?ax)|$i3&69XxEb@RAx$ozgko zq-Q$>@@+E8MD54-W46Op09rt$zev1-MHB#{Yg793!Y(L=hCpWs98()q;=bBMwK`Ow zYTZ57m3Gn%#*kz2pfG7V!MHUyFN~8NAZNz1H1FBG+k4%UF#Hy$YlzGOm)kPcvud*O z&>`vc^aol+%lOu?%GfrMzD?E0{DI8W)=pRcCXV?h4YaIs}!N{Ym7?%1V zxOZZwFNkgd1uc!9&jJP)Fvv6&zn&F0B21yl!2kv!XXvU8NyCG;0NLeeVQ`YEQ z&LgNjYI7oS0N8c$xnS%OQxubvt_uH#~O z7Uk`%!6}Egz1+oeE>UCU=p55h!1YLd9Rj^2{jLQ@ew$C?eSe{D#Lz@I?0PR;=GW1w zuNyCLg#G@%&9pjZd(K>r=!*&AqHxoX{b?OH@?WabNj7#~HK!3AX(RHaafS|HDfmDV zh@LEK^yng6Gs{2qv1vgSycM7xA;@I#FoLrSsZ_w|y39g;8aPu(!@Hw+oyNbfLYP4V zK{2KeN%c+21Y-0^4@lzV2(K-=&3O^*(tzZMdTs>MLQ86di;-(V*2oli5l0Dr!d-`c zFxl%}KK4Cl)StTC62yAGu@IfJ$+Lwp#Ss=RE5)b>wW&ZiOk z?QOTLw_D5m8Qyh!`I`;Rx@}gmp`qI5`|w|5dvL&x`~}C(IVu8i6jy+#dQ@`d2HDc$ zVh>86&sbG(#N`>G{l4D$@0K;Q3+U;1Bx6Q4@yO)s3|`|7DZWvh>@U zLHCp{5m)!P^M=^)u z#2zJL$ROUyk!xulqbcN{QVO=$F#I3Y%Nv|^Py&S!`K~=QO%Q=yA!zotBmO!1aZ4N; z;!1>io|nV{HmfgxP1zOKk@kC=?`Ro?YOSN@2^{ib96iibvD^U%p}Jb{}$Y+pG$CYxKkeYkmV!vC=BZK`Ck*4NNy zL=Sd*G(9?*9zC2MHN4?25-Q8~REmacL>~eHf|pCrDIOuV223I~Y4hOCk~Dd;YQ|!2 zja#%Rr3}~}p=9=7P|wM=#|Gp@@ziTfGCvf_d-u}M&#_mMX>uvnmAgJrocf^`-Q4B^LQ7;~FhiaV(DT?pj&_@pX=kFVn`-dHAiLV+imqviq zH3FgM8Cv*_FQ{jq@VzdPRQpF#YOnoN= zB32v#7t^hBRj0N0Gjy^J=%kX~el`MQ1>;(crHNu{QNY_ne~MO2c82Kh8qzokxDmBDNi>?JZQlt#kU?tRpy zvuODgc|fC}rH2~Q7+WV0yHlhCAlkv0ptvfYnK@P-y2Rp*%R5t1l3_Z;(BeBH`_Ug5 z#K=KUt;&V9huFF0)gDO&55p7`0UFJ|(OcLPj3&h55~3HO1sy@ijMpWtT$E*nhl1%n zPT2|CPJ`a2j?^Ln&JKuj#g|#A{sPLi-xmYOX7IvjB}CceG>jjvB}=M7tifzFol~x6 zz$UZTZwc1~4)+|$N>HrOMiPL#S3p7k#2lE4%eNuE9wQ&lP^#;sNj0jN@?P+rLYlTB z4pCIHvlWTjz2l&p4I>SI-orQwR^BEf5DdEwrW}}g!_k%=xxtQqoO@Q_P7&e8qWR?2 z^9};@ZUC7VJpC0XRxwCUSjqR`8}1P`ADqM}WX={0dz)wv#o_A9OcKpGAA%WjmG@2@ zQErCmFzl@pZ1KSjUhNwQ zH6fzm1bf7K{Uv-w_je57b_PACA{dh=@%%5nF1s87R?+_tU}SzD<=w8ob9+Z8gOUH+ za5(fI`LFYlfdEojVD;J{XoN=tKq|Wix&AcJ^1<&xTE39TjyK9qTEaUBxr<~b`BpD( zCO;KFlY0?g7-)7@H|q*-Xn;C}&H?+5e+X_u;w|+;F~+>`FN(p(pAD%`5^F~vJITe< zr~Y5Z1aAh258-=g%aHdjzluOTg8|KaMNUI5Nrh;QS{JGWFm%aujY$qtM>C6DWMN0} z{8q?RO&dbprsP<@nZyoj-5nBw0B3V!df}IZ(xbhGrA5_Si2DnRT z)eZ-FRi;jOSt8FxBl%Xhu>GU66e{T1;Y!DALls|Ryk;3%-ujDOg0;}k9_D#a@swy` z;HRn|74?QDQ7L}E;WylH*n6?^DxKJ z?3Z}9W0${l+KhNbTogmFgl=u2V@vkyZjm@pOUg-vIoP3j~Zjfz5sy`;NGl`B$xpDg||=<4V=w< zF91djJ%Yt5@ic=?culOtQa}p8?U3(SP_p6?VQKaH4#+Nr(omISNQlOAQiTgeE<&TI z+Gs0{Xu)HxCRj@l?4m^MMG7%#AvpZY%xX57-lfDi9abN0hy!#EG5lJ;=Pe0ezrnBj z6q~~W{-W&C(q_Nwzu} zVe*lhGu`O^XybXo7)HxA%69*EA?P2CzCv+ZT+_}$M^|BLnk18((kp_GW&SDhD{Gyi z_6{B8R)|CcsSNl#3<<-BxZby3l~~B`(P^ z3~CfJAw!i>3NeOE!L%pFrevI5_Q(?p!(dGjA(1?kq&sp%u|kn-{#{RlgGxn!`xpHn z7{@#voc>9(W}cs8q|NVAKD6L_1zK48ZR`rZyi3f@s#h1#&P4GvbZ4oHP#AG=s=`F^ z8*J-Nd`VI5zZM4?I8-q4IxD8CBaBIL)8=a%~JV)()s<$Mag2rsdT7;7DCw?LV3$`wxJ<|qheQu|L3&VeRsV;Y zAL0p}1bNj+Uo{#H-77KJq9{%kT<O1`S z0eoBr;#vQp%An|owq8GtniUap5!^n+4$W1@>GW-BsKH7h?m3)w%wA|xH^8Yj&@}KG zWo$A>xg9O<#_!Z<2N!rom~asq0YdC4cBZF&p( zCSy8tLn2+ZOCgFvJ3h8`dg){%y)=d#xkP0;p{m+ICsm3jc!XLYYk0OBOh!E^!_xbn zoxqm!YiRSJD=_2L8m=r8g`H6!soX*I)m|?9K#tIDBDkK5U0>-b#)j%#6sw=hvWWAjT@p1lBX6QOP} z5aG^Zws+JVC{z#AL-HSI&~<@*wD^~k<72;4ik{e>JG_!Q2y@sG!DG)Q!{I$Q>2f-N zDE+kIEH108PF_VNpjyidiQDy$p>3QC;+>ynE*Y5Cm}0jZK`L51^k&t`AGTrd#qe!FFd(PRiwH#^EF`V{ePU zP(?UIk{nqSiEjoI#e5$i?I1Hv2!WvQ!P{rg|IKTH>v^`sA;0q{b|DOxs8_hk?~MsF zdQW|Krbok0|v}pas~)yy9IIr%~zb|E7;LggbE;HvQVIXIZft$jBafIMk;ci zQQM z_L8fx!c)Od>}hlznTDgc;~evg=^bNL^<1l@kj0+qZB9 zSXlOoSgG)2Fnmd2ZJ9|gWoGWM$-$Q5qUR~`5AMFtrx?jj?SD@(Oj@P>V z!a=8@0*^4$%6?)foyr`jN8$HB2=r+Za=+XGX(I znJ>erF^-=Tq76&{mdcO-O7lzO#qS#Lk~xUJLa-!6KAVEi`Ep%+Bw023{qO!cWH4;b zlE5U19=|AfE}(9RAE!}rCm@qh8JVT4koZVlJ}m-QS6P@qZiOKO#wP>&aOv-@Bu@?@ zAd+-L@k}Yt=XIMz9oYTiPG5w}S4AaD&xS9{94S1q^58Awi(jWZH><*_9E3YEt z43TreY_u#ot5VJdie=5}Q_@Rl7{R}QT0@2X23CW)>{)4t=|HPdtKe#g;${MRaFjJ$ z0kn{Cpd2hClqfDOhab$GYd*1cmet{@xU@GBp91kelS_g_{=jTklw9PHAPm5X3FAaR zNb0P%?f)$PJtXy4C*EyF);I~O<$4Ymhx)2~w;d|Y2?r4Il1LY@CSD_3)pB8Fe=qS7 zRHpm^@K=+IIe+26KyIzf98v)pO&ATqbjbrL?yz*(O^Nz0hNrB$dun$->VtYt)HHxQ zGtO8@xA6__4FMndt@7%;9XEu0j)r6`;N(G?drfB*a;qHGEyo?cTCTGegT}w-iBi7X zY-G|&uxh2@MI(my6)o5W)dJ`=wi@Q8SIJM{@Xr-V9&TvM9d7t1%Fo?ZHynPuqYR7xNqcdvgo|tWA3XQsEv3?X zA8=~vhmf$lWs(Q5?<>}2k79|u8Tqe)oeyAS1_wQdG`Tw09 zJ^Rz26ZAz+U~)hI?%N~(zrnYU%sBc0R?YvEO}sup6Q;zsJ@8}Vu-}5);q7xjhGz?y zzCS)9oe)d^cn$UJ<(soae*Em+4^T8Un=!5652tV6CvQ`9$nu(WgYikQZr0u&4o`-k z(e9JNLzl!9oX_a|8?Om%ooISWA}G`#Ky~MDTcp~gFr^kehB|<3+ob&JS$?@B?ycB9QmY2x$l0wn}M1#B*2TOtWT2jt4S_zlNysK@$iPNJ z>LK|Gn1#1oI!d9(FmK>r!ND-IP9SigBgXmO$m!#{tGflW*Nna$T;8oR`4N*SP-Ki24Obg5Rg6##_g>2_h{uJCmQ;Fi?eorohw7i?GCPT~*6gna0OABdgGAGw-uZ;LR zO1!Y93oyrY<`piB`ahum> z7pl~ag&<)JzX205*Ip89E|5rt`R&@eIDWI>H<*+G>aPi)O7P^(`(7v!lyWxNSb{KP z@gPJ~7S)_&dVFY%xxMHh-%24aPzxcZ-Y1P&w-j2d*=+|&+@3#p&?DdN732{Ps9-tX zR?}?arDG~#7K??v0S3Q9ihL6lFKoEko#W%c$}$>$Qj1sRkG~{Y=@uzNVW=8ke?j#) zml(sU>KUnZT!520-M2=qyDhEleY=Eyn_5e@9sso0J?nK`VB(Jo1;BS~6@sy8*;?F1 zm$I4;d$wvZ%w>7SU-gp11X=*$e$ln0MXe9nAMm3w9K&@gS)mD`>XHxaGo>rV~r?i%ML|H@AjPoyUT0N_4m7N82^piBPb5_YG3}ghU9w$sXK4oWl~vAf#aMb zNh+P8Yq<0WE40*QH%bg-X0ax9}rX%JDH-6^a+=EAByL7JVHP?L`{PV_p*=^&ro zXR0yOPi7fh5`o=LX#;?n0BSu>!P(=L72~nNYjZP~B$MwA{ocE!8kGV)bgE3*TA&ow zv+1kTq>EJqE}?cpFX3XC~B=x8?RUS&Pb{%_Mun5Km$=`UbrSd$BpQa z!j2A{lz87yh0`sB&uEknglq5+dNCdNd3b;`aDpGfj69%OI!vIKJyt&yhSpaowWbe6 zd?Yy5S~&wse-*_!CY%sTz9$K0Kc+-9(hsRzJ%5gJOaSTD%f0u+{u^3a04;P!K(RQx zPeaI-$d)u86!wk~a8%7SA_d@#!df+nuHgXfMfD(>Bqw#&3~9P=OMbcS)$){Q5Eq1t z`@yQ@@!(x;+~Pt4GY%1ajnGD#98gie1GEt`(r(G=EZY$dEX1tI70LYT5FO1|N;ZM6 z=Grd6S=}HfBiDAy#C>RYf|}jM@+B1S#-FnR1@a1g=C=$1iKdOj<`qCWhq5g$LH^lk ziL5{xI`oB*)?2Hpx7|VP|7yJ}LtwIbukCv&owU8zZHYH(VF&>>`bS`rsFEPVWa!or zep(eZ2NUxyzF(4-`$d`zx6C>14F@;}jIps9h9+53E>Ip3ZD%abXamEP++eOgY`!tx zGUNMP8XRRMkf7WRK}WOW;`d@aA+K)YvxjklV8c>Y3;Er%v_iPqv;=JrWUy95$7(@X z^O6IFpaR6yG%@9oWpyQbG&hE7B?#h%?v3k(TL~V&G-rqIJ)+jTIP(|U56Nfux&!X> zW&XK+)Kmagh(R`XQn&ys=BT_y&`*(Eyr$PAXZji@3(bi{Q#PG5u_NJUG26t?As3a0 z?u^s*s$_rv>~1Ws4tU1Rvg>qmH;@h2$W(pKMm41?!`olu6SC`}Vg(lFMJN{tj%f*< zou>s!9?kFp_u8^ZHoeK8E99F2H#^zCI%xpU+95kO$_El3Eqb%5!`UWw_7xuwH@w>I zphwv#wQm*MM%B>42|#KGd-*V7mEHkBYX%&RTbRb!U*Y#cXGJF$PZzi;D73|{HW!Kc zd=(!JAr$;ix1jqpnP-{4>N8-Txtzu`}wCiRNO-7`S=kNp2m z`pG}xi~M`={~LebqYi{+fZ$yHm+#L{e|UEOve(+TFB}8UD{`f9Rp*D(7C!XA$Z~cJ zCwK(^I_V7E8P=VKYY~*-Rat&yjbaL#gNQ9ubWPPMaMh#yC{_A_AnO8xm+F2IqwFWX zZcoP}WJ#KC(D#OtV@-b!#A3j)I} z(id+lDae(P!Gx6cmVD|>tL}kHp#!`)d>?ue0wE4Hj5rHGi^!u3yo#J=v5I><>4q-r zbwqqz%78`qX23*M;Pp{fW?V^0!6De$WSLesAY{7Y-~&BPvsC@Pi`~*N2_m|rE0=fi z{3R;fFDiIsq7^f*XXRz6Bn{;yhc3Kwu>uUC`1s75 zxRR(85D$J;mf=mekc(n^JzJ;HdX?Micp`&Xojz=eGQNr&lsUNky zY@4F@qn!!kCMUQBSNxzR$^36R*_jYOuRsF(laG*QlESU!mjDX`>3!EXE5E3>@Z zOyVe$yx_JHRm}Z}!r-~lq>K%Wgl3OFFF0^{n1RBi06W{^6m zDnL;HW90TU{YyBa>coDC_>NR4qgoNo4;qB!N@JKd02RuWXal{v9w>+&0Jx$KuY*j! z@e+M>;{SE>&j~7rgNM|};yekWBf-Pd|4!yj(7ceh3>u zY%r`~J#JB1VWK7jl)YzPQvg~K5bf#;OmU{Mmazmf6}Vd0voxVxJ1ABF6df3W5N*fl zi=&l97%d|vh;Bab|I+{18>}`sQe>&MbRt$6#>-aXC&t{rkoElOWAY%u1?&EjJaB%8 z942}1=gu%F4~rCIedy=_6Yo<_T=l}@NM)r7Eo^~Y^K`N-tG+9j=!kg!;6XnaMgHu} zKtsT|r(f<_nNDTaF1o$2Y!t+E98rJ%``-tYJx6Nb_Pr&mX_+Ze6WJ~-H04rrX>x$b zfAAO)FWA9GWj6I6q+FyOc9L9u{zARV2)53W?=AxtziDRcHWJ(vmEL8w%L3T{CTYKq z_Ps{FX?;`tDz`tG%`@ZpVh}jWMRVP368`Yw5S^&j*VhcxqlybyjeNdH2@Q;Q6DS3b zlkvJz=5ntIp$_CI4(l(b93&m=S8zd1{UY6rDfq&178072pnf<@G%L511f%1 znV$lc3g&M?XE_czH>I#$01j~Em#~4YpL$JQeExL~Fg({>vMdozmfy#+hJUM`J27<- z!_xodNt;kVJWR)z>69gVk{lf>_Lff&C)a)Rd35sGiv>CfhezDDdAfcPK;ykcu7UOo z!2hPF#M*wi-Q2fw{3OYfe@VW1l00~j_aaNpyzZy`=j3T@B{iCsx1$hieSI&ol&}lG zP#1pjT^OA}AAaf8jj^~JKmF3^$%Ys1u5l%MF8NZkdR8jBfU1v#K+C{>;N3e%^cmz(^(hZCl=2lFS2DiP_QwzgHw}%k zZiH?W&a(5JfC^-Jg_tYxyx-y&4~9Z*8C3b8 z4rb!fM=$^U>e+|)=cj*q*+HiQX!}C72q{AY_B6mNZFVrpj(K`#a{@u*L5HL%$0bTY zfc4F@l)+tI3a$%$puBQ(POGU1a&AY!cIu32zNot-if!Us^}a;XDnFi4 zT3SlJzVRm*@Mbs!+}@yyV%SIG6&lci1V^w7S6J;91)k$bNfillNQLFRB+jd3^sUB+ z;4*`fsZP=d`$305+x4c_q(~`$dlT4$Jrcr*@i=IaTonk!>X^DYUX|l3FYvt$k#(tP ziJ!$~aws2?Ler({_QGOGV8{w-!;uskM~3(NFwnAL8GGEXFaUqh#EAmP(l9ELtaKWA zDY2*%`Dus%Kza-AVeM~6qEUF6xAe(zpL&Lr)=xRDrOdZ6?(raERhA@`ioL_y>}~1K zmifaC#lo{nq5xRHFrpV1#DHH>6J`@f$R(H&X+=Vg6+YR2+-U}mqBK7MTg&e=O(QMY zC(9etPIsyTyzaH&Us&<(V$mLPFf*$c9$}hY@}zV?dJ_efg+=*TMK4dM)&?JDOkZE}Z7x?Puiw5fTwRez+| z9Tp+>7d9{x=)uOnUN7_PiZg!M5c3uu#HqZRiH--a+FfTNSM(ciF)YhlzZrgdIhl9` zEr(?8Dj7W<{qASYeq}a}MZSV^dle~WNC(0b!}tm$$xD%LD`h>fQ@Qjq2Ob1mJ;(?{ zH3{n83ctxMnL|uH5tWbm9uRH{PgsS_Owh?P1mdgiME+Hlo*jK&3U0d!mVgDDU4+~X*4)gNhd&U6B2ww zIeElD>YMtQFq5TI0X$(LWE9k)gKRLb1bYF1&-5yzJKt#1HE|v-flSsVrt$(yYz7I5 ziNA!gRI!)U-DeXaaL1mori_9Y0(D%|7-Ur}8U}Hg4n{=elI)9WY33-$rxx{i5DW_L9<8=HX4bLCY>NT#?f**6=QrB-DL z(a2LmK;|Ej%Zp%fW<23IhI&=EWpHfj(#ym$Go9I#p?G&XxycIw72*b&BQYjah*HbM zR4EPxCNN^7VNQ%gtT>Rw1oc?`owPtwNx0`3MxIe|0?$MUgAlj3q*saE=$pcQ2*pX3 zv%AJou1YUg5#xxv0Tdf%H3lvMDKYIgv+PN}NY+wA_8NP)^#6rY0BAIUzKJCh!X%I_ zODIwpf&U#?nYuQ_`$e7*dOwGAo4Nsg!P4Yz;NK!I;VyPXA8B2yOQ};6DrNB|??qRr z*+dA`^!=j3I+USIMCw&pcvU_mk)%Nj_D`{_ilv-}GbkiKfIvdP7vH%@K zIz=iODUAfu!1QvvWr=3XaR}85=Ysf~2-M0dkVIfve9(||>T+Z^MX!Zpo#Vp_ZmXQB z1h)gO>Ium<^%gL5>6DSe`{mnW>hhynv#yz{d`^sZkX*gA)32_S5c1 z`wk-IdcE`*+a`2|e&lacpl!=$b&fe(g4U7B&0VSDJP=6LP0op2+aGS2Map|7r6=S; zWAZ?9s>NI3vuA>{jz9k6dbzHBbe7!?$dCGx3eP6r%P1%fTau~|w`J{b5399|L|5C4 zCg3#c8v|Ciwyf^aaMaqe+pGj)0ZTeqm4T4T9VUd4aI9_+p^H0QB0B$5zW)~*PM&MfJJ8)+Tu&xY z1_)^Kw30cr4$*wSoOxvkJf5AsKlQE1tr#3XpfWx0fIsinF+WdKtg)*eG`hV9^#C%) zet8NpXxc-+ydeOUv0Q``$FJ~bu9J+($1_eY^dM5*w!+mGG_SN+C@Bk=`rFcJ$yxyW z+@G*~fnGr^%&plpY?>RONiTkU90w z7-5H%%E(9WXgFte~^^!^WKtiRK7h9Y%oVsc1(dJZX0$d_n zHVbS|_*tK`khB=>xj$|l@@|0>56h{4;$uZ;jx1A|LpohpeF|Wj?=$!v9zsLLId}hEoNAvD;e}GWvQ$*s(9=77dmCw=jyd-`lW;w9w!GB!YF6!l~fMC zM7w~jGn@_3Sfl_eVY%a~qg9;&P+1_jCKr%rA#tQP>wqv~cz`K?gm+kRVat{B9s#pa zT>=Td$La1QdHILr@N*}K6AT>ZE2c-DY3La0yt)emBpL%O`ClT;+aJ20d!1cMroFUS zzpP(}2F72%__p6UK{;}Ms#FH zL;J{U|4+mc@fHj#H&dj3NIpbfwNW z)8nC>^5ufM78s+^jS>k(e&QXk1S}^8=CE=$E^xt|tR&|<2FH6fHsgj5W@D;8&Km+C zk!|}SUPq2-bZhs>B{&v@1>s6RXR~pfkxH+>GrhRdFOB0zrse~1Ea2cE8d9<3#XtL| zyf`g#DZE3T0Ni!+lu@zx7MRic#IsKjn}FwM^Tl5xY-oK{5#GYLL=flS2Ek3eUx zN)J~^3Ldfe1&oIW2?xG!47~`m83taoqp&9hJ%4FS96{`UHtV|@0$U|206c#G`<@0S zIU!Uybwd2Apvva>(8YL+b22*lUB~@(olckQg-xm@ZN>7Jzzk16B`U|vhWW-=CgbRNN<>QW%OUCw}Itu_! zuRgG1&@ynhTISbfQ8Hb&8rnTU1Jb7ct3O)g553B1r)*=**mw`vJ7fC|@UYp6+lbQ) z0i44+UC7wmD1t&WAs(+&b?JcxgSJD(u24Gx?_wm*$$~eSuF?z3)WbA7&eG^0ZB8H^ zQl+iIoKs$AkSqYvPR{rW*&yH<_RB)O0q0jGgrawb&Q8d#y2|d3ykCGYn=yS@PrOMx zIppMA;nD=qwH8~IagV_?A7gTO*77r)5j-S#!0+PZd77}HnRun05wcmT>ARG41)_wn zWg2w?l~GcXd1DA2G5p6YRfdv=?F;20>H%3OQqvQ=>x|18V))fK-zgp)Nc#yVv!sxy z1B^FZY{NiWge6QGq(y+2ieQa6GGtwKOy~}Ufc*_-D--0az)0{|(dNRR8rxDAnggO~ zpOSq>pnj?ETw76$v-=(a%0o6MibY{?4!GyK@U>KtM0|@v*fI=FqJtI2?;16X7|2Ir zu;`f73C1^Uq!>zS*%}R!p`ynJwvJ?Vd(aFOb($gZTgc1ngh_Sz6Th>CMJawj!u)2e zVFp{cj7&C+qBen!S##@hrB&lc{4&yEAic$O9VRNb+*}Zu@v{bZsLb+JeZJsJo~T{M zL+qR+^P%Q$-NzT!bX}g z6UNnGY>5Lhmvzz zm9U4Z21*tbjvpiSA>PLDZtLp9^12!#;8&Z9o^oGr4I@w&YQ67b0mQ(2))QwKrg~_+ zjyJng9VPhkAV4&L2>lZSQ8~wtF>t@SlUGMTxCWAjYue+M=(cT+pgP!Xp=D5O03Ns` zLp8KcrFbtu0#a2I5sIL-SLjb6K67!^61$6_6Q_v@@}^$94;;R$ z{CaIE05KtrVf$fVI1m&7=}Mr}8N1z?e|@p^FNQo$^he32&bgokkyNE<8(A{SkOKhw z^l{^8PG(tJtQWQLD1s>i8>9UtC5_UN38-%}a50>Y{?5J=pDqV?Fg11s-q95yU1*o0 zo>P=dnho3sgcVnwM#sPug_FXzrKgYN34cPUAN{~ghvqYdmtb0|u%H3?6UjrQ>9j{h z222=rsx%ktWBg9;A-QlCz)|9tUbw-s^kZdoED|`Vw_Y@Me~0mtJU|RhMO~rpy_xvI zA%YGg50qcdj6*9bBP@GgpnA!{q^wp42^nxs&`ub~Vd*N>H}HcJD`w*{;hJmkd_uqy z1@Jj83P-(V=(N@aMAR>0ZzNm8?@e%|2Yds{T7#tA1ce6;n$9c$jf!ic6BFn=0^?H~ zk0C7JO}54}Goj9hdh+1$s39mAiP1f$@^~vrG%l|M`97tsR{^L3y2@~9hL6$=65f=H zQWQqCTVHDh zk~BL8f7k>I)Y25ourU+{>rSAffbp6meFSepu1BDSl+5jm_le(6ezPnFm}p^)QoNT1 z0XIip)K3OE>U(3lQJMOM>d?QvDQ9N0nZqx>x@y&-G)V(_cE=DU(8U(N24XSH1&weP zw!|;%n!Gl@Q?IF;JF3y)nG<)+!Vi;6+oe#k3KCTPXJF1(uFEN*ToD+KHB2~6ORuSL zc_n*MwRUR*$BGyyDO3!Tzj$dG{&F=>!;t=nQW7~z~{#v+LJkWlywqm4~xVXZ)n*7z>!2jH`r{~3|a`q`G$=Jmz2q{+ckYHeQ zA54Q?oK4h^V2sHF=oRFP!<=wdj{O`*%>qsxej4$`&L_6>E+P}}sz(#OliI)Ue|Q#+ zvZ8~9nRTC0Bsl}AQ%~%tvYeJB@}ita?ODEg#an{r>$lc5;6T~UfX+Q}$HH3TE(1r# z74PT^{|Gsak%uoZg<-i)(8sUWoHe#I6o=9#;s}jH9`ZN$i_oyYJlgnPODa~RO15tQ zG#{whCIMI3-DdF*CVP5b2U@o74(YfbO0(dTpb4xYy!=%SVbjv zS>a_KA(BsoBL{oCTKSn;;YOq)bD$3)_qzDo&OW>zK+WO2AkG4Wp1W?yX_!#yI23na zSdl!Y;&~>Iox=v;mFx9g93Rl1quCk+ak*pkD8CDo+t3$hDO5B~?hzYa@PcrHSMs zgP7ug*?y&0K2~{kb;m6486_G>Da|^@?zyQ)PQWQP)xL++9Q*{JZUY>H{wVsWS-1qh zUX=qZRi~Bcsx99o{|5Ds9zVWU>6<@-ag-*Qzc(*S zs>E<3JTU9xZ@`pNG>({GlnKjLhFDCocNw*x5Nl^5>%bQzDLj}CZ1Oi0MrWRNg6Xe$ z7%L=|f@*qpIyElSsu$7>#mgosr59f5c-^svK6rE3 zQVofdr%EtLA$TGM$l*@9TvJq7uO0(H^#h1Kl5Eytft&%qTQY+~ZqH@L{jvmGSGC&M zshe;VUWl?IH=f+J#NQ;bS5T`mCa(zPcHA@3eVwTokC+Us9j6FHj{lBnv@$kA0l;&}fxdZ6% z0o%|FYw;Ha*neIQi~Z+CTt_xWRWEfdGXU|YQHKxz#fd!ouogyRvkfPTmlBSwC?Pq6 zYod@J695lJEfk+4!87`PEs({e6s!vyN$4%17zcR7P?YHE6~{2vVub%bA?5p``002! zq&NNy9`-6?0z<gBJFXP@}`7 z|JF&T5z1&h1cA#JN1uGg;Xk2)>)-J|C-O0(KtG#SE(!#JN__$USD7viWo#fjF^!0_ z7mbn->J>36ATMVzMens`9Hg4jC;y%%5C8o#`R3mz$v^-5)U-Sr{kz{85C8p2XbiIl zR~X^UQS2VWs79)WvrAH{=2n)o33E;_^OYnY;4it{y`|2#1OzGaP1tLYmG}X>fsEsf zjkm&Nje!irNZ*@o0XfyCox&efn>DC5H`YC*e)Tll&ZMN8HdH8bvQ6`1p>|9($UMCZ z=>$7Fm_dO-nJUQ`mSMpCQ3-Ae@rPPtSRYo-XU+kl3owlX5z&^gWh7Qj43wjVBy#k^ z?cM={K5GR{CgGk`-7->|{U3h80A~#8=UhoTkXEb|0#gr2sV72|c z-dWm$9vu!TE(3fw=q&)Rf*)5u+@z5g#wbB@-EUBY;z>{tz$ydw7NNO?qV)-4?1X#- zdj%I36MRq~#(KYvwQ`_ugJ6O*X`yOD3}xV~kC5shi4KP1BB#{;6)?skwg@p0U8y&C zmECea22!Zt1y&mt>noCKtEYv~4e?y)-en$!q>U0vD!?J%9F~Gx0*M8yW-)R}3+^&~ zAO@xAexSuZU`ZGh?Z8}%@jm15=+XN*&H_P!g2It9?*xv6=w8MtIXYUJHmlCJy`XkH z3=LvDA%QcoHX#KOyWqRc+{DvjfR7C711W!tNf^b)V3GJM!*XGO0fHepp<>ivOhht+ zfmN*Yz&m4oiI*=8TgZ*3@zlfvw_={FiE|loeF#OB0wUB0ry4qlJ(YJ?Mr<|(e`*lW+At7W zK66tw?*dH`Yiul-NFjA>PClwnIRUK-po7%IL9`#$ez6@AYa>UNs8w$Tm&c41vNos>>nb6R(!BEgPf$79148);Ln1 zQjK`V=0clXJX47!jZCD&tO_P4F{lK7_wxPAcYk_$?;(Mm%Qq5PvnY4!Loo%wI8`I( zGI3+RAjW;!AZQQ3(n6JYq)vlBPz?=^gFvv8>b097v+gmH4XrB`UrOqz2bMyDhJwy0 zsezRtC92O4A+G}Rb8X#NG--mWVvMDtKxtz7E%(W7302^XN6Q?XCg(HEiluN>*MCvc zD+UOBHHx*Qb9xd-0wqwZ(1~!GLrw9m!O%sw>fEwi@+B!gTU;CK7bEUbie11ckUa0u%nq*|ck70jQg5PfAU z)$3}G%c~AgZR74R{u-kyc#S;Mit&J&WBdFlYr%ME)_jC-MB8y%~G+ z=;iCvA5PCHji6j=h5dk1(t7J)2&PX84it(4x63p2UjaK^TpbxMM zf!u%Abmkb7kh5J^fYhf#7kV1vYUM!q2lah@|AJ5lJpWBq2a43I$qPlzYms(x*eq`DDllfpjl$-ZZX(LhHvpJzfc1Z1n0{*vQ}^!(V(M)| zG1aDZ2a1V{bKp35`eqgYcj-T48bc9J<5>zsJGwF1itvifQ6!&DE9B=K!#s}vft&g| z+!Wc_twZVa0_Mt=Ejtk$bSPX6-ILZ^Wq%@7=UNa!aX+T5#zsg{+bUXuyYX)bJ37am z0;r%YQao1aM`HLl_Ct>#wx?{vLh)db{t}_O`97a)RQV zS(Tn?r2^ke_UL@oSmj(pTBDR8z#O#-L>0?QAXHxi7sUG|5v-s?tYFO=*a;I%BAB52 zN|>P3kpe;CVz}V5BA%;&bkJ#)`^=Bq#lTKm+deW*B{YSUF!7lEtrIa60hTM$%4_J* zO^`;n8Pb^S3u)ZyY%~72X1=64;~H+fjo!FNTVCgO*U`pMkh0FDGUX`XvCXbu$6lg@ zR@L1cc^eES%0V9XBuAe&)^L_vWTkC`iYa$YcPC&J70UPdJfEdY#-s#Qh*T`O?4nJ8 zC3mdrm~;VTqqYT~idBxJ4=_lqVux@`s(OlkVQS7P`&a%a1@k7VQ)hxfhS@??_F4sv6X&;D;GKWm0e z@zc~B%SoTRLN6E42GlCUM-%g?lSjMs?9oZ`AQ|M9)%CO2ahONx^D z6}&BaQnxv$x~LdG(Ylmwj2z8l+AH128FPg(aeq=Xz>Fn z`hVXTV}fYyX=rXEPNW|U0$FC+w}nBwIB`id_ffKCAGNIV(Dtd#j6qZ*&aTj~Kp_US zYzqRpx%$QwX+Z$KrBu^2;}S#(V#By-mb)T7puXT?GQ2b<$3)rcQvCvR=%AQz{h66yv3@ctvr z`HwJX2y+spn7_wHY;eDO>E-?LafdffHw10~S;Ov4su;0v*wPqRP$GDD0Fx2_Mj>Gr zG(<4T@s7u2M>I1)9VM2P-8=rs0mmo^xjp{)%>0@nf*XR4CZf0>nS#Uzk2^;YGd!{( zLwM!Swa)YrE@x79yQ1^-?h_*9sbv`RKR6U5{-`mhdqg5l+Z>bpsz{`1Mq`rqk3^bQ zLQL|0kx0`-Ehc%NNTg{cj!E7x5^0**uW(FTB+@hzrfx4j1=${W`(3CUh3)z74gVz^ zHN5O|0$CetD1JMryzCS60@}A!JQ&r_I6Adde3}Npx8qmtKP=@o)-p_jN9G@~%&+2r z@Y9C(4@qCtX}vf`HI@H+V!l)1%=aODrfG)D$SZE@4%Qj`b(`=_=C6{Ro58)L+36cl z78@)xYJs`^$ls7ATb!bO@&qEa1j`edbX@X`37$3VzRiw6PB40b2KuNHQtmT zsoRP>hpOJD6i3*2LWl4@Z(ylb7Eoa#J1R?nyN#B@#&FpGM(OYqh^Kjt3QeIE?KLi) zPT_%O|Mew5z{(>M+V=)$66&JJHUE9NjJ<0piBbJp;RT&j9d5ft57;$yU_3V$XC0wV zAzE1urb)n%i?-{eW-q-krR9-mw(50YHr2E~)`VSDtV00DR!=Lp;#*EA)gRI8duD#n?ZtjnjfE zgi1nm$4gfUIG8_k{ot% zX5PGr!Vvr#euG$VwbwwCptr>fD$14(&GUy5)`+m2FP@(dPNi6-dF#nx*Xvom*3t1B z+Fw0td-Z7Jt55mWA={SA;~e;Fi(0y?31eIA z>J%XPBk+bd+1A_Hq??TEk6PMpBV9+{buK}p+~)_z{|CyM6r5}G58^#_Rj!v#YWrAD ztUedbAWtCtg6fK38Hen1ewl+i?s2Gc4J;A0>q=?X*=~xf6!$s*4uaa~c?)q}*JW1r z9uvHyniHt12wlJ!7LI>5tPUs1{^ZJ#_$W9fxcCKNd$V-4US?IC(#IXcbWJryy{&$O zc7rAp)@C%gSx8F>wS~wdF8n{XhRm(EcQ<*;4U4;Oi3Xj!e$&F@9)HI)1u{B69qb+4*)=~2LDxc@$}21STgTc8hLfbr z9Ci*~S8!kOog(ga{#z9NuEh=;Cp~zewX3tNxc0l1-ppZ0ubPAaD&qsu?}<)w+&bVY z0nSNS*T!pLI|@G$MXIj|>8AbAPJ{6oM>3V!2p|Kfw4+`W@KwHt>>jhY1GiBNV|xL^ zwJhH3CW8$=Nh7|BU*G`Cz$HAvXM9;(ZE$~a#V7yx#V?1syaSwTzZ{k#QC)3uy6k;y z4|4XQ7g`;b;g&9JA>ZrlGgy860rCal?DfFR%5u@C05SSy7`00&g*p>m z--*6&s%PiJuNaM#M&^Z($e`{$g#wnc!pad4& zg_)G0=jg*r;*zNjA17~$TFonPnSTR<;aiSenj%=LV?1_NQ$w-%G&y+^eOmnVv;Xiv zzv(C6eu=-~-QvF;#b4m%&H)JqT%CyxQTA5au<-;Hblq~2TJMx)~| z*hc(Yy~Uv~wFmd!W%U!@GRqI~-MZ~`3jv;6{7RB3yYnA)c<{{LXLUHqo*i(lu$xF2d)7i3Eo>(?yE zZ{bf`AQT29Woyx2RSCk z4c+&R$?tD?AC}fD6f_=XL)%0*M)h_!_Tzw3yAB#HIh=QDW%qgoX!?dV!(t_3$j2FC z7XHG6Zen};$uHo*NGrE#mp4+}Vn7G(Lh+mgyYS)~C<#e*OJ=-!!4E z*REk8t|<6m?Rn9C=E~p*;i*u5dM;Bz`qZw(XK#n z6Z`N@?LDpy^8kyC#n}&HB67*BkTMZOPEJ_}5Qv0Cq>vxrv^JN58RP~)`iI$_hDy@q z9Gj#(WfUGTtGJw-)CK!s+M39m7F_^2hp2BRJb zh@WEJ9B|~|{Tgb`1MZ>7V)ApuEDQafaGgr>5V6+u9bR_?#9n1>=tSm~SH~?KuTY9Z zh_&jo%M%VOXY@7KVDMs16=0BeT5|=e8x#hj>t*U>9e4v~kVAtH`CGokKhCRc_9?4E zIl^)kV=8c$%`&V+hV!=Y-Q>|Bd;<3(EkX@|g1H^xHw{n*e%b=a2%ootF%FY&9}O;j zC*o7E1E#TU95EqC)zBPg^YXHbz5&e?M5opJf0*6b_kVCQsHFRtKFVpz9gaFN>umCYXg0<`l|-fN{tERBCiB3P^qKH$>{Kz)Vcv; zrmY6DK_a}=fRp#riD%;)j0>#h_bCfO0ZhkYS}09B3sHFpI%DlU4*pQQA$S%@rP10t zTB%g>@0|Lw_|YY(kRW-6P^I+B(o0p51Yoh#*Ezv#Op+EP2~|_CT{KBIR@SkQH?hy? zo9KwhgQ#1lvwpJkUCwYp!;9EP=ncnG*sUx+vGPNIs~`cVFn%ViQRJGiB2j*xC*GL3 zUZ>X?k@dBRMev%zJ;fA*($>YIgLHb)==)mV>|*g?#A%-@`r#(2T}ne>?+OBha}4oy zaJSmaBbZ2e;S6M`WpDN}ZZ38orUXDzO05eJtb+0o|+rLr1bJr*0?I4T>s zRud~Wv|&oJz|cwePFoN+bgwa0IFg*E16s&`?r6w;nNb?%Bn!XeS@A!7F#0)x*e!hS z|BT;stB7L}E{WdI1qp8%;ruqvpAzMPrO{J_5|$dBg$IKq^b<`EQ>yS6VZCz z$)e9E9K*pVEW7c%xcC<({X$?^a{5n|c0RD^d3orcT4kA5&|)Z1nlwmPXn?J1jalS+ z^#M*%fDM=zla)j4nOF)}?U<)#Jvq5RLYBT5D0?V@t2+SIHr)e!uoxdv4pFv68|*+lkD_IKm zASg(*9O*^#a9USA;weRei}^rYjSnQO@CK8ktsIMkJts^;Olvb3A z`Lj{hgGo;n9pOHx$5QJN(Dqr-BW&m5Vwv;s^E|MjIO`BGZW*2g9yva?Eamw!W>ax3 z&)2QB^EO*fM@)$+dUx~%3B8e9Wmr=KLuf>4Z8xlYza_{UM@GbaUgrL`mU5SeP*97F z;k@w$Fzh~&vNiFS{+;qz^BZ~&zW$EgMO&6KodCmoRdaV36VA1pi(<7X%Y?xs*5-_& z-L6%Qs@oMBu|BC`KpBkZto^NSK`3jia6S8rnlFxMk4OOQ^mR9YBq}B&YdT#J0Rx^b zs@lF`_j4Co9EB_!S%nr>5&IU1d9iy;xb@G4T%#z#2D~n6mdfTuXG+%)G-Ed+C9p{< zLrht34~aJ`0&$^~_f+B2W?^8d(VV6+hu{r_N3^QIWjgtIn=ZW#0QX~FY37BHd4w<3 z0nnUZM?0aq^(%r@g3(zP-tDx~ZP&I<{aKZ4fh^fLu!zowUFG4pZ$9egMCY62z;e@p z-gMlb?AD1lU`4kDXJYlZ1tZ#~5I<^ro%7Pia=X4$V_vcJ>FcG)lcjIUAplM7$4*H#LEcKr~08!Q(`!ne&2u*(W@yRDF9 zixuMTVTB|$E5z+ zRSTo4*wxzW(|(*?_N)cJT94JGJ8N#2mZ+nwvYkL)rd$;dD)uf^XfaQ1WXYf)7lD7> z)#d^X2*?S^(Pr-jB|YU*h(c?UBP$AIq_P+CYuGX|Y5s)Hmp>s9R;XqygN7FyF75W{ zCVSG_qe8=N&t!{@8e90gY*bOEBY7}%VOpSRa7}Bsah__Npqnh$h<7gOp0@Z_IV_^@ z%lUn|eV>alfoyIxNDr0H^Ka#hX$}VnKq1%c8u`Nc+WhTg;ejHAMKxzJ@_Kp5uF-`Fuimaf3Q#o@4O#F*^1^R`GlaK{+@7q+!OV>Vt)hq zy+us!D*;=D=q6G4ZF{rZskDSzVv)~iG~C9#oFYYADj!%pG|;-kotjRk=oY0g%(stV zBEf|>&3Xi917)<57XG?U!ReJ}tgRPBh7Q`n%)p@~kPDqfhkqUgw3{Q-Wisf*m|#1fC0%rOrfjg>o;Os0JekOqnou z^6w8vgOOm4=otKn@Fc&gq|0Arw}R=m)sl_&5!W5dsiKNx(1G?2VDM>)0e6A2>K+2x zMPo+6{pu{#PfEVeW`;;Va7d?>l#n3%k5CmlFbrXZK+TW7M?59n zOWY7OB8QoU<@1EfKrRI|3kzt9gegQ>4uBJfwZ{2ZH|r`8@vOWo1$>1)A@*>&xtHF) z2gvn;)*5s0tO9-XxG1CA2xxY%((7zYFjF`Hh`!Sa9SlrSRoX(r%sj;=GjGL~cYfT< z?Ai|&h<^qHVx+=SY*?i%^JA*eP`DzP1{K`a?dR8&tI^fN2L^@#Zt2_`ndy=gOx_Q5 ztY;PA6Ln@v!v7JRj*7O`6N4h0S0J=B<$E1o7^vH)b0N~Xfakt_6z?AROi?#?3=`AR zHN5w1Y`5Nk#a1=E@c1*QKZ}E`cyb5@6My^dBMMyXP*~|_`?=`+e*6k29X$1452i3R zn``rob5AI1KsME*?EMfR!F1_3H7u^@oUiDHqUCHCB_w80p6rJIY7;RCID8yKfy3vm zfZ%T*={&r|b4I?B+Qta6XiECQG@<71=@{+L(Oa=txnrI}y$?Y6czknEbwvopTa zsgguS4OF&pnW;8~TaRurE%9~h)kQAu)rTua82M<0xWO*`wAa~?$c`+rj#*+OeP$Jv zzroU6<>CggXT(=Vw>fC`3oLc&NJGbtAzW>&!B(kJNh%0pQVX3p?&g6Dc%La$@0n#> zLqMp50dFsEK_c~s)`03KmlCI$^ESw1CV18gD-5VrwJ%#uz*0%$Y|XB0Ma=M9O5HDi zX-Etb=5c5m-{fP9n-x0&qX9Z4%ph&^?0Zr9Hovx7j{r)Ka#cH08`SnFx%yI^uirH7 z4mbE?0{p&;NS#^&z$8{63JjT~`5^cLy(v+4`ig+68-jByS?Fe>+nO} zx-Lf4#d$#MjhFg*RYK`?D$iQ^KUJvDZSYF<%;Ft*oAbH=X>=f3BP4%BP{}~j7mq7l zIZI*H_RPl7Xtf}nkoqqS4IjEHKAb&!efr0|B_{R0<-QR*6Ad)CN1@)tWTkP=w2iSlp2zp^Oz=vM&(|ZaYj>C*cQkjQMy4 z%^%a%jQD_;<&3;ctLVk$m6P2m9A$NNuwZl>8XgZGKtBDgxzP(gl>Qk|uagUz)D9Ra zD`Hd=L(4BcB;l~7q7z%e{kvW{^rvd)5FZzhI9?*IUE?%37 zwTX~gRj_4^!7lrxxkdDx2rnV=$y8`9v33@+$1c$66jUY5Yn7ISW$W&u>eS1GrsGQa~7dS3{6gIgk=GK~ur?M22R( zaH&rC46V?%9!iB(T{bMMtyfwNl^Cb3g31dgqYHZd1nl&Xk#q>eJ5G(@p7P_swBc3i zjcC5{W!p5ACS&57u5Av&P=Ev|=ch8CCRUHF8=uB_#J#t;r?sfil;)dS@$_5YcRvvPmRGl6 zm-c$`R}b;4-}Y5Qt6_ZZxrQdrwAaw?^R_);KwI9q{E9aqeF!fjGZZP`3J`B3@fuWPDc%5EqI$~T`6KS^Q+9nQh6#A8+hS3gj3dojRR>9a(xNnGntBDU%BWk+;vIljcDYO*-6Z7D!C;-Fztf=gm3{E=fdgT?OGe!- z?0wl(XHgw8+kH6g-kE>q*SMJN2mE`q$JgB?}>^3M~UM{7$ zLq*f(Rnd0CeY+TXQT9pUZtrTyK96_@eY zLFE#?sOIb9m+1`alE7s0#K9yEM{zT5Gtxn|w+w$drooR_<@n0?5Io~u5{!PLmdT-f zD1@n2sdzOO%v;Yv3pHAUD_gBshJF>n^mt<30Eruf#x=-)szR_PW^eq)(3= z_T&$s)J5rPMuP#rlvo$kK1Q7afF_;zO}C!0^@{V1m6xelCG08=`mIEy%@B=4lt!G+ zM!ONj8HW0(BC$&i(b8IjVP1{9UZ(S*9~-7z{8$3s-+xK#I(Sc;Tzr5%%;Dw!5~~aR zn7T@#NI#^jD}RRQ8WFE!s?x_>xFUBXCf=Ct4$lsqJ#HOw0*dmQ`zv8R$DnxQ-h!7x zW<#)NFT%okS!n-;ri{DrO-?!kv}N=mbSUCasUPtBbb?F;6TEMs_8|A?36u|YOfDWV zS5o~EzbQ0@i7&qpL5RmrG@V4mkP}Bs?A0W?`Geafq+2Wxf*8jF;Oq{4ylHOjk?Y9t z%oHc^C55WIRi;1eYP4CdGGNXOg|B;kwuaEhJnDe!1|gYMMbx&(_|a9G&xqRWSpt<; zmjf#G7VbED566HjIW6VF-z$hqoRw^CU_bAWByV=b)S0ztA&$-t&cQ@*ELf|#p}0U0 z@aEZ)%pIOE7w^lJITYTYWEUh=(h-5wsexZEGXQTE?7PQ~E& zdi`BARs190$?2WnMC^!Fw}T}p;zD){;2Vi4-0-r5et0EK9z`lu^6mMP&>?>+SD!Bv zV1)5cKA=GJUO8b1^2-QV2~3rPjS3(auYgk~=>)pJjl83uMLyd3$nbOu9= z)CtFTqrdx6M9al*#6mPx9e$DC4OGyl5a{+j?_ZsAxPHT5`1bXixBd3D4mM$x#cDpL@Rd+WAPVRMgLw{=B z;mg}?xx6C+v)OQgm?pE#G#ZNA|fI`Spul6@&Uk z|FGHU4#u2d3SZ%qwW}U}^gP0pL_g~!7;+%OGi%mf$oCj_b<@0>_+7%LE5H=JlrAT^ z2~2T-7IeL-zbwzP+t3J5aaJqP%=|B|Qw$wWjpGskG~#vY?W0*WXSQuI>a+W(@wnSG zw~YOr%+|m#09-b7Qf9~iyCUV6Z)Zkhg67M10={JkcuhC=L&X%K`8-_$N*IWUQ77#i z

-aGer&L-e$Y?!fl=+XTfzwj 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

    >S&csod}&87bQn6qh5too*AB-QD_ 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%0Do}5rB$t1h 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%0AjS} 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
    yjmrB3u#&fOicZSLArI9h_gYu9TF3h5e|ynDO* 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

    4=t#le16pO(#2`2{5IR==_Au3GT2ke5wDz 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%0DI2&w(j}eF$Jx{dxcYt($(0yfCvgc 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�JIk8vO+#O?wvcs!ntSc530)+ z{fXcr`W-8j9`7oPlDJUkbVr2dkVIT(+!@~BQB}6e4IIC!g%ri^tq6t|`u1~<2|{^( z!kXDP@js=T!E~kpZ<)Hs>IF**^nw$ULlMr_Nwv zas{ir>_vH{+G}+_Y-da;0rlK!m;$6jd8kF zS;mzKS41{mILDPnGl4gDyq0g3c6dr`o zDcpd7ee;WwS3aQVu{C5I$WSsCxYV+~g_b!@&TcK;wLw+3j*@_=F``CNjN5zZY-s8+ zoM6D@wC1Iwx`>$s5ffi{sn7yBRbc5h>qNsxnf*&qjU2bV5fAOGq9Kz=+!l(&+25m3 zgd+{=*`z8kt}T!%jp?74lOzF)A6JFw)vr6AjZ@aJos}XYgKp*ujG1PsoGY5R+7oTc z0Fs<%HPKaFGkgFS1TsU5pv#8oJYB67puJ_k=^dMcuH~+4-I;JpyhCZ$k~2`JQF1pJ z5kmByKdmoKJ$_p$v7$Bqv}%Cq84{1pf+g;cehv8$@W>4nCn=1~j>H(!v}Gia6p5eU zE``Gr3485J{wVlEq5Z&e+75W?4UkdGVG~e)UFW=gpkT7?wY%%e&utFe7rw1{;PlTw z%57NXOo6)xB|rH@#Rc^#4jQm|s45JTilhY zfbYg)$|qK*M6)3+~_BKaCGbh=}6 zYL`V*ezlKmD#DpXaY&ySCyh>EJw;P0;SBI_9a+z*(JEg5^!h0`j+PWP-+Ai&v>d8H zL@csm<#m}KhT683UQzr#x)?w1MO)aLYr6I(*xExRE|?&MN%PaV z-$`AEewe?>)3&b}29uMkf#w0{&1c|B_ktL7wrRDRwh6ARln#EkVu?x)c3bhsx|I5k zQ8bd7gn^T904H`Vxh3|%CJOSMg~4o_T%#kgngXHQGpuY?wKUQ}Kny`$xW~Il_{lUj zc8QwTWu{lPpGr^}e+0H_*g@a#DdUENP_0{!z~?HIS@UnZ|fVWX-B= zMN>vrc1!84=vj);&y*e%z+yVH_k)2S>>C^C+$_eKpZ)&1)o7aZL);?rU^)MK5%<3l zsG#QF3;Q*viS}35b*p&J$v7Z=b=#yo*f&O^KUqGDTNu%V<11S>hJl4E8fYgmAB6vM7|G9RdVCA zPc5J@D$!-#pyCEzbcruKex`MCUNU=2@|DSqteb(tB-kZ^#8I7WDkYazib9yQ;CdLD2rBY0D^F{lsZwMw#xwbFi<&TZV=Q>T>53e|6whcj0hJZ5r_ zodf3&1O-xbv>4svDXkt^Kpc(xJa6)M_OS#QnWH)n&07K^M6%scG6S|etgF1T)stFt zLEBC`1_l;;5XXyFyR#*kv7I7jyUhx)*9@yF!yC|FzrL=WAy;A6kcA$Z#O~$u_T81o ziNRl^_ini*mUBy8u~(=9PH)A0u_UVF<~B%uo*%uwwBn7fircri=kW^1A@8}T|4OU< zof+N;nl2Lr*%x@k1S!^{(z$VHT_sKHB^ZHW&ma0%u-6^C+wg;mTF5th6Etrm6L+0O zU5hm;q4dDzmVq+fljkok8SfUKHp`4fkI;N!11=g#P1b_D*dc=;JRz~W<1#*;4T_sG zp%2txZm-P8i%F=SybmeO(GIUhf|lwdzH2U?U{dXeGJ2y6$oqv0z$ft+{E zrCq5wdG23LP&kA#)tAW0;V5#*PiV#A@OG(UBi!?|Y;Y6G%Qsx?-RxH{Vl@h{Q)jV; zGRCHIZFeNN|r34@w zi`JMF?Xbobv6h$FT1GG$*|t5K{m94RxLQwTINm19W*g6HFugfC6^|XSO5sCDoz}a= zkh`o}w1jbZ39)VbOmSPOJG z`X5U#TNsUGw!_vksDB7Arep_A^4dK1&Jlx%N*8r{!7hU>W8SMd$Gw$f7s(WCZgw)q zEt-0HCGGZD_47$(>0R}@3wJ^N9*ASHz3t=Q)6|0OL<26PsJK~ zI7_6?(m=iciW-Z`jv8Xcv=5rH&hXv56a$!U>iFJl@0w|fWfg3}M1JbCHPs2&zwU>-te=f$r6%$-^8a|^c3#-)Q!+7IL*CAqXl)Ar;0H3Z1k9aYE%9gInBhja7$)*L&1G_(^GI1 zt_xu5axA8ZlE&w(LL1*~xyQqY+p}1|t5$&!f=ItkBYejbxhqQYo#Cz;tZT3F92ETp z?~>j(CG=eiuUTqNOxncln8xsZk2*dcu@{f3bzwp)CYOb{oy;)u4#6Z!Kvw!5Blk z85(xjy?W5&9F3LtpXqr~E|biqoyRhEZ}FB7eOL~PTE^3W7SqxUhd=ATBjD(OZae7O z4NOV->~E0GxG~NS72%40@@Y#l;&S7@FYgbxhwyp`f*~qRWOyAWiGk#*J-7rYIRI(x zl%>w(t{QuD=q;u!WBK}+Ic3YFp5=J4M_E)ZRvraq!74b=Ypt?6WF{xy_gu%$Q3mcs zOBbG@SNswm}8IJVrYGzZAXP_Z&~mL(0xuc-Enck=R# zO6FeV-lVf%0o}nsjd`#qy+>91L$(uJ76NA)WboMk?|&s<}Bgn7M47W`L=tv`t$Rrc}Be&*m2u^>zNynsV$Nt zF}=NjLVj`%U}$J$dIBy^UfIw9q^`k{uA#AkSW&@JE#TVkHypmK$&apPB?kV>2lG$c zpOm2fItCKLy6pTMAl|77xZVL^z5Qdu{ar%?@VdI%`;W=l`2f6|!J&;6oSYH(7zfwC zHhdW=R#umGHC2_sKJ(89WIkg7c>Vp|9pldtJbVLKr+P*j2OyG^fGVGdy(l9Bmw#tr z8Vlm_Qx1YtfC^zeA}?fQXeel7csFHZVMH-K7jfSJwh^ctP$z))mfxwrE)Yr%v@cg>z78&tr@^0y&V8hKOmlox3S7!Rqy-ltpSq+U<`IMeNE&C_4>NPU zgER0)W?QEEMp}9R%#VQ$P&}dnNV*^NS1GqDBdP^?JY{2L^Hwc_x^K|Gi~2&J_Q2c@ z-Wi~S==bn#bQ9DZ%(e@CYA>n9#s1m;{sUZHohx1In{se_CPHLsU~>bO{Oc4SxgO%7 zZ5jyz$iAVm@$udPz<(AXzbpfFs_q_3SGK<|*}89dAIjS&8z%<i`Q=0DK`(fG6pX%&6&O%DAaxZkyss!|gg>f}!Tp_fH5Y(K_5QX2P~Gq6 z`)dNATlX{;&Q-T><}Z^jDm1n^uoh@&5B0AK8Qtv}=>4}AaJ&0&<=}TtbN7f3uID}q|Di1n zE&vrAof0eBR(`|4jsz=5~tz2rnV)7aBKxVW4sZ2iMS!^02= zJRS@OK=1W_bW6DBZ>ttS>S?%Gf_i8G?OeM4!3EHVHQ|m90BXZNVLxJ9fT(x7VPO4) z_ZW9TYCB(IUVy0MzVQEkWdDNwpNbay5xW9JP1_9v>L>ifume&%_93Q6ecOSY7T#kA zbddjw>eEX87d`fcqfd*RumL$K{KWKYFZ&YHqrdDyOp6@-2Q7U62Q~i}-TVig-2C_Y z6Wt-OR_1pU`@n{b_CS}(jpf%C$hGY!cECkuXL|Yu&_EqI^t>I%Sl?qG{G}c!d)`K0 zI5f`m^a5PB^xx_6H%UX=-^}4!YD4-T-~dHHAF)3b=r0*CHWxd{{OHE1{Woyn(I4qFBwj;GS`zB~0X%g5b=-ILzU}%q;J{Jy4{%_Y%^NsK z++m#LfShUSUP4EIE!=+8uMm9g&I21}ebbTO^1flVZ`Hs+c7L5+*q=2h*%sg8-z^AP zdJD4q6po)<2J$up85i3c-(e8RY+u+LbO)f$pC`gkm)3P(a4bQ7N5zicqoe(=>UW;Y z@vqpEo>#A5@gIxn7t0-A=?IwZuU)9NKABp6&x_w%##I{Z{7+nlLqJe_;9mY;D%5Rr z)sA0l3heZyo94Y#IH>Un(6`aWzz(Pf`|klj?7=HI2>j*`JcQ}#!&qWq56_?f{=Kdr zzddq~UlOp`BUtBm&LtnbBNH3?J%NBg0T|zvZor2 z=?Xgv$ z<Pg8~38ogeqXSHM@0bEk2yf@r^}-v|F4YOvb!`raGDzq9zj;1-F;WZf;kTrd`%`aT zbXvcxH)}NNe^UYm(i*0MX1iu{<&COQ_U6|W4)_}8W?Qo|Kp+c9K0}+b5B8@%4MwbXxKRp3p^2Th@=11=gIa3 zzXRfJn*38#($Gu69fRMKsor)(n(ah>IuyS?nMbp8z)J=8r3l&?S9NVIAObT5jj4xCKYRi`bam z10M%BSH2xNbyAj!M~LzxZQD#e5u_>Pn1^>JZm^B!n^}VKT1B~{{?ntRO!nlL&}hkD zC-5OcyS3=k{gl>)taH7e7q^XLwlCpEs=LlM64H zEKp$>qJCbL9FGwg50E4@_w;txH|nrLp!jJa^(5ttGc`3a4M(aaQkM*sFFB>=Aun!6 zGUBFP7OL1)>3Qd>go?e1DIp+~!RoU^m?knYqVWLFdnH(*A!HQSr*<4k@(zwNW=@1IN?Z0FxvC%VDQVh5kdWw3J(nLkvEX~Hr)rY5C{cEts+3pQ z_~CXZw=sZdhsBZdS_McEl_P3Y9WuB5@;H1g zQ>=IYez7jUf0{VGCjr*oZUfATssccwNS+gThl10-Ov7U)krq>0QQ27Bb<6vJdk6tD zKWe)W&DAu)uSv$cH1%msVE`r5@oq8Kg`ZNBe4a z%`zdAzhK&q5ElDz`K5^tLb2us^#&296h^3v+w3;t7FDYQ!`o?1c;!g0SbqZlaEpx; z7gcXkqS(Z+nj3boA=llC{G!|THR)gpwP_>Gw`O!#FljB~PNjyZfNmTHgQHWNY^Gsi z78&V)yx`p_L*+65dQ7X^JxWl-*GHtkk-VEC?>q^n3aC4688&JjiST)AJ~z^%se-50 zK&C&<`KUw7t1viZJwR)15f^z8N^7k!X1Hsk=+1n8>h@9zwku|PRi#1!uKT;xWNCvE z5jr^u^U}ZNA+ir=*uC&bpr1bpQW+Fd3dFt@v6e4p2+Dyc{HBqAab;ZBL;1?G#l*h2TDx%>8r79tY_(iS6Y5&sH1bXtQ zDJoDZCr?kAoSxjcT8*yh?lx&E4jALX52A4jehyg`p(tL(KQ6gtew6kr9c{7t5ZhYV z&`@{E3)dvH+oa2p$i-aUbMIt3P&OH=!t;P9KiYC$rL?BRqW~H1!rII|?#dK1 zW6$>-a~T*?@!q7`&m&PCe^IXC!AfFi$BdOB=kxn9DwUcN* z&>y=2#Uu(tATH7Nqacr~cPeJo%*UZ24dpxjWjGkRbnEiY?D^!%$?4$S3}Jw{8Hvc@ z&z$vE_4DXw0+i*9VhMa1bYlZqvL3XB6yE*SwPVN_%)o&Y7p6Ov>d~G%ok2y&O4kyx zKx<4|XK%tgBYW|1Rf-b^V*)5I-dBbc54RKfHZ67qt%xIv$$tKE%>V$7OY#i}BLgg* zEoCk|fJ!qyIe+v8f+KZ^U2t@2bpE*+{RqIvt-xs1AznSE$a-L`!+uJ^9=ccs8W~Ed z@8>uIzZ>Y3uoNCkt!&YjI|p13zwaEnEMT=9wQPk{PGm2}Ku(qP|DY>_>a|>j8wR7x3Hu+R37Quce^7 zsEV(Opi0qfWrmoi-{TAu8C>j8zbeqX;<=?y#}aEfn66w#<;K^Enqw&^xr1c0P}S= zUOI{Eu6UR7()Fg9dJ7)az+P<1hqNB=jXXK}i9T$M-AajBqNh%$bxnX5VvAilNIL`DXR$es`n^Jq=26t5nn!Lrr8`(l^M(;m+F?cMtPTT!*R=oW?i{2smf+k`(CmsVq(>0s)YA(sg*jK9PCZg^jcRgoZc}W2G#OUV}L$m#rzELjqS51 zjL3^#kJ9?qZx^;arh`nHluO{$sGjwy3M(Ynx3(%N@Ew-(H47R+k~X1QzFAzRdKnR) z!*0`r{RxtP<3!%~)B71MeCMn%^pVA^TdM)bT@vgL@Cx;)Lhno)y^LeGsz&l2z?(PAGXi@*45ObgJk_3cUz$InTSvm+jE5M@8=WcB}KIHO`}gG2@h zeP>$iU)sIe2#e$xR7%0U#!|UcT@6P|oX6BI|4q*luMzz^tK3Zj`C#qpOStJAMifnk zLm{nJZ6D*x#Jk>DJ)V&%6&*6|kCsCE)W200x7CtCxZ!ixU-T~g;uOqRk=lwElG+-s zIUIkCkh{r}MfIghHMC!@Y~EfVy=t)Is5(o5YVs_E&GBhiLj|sVp*@cKsKp@5#qG|U zBY(jr+s;+?+LQ*SXi)76VFON}DK`^&W277C&J*?`zf<>K_f;mk=EpKc+}A4Hh#&*Uf-H;kyb@r z3ntHQw_7W?M0rc7r~Vs4@i`j{t^WEPlu9KBWOo75G#)y||K7@1b7WyH3|r4N(E}p6 zP%jAs8SOo!uHY0BNqZ*Sw47(nGb@5Nh92ca=9sqY`Utv4`L~X=`wG-93aNyUb9CyN z(}(^UWi2M{-Xu}Z4w=@!Ff!J8VmcUrVy}waFi4Fg$(<9S9dV#g+xLOWD#l6|}G+-EqR*c2Hn!%yc6CC(jo)@dsx$SdufGRA-M7yO^1=FQwJa((;Y ziS5@_kM!bq0XBNiZotL>CS&L4GD9ZW?NbgyF*)+CR_OcH(4m6vvacjomJBS8;CqT) z+^UG?O~c9Ioqa|rd!VgEb=#@2aGKE%%_wl5b=Gov9HTFH$I|D^7L(CpY^9w`p9Q8y z{gdavp)-m88L`z52C9dW!nxo4-TDH_&6p{1PT<>G-+-EPGOTbCN307E9!ujV9ETjH z>d=}&!sYWbYy&+q^-!HCMJZk?%EYiapLnoBv&gs6r_jBuk`p_S_DOwc?$0<)U7M*+ z_Phw6(|QDG^`(J&SE{!w-HqE0>nv`r-`I+yKwtjH(=k{->E%KWifm27XD9*znBV~K zVP&kTaGAc3mEvao`>K^w_Pkx^hArssPdwf{Z*Bnu(YjFYhzYGq8~CY#V6YSZ9vSjE z2%@v!emUJbwlMF%&uL?Aw=G9mEY+wX09C0eY8JW2SjWO6jH5g$8ttVPu$am zfXVhfl@0dJM|U^Gi5q#HJP=*_u`=Qj@lV}uHFT)bf%o)2HldYoU?P6LPv7*s*EiVrs|e9da#qO#r)x#2@ck6#v3WM8kGyN5~=r~jT$r{0(3z^X$E+Y-k{CeDGU!?2HYkay*Vk4sfV=caSIiG0J*4dT%=Z2tv$iNowe)#_PkbB9&-=wCioh7nKjS*Pblz!4@eS z;cLEsb<>)+xz1%E#ZfYj(84ov6PoJS=_sv*=*n$Ox@*?4D8Cug_}(9Vf!loxUqo$B zbtc#9>=wMqqDZs{!S8!5V8UUqi8c251WJ4(<&+;#{UOWJEmQh33UQ*A#%+XCI(_E% zh`l>mvSs~A34=wE#D&hi-O9n-i}tYniH=xjehN3=m=h$kN+ucfDfcBdP-I3OL`r!F z^(>7d9U6sqKoX;Zj1ciAm3%p7{y8jYzTA=CGnd}|=pfbV6%}uicu_F%c=8CWQWOsO5pmMFgtnDE2ZEISwpxX>h}LKK zj#%n=p{@4CEEQ^8$`q+gBRzei!;*Unxui>wF6x8B?~#cX%j=YoN@PPqj$c)3{lhIL zXTi|#aeI57;SjrW^BE5Hn4frRngvU9fXQ9 z=rBomo>&ZgO|=Wg{{U}^_7#MMnnQW$Ni}&H$*Ei`yU!R4;5(Yve*Sf3IB%s%u>j<0 zlt=g$GP!v|=rOh?r_<~&GBr320{1!TAW?m%k9}hP>+FCvF>qR8lr2ZicH&bsFs-U0 zhEi%W=Pu-KW|o^q6B*%Ji9jgdSq#JVzb$FI>e>g`lk0(Ea=BDL2>JF!D`9%A8QC$! zF=J>tyA;3f5d?8)^3aY3j+)qkdz7(^PAPm62-x+BZl$x71StB;wJZ zx_iBF7$in+4TNn-8P}oobnb=*h2~q_?Z2ff7`B?CD7MVGtUW?B?+(o-~ON1+<)h9JjWIhMunF6iRYMkJLq0#RE8j z*l?8=&0chlL`}HvdFDwh=69yJ;NPSwNxoC8Vb59HI*oOEQ}wYs?I9q+GGSN7WpzUk z`)Dn062nLydSiTkhK@aHxmrb50` zPdBc)Wd*&VOgYa`#dj-d9`Lazll$M~qK!vyspfob*+YLmwD~i7Oth6wAb*P0_rVG+ zW!_!?$a+GGRMRyNY&`x)W{{(o6TS*#XAcqWt@AAwiTASgxL5>EXksx#?g~Sqc3jb2 zDkoQ10FOoEz^+trEd{^|#KqPfVluZzbZjD?**)j!d{$1=@bzn{UO>`ippQf)SnKt; zko~Uv(-S8=kEKV3!WaPF@XAKFt$tLFh?C_Cl-k!u=kG7%`EySy!lXRa45Pwy znc4M>CR|N4dbS2`c{q*Rgbr^LFy35C-o9O{nV0Uvxz)JKVDCmxOn>Wm>uw}Z=7vew zQ<$edwip*gMyUN~uw~y(1hnOGX%>Pa_510uWxD^EH+zwWW#jn6>m+huglyfzhjGZ zrB@23QsAhY-Vu|_?gpv*5+if^*TrVD^suiLO3@~jU^kuxJj|@H#|c|SFcsRXC_Pbv z!4B;duvAR2CzUS9%fI8Z(#hkj7nUCo6i~Kq`?(r#tSo348x|nEIsQ~{#+2tO-D~BN zTwNGHyk}~=0b;#>Ntq!xc3aFyocMIle%UeE`k-vYLK`s$*s2!ObgGCkIa^&~W$4@e zkbQT5iF-}OC78Gah({yjTSXnt>msAEDaF}mGVpSdNBFp9Tl!c@Tw5KuLO@@seJXcC zD`U8Y;}ux(VqAQ|M2_x|;MLTP$NL=7J7;F2H9lhv-`c&@qlcUZQ?a%@mYP6 zd}~@UP+EgqweL;`V}N8L7;`soLp!}=CLH1lHUSB>_`#7g6Yj>OZah8jYjaI!we01or<$rz|G;zFZ}bcuSa z@HbGvfh%kEXdpLV_wy`}Ns)D>u4{-~g!TIR_Rw$D9cW??XW*)TySv3!?icSNf~;km zYCrQ2K2EW2zTQ9DV|Ca72}x$Er4g{6>RG%uj(T_63S#m{PbiXW(>u0jaRP&6RsEl2 zFDHMgZTMgmw6q+EcEr3B>$`;VxPg{x4Cd^6ph?hWyVrj?UU+EFs`7?u)EZvPWxvR! zIT|VqXhg5;9lLttRau-#P-fDv1Z`BVPqS@LZ*)C6;O)LSrrfXknqgPzDawED=Xmy@ zQp=>m4S3oAczHd0iZDY>qsYhPHa*;zp9Mr4?eCgG8Tp@1fe*{4cd}~S(U08GBJa|) zHRS4+e;jLzTe_q}!bzG>;hTZ_kP$><-+HJeNj!SWHSxZ&;HQ(YzOCk4A&j5&hdgRP}5cBXk z7b#Nj1_HN7S<0oNW6G1;;Ds_;V1C1}4fYjVZe-%tHrSs5e|$~uf+=6Tb=T*RArZym zp|f3+tUr&Si`6I>;bEe=qzD}trjxFHTW6zX-A$dC#Nw{D8-Toi#LsYA5QNNXitW~Y zks_NwlTn_B(&9@KO_RzIL2;VYdRz{#*41g~SOs&Hbl#?h7+nEx#X{X!@Aq=n#MWeX z&VbeHDp0v3b%e$+x0GLPGNl`#yrWnY!kn3MCty}9*M{yq$L@3%Nlyf?I9Ahg)RD`( zjgm2+b3mMvcwHl5HWP(~Un~1YBrL{Viym%Tjj6H(k4=F=Jj)%mv^iAswkYI4MxT>R zpj#1`L^|IjQ83vNJ41zwz$>eCt+jl8r9Sp&=TK#(g{Fsvx=1J&dN+4RQ|1sk_?EKh zrk5t5+!)+!Up1&xSo-7Aww0*QViRy!xPZ^Z7DE=ci=i*OyWArQ+>9!e;Kxy<3fjy; zd^g2Ez+VF@_WO7Hv(bs>^0(qXb}5qKQS=&iz!%wAc*rdHItuO&2w9p-+>`@Xw=Q(DAt`D2VV&( zs{0*UDagDhu68vl!H05z-9c1;-Ckv66Nt>vI%D_+#PB}bdoSUjJk`xkuFFVR4p>c% z;2G6U^hVO^j26(Co@*5_a$Bs&e2c=JAE7lC!pn6u4Vc$OuTIvIg;-X(of&y1@xSa>5kRNQ^j{{p-VGiKD;FqYPuQ94WfR!9uLWR zCLWx%W3vadE?;HUEtt0v^eA&hm}KE5dcX})LPFljV5Pv%YZ$#QoC+3exNlohonW#& z#4~kD#Sui0Xxm!CD%i`&%9`0bgl#&+y=vv(e7Nf`^+i7Y(B3uBq5#lD31NBW z0B84jpT0^dQ^IUaF`9&0BB?k;jSR^6{V-%hm9?HB2A@IMNC?tI(arX6lxOjddVMP| zgzK2Dd+aH7gekdGm=DWhCSfh_dp&x&TBt7Wlss27D`4UXWnP~M^uTtJJ(+HK?7;+S z)_KvnuQV(^OHI45>Q+V+L*9xzRJYwI_dOj4*fY4-Co5(P+A z_r=g47QCt6nY2*wBalBNL?$M?E2a)B=&!T4F|h2i8&3+eGhA2v(`g{CFL4(OWTqK1 z8MIp`Wb=^usR<+$m(B!arUcrN_Uyo&Lsu&fMEf01@4I?x`!F=1$3NIJlQYTzGN3hnmpKF}M}Xwd^$O+xF6*p1|$^%aLVsfE`XEAcz*$)Y7KRhs?K*;Rxj_CWdh8400S8&V8jzgMOZ30d~68MGr*fW>((3+uX!O9ufPK@e2=P0CdrA45c>Rd+c?+(=^>G zqocE)Zt|QjA_`-py)r&Pt7`@AQh-SXm>?!hTNxZ450<+Ci*VCftfCp}2b95j=WbfvJx~3p9I%Cf4VM4U3dAZj0i>gKaPXgjBDQu(>K0%DIc9l zn>QH?)XfD+C?cjX-DJY_c79lQ0jnH6SaQ>|@@St_2eikPqvF#Dld#5xhdJ0Y+k^x9 zT0k#76oACFq*#+-8wsU>M8h~vzm|PjtFWK#6j=JbPr)rG^Wxoz@s)R<#zSYb10&6v z+PxtWxU^PSxr3+lZEhVFux`V%)2N^FDxgfRc9kz= zT^{3#i+2{s*qUQL7{hs!T+rm4k)wX8#Ai0!F+DWSWFfrQG*b^P%8?q~t^7TT{V}a0 z^D~6anUH$it&KOu?#Lwx?|AwynJ6G5A0@{OTU6OXBwK@O)nyy5D~ybh2xbW_Hx3n>*DAC!P*0k$fQEwKPvFTs9Aq5aMJ$?9%hC>w2);s~v z?%YTru||1|CVI0uxQ2X%izJ`~5w>>0=c_eEqi+b1j}uVf@9%!3tt6e-@|lmat~nCP zQrQMIEpP$7hwcoewC?=Wp7F8-uoXa7Gg*~$XbK5W?2A|0WoDxEWk+ruP#cTBl5D+d zNj$rqZ#YU*C;ijCpK*4b)ty7h%-qi**fu(V(f#%vC;Lx7c@KdOpCne8l=I7z52=P< zYA%YPf&$m1vvkj1Q}s00l~wOgQj>M`8X$wqxN+t(E?%|L#8Ug4ER6oZ=m*dBYb*<0+E+=Jddue5&ws;nCtgPG>?}!()D^50hb+>I05D&sk%|`t-MDNJeaaLoU zPkt9LW8nV+zUQcq0^MFS`m7v1@n24xxo$kPIzxjdmbG}c(VA2iiT{#AD@%L$t7Q!* z9`Cr=KAxGj<{qxW<{6ybz~1F_PlGaPC#@P+hhI0M)OqY`w4JvA02#lil#VM!0uF6h zXNr;6C{pp(Ntz2mG)}(i6Gx<4mesI@ zH`^mcGL>@AVM?JP9mnw*a7UVlU}rJNYl*%2^mcLQ7t*<2u48dsiXvmO z&LfzzH!(h;+L&>AoJBn;N4mO@(c{VA*nOXBH=tlKM}xZ{pvRY4$eDr?)UpXR#l6YtSTYN-3g)RTmW_X!8TJ;p$PBEw8I?n6Znei?W<1C4x9p?f? zCNmJdQ7$!nBV?IK2RD=;1TZK!N-M zmS^XA{-ud{&5DNoqK zx~WF4Y2z{JLo=Z=>f@{JXwMX1l%?TI!J9LEQdB6o~Bh99WY(SL(#hSm6*B zK5~mduh_&u$JK;wMTlh;U!vdRAk@u!H+iST&UwC9!smQCo@H^}<_kpu%g=ct`d8eB zn$~%7VNY>Up2!(>^SA7_Yw9|rq-{>e-h>`jdFvHaOuLspV{HfAvuM8Nvpin&7x{6! zzseE(hkUl056;7y7kwJ_8RKc?Uuf;)t8M)T)OKtQW7`i)R{3lsU1tYQE zET#GMob$>1q{9CeW^QM$$Vw!*t%y?4z1vR1AR#=KX}g{#Q8FT8-dZ>iB<*wfAjdZX zS)VbD|2j$+^YN4eeXRsuvO*{<=jd^7)Jt)>x70n*N8;|xQy(^gl2mZrq8E@j@o@Mz znn)hDAk2M{3iuU6@KS9~hU%H1JG0!{V}OwujgWNuy}Uz)Q_$5RkrGU$?nRhm$;hOb z92uqmC#n#>`_S(oDl+J{{`x63u!zMamkF0wQ$omV7zoij#^^S|RRtBKIzz6py~a`p z$H4Ax$dWf+zoUA?T+>^rFJmh(yza2{0$*)f$!?N)w=czFtrkO?;7w*6d4&g|5i3U) zf}@1phsP(+77op#fuHaDrfg@R#TCYLK7`P zX8SG-rWZ6b-2chSvj^d)#=ATgeW5!=@-078bI6-=FVW9OScKUcrkv)N(Dl0y^34;E z`;#JCu;>E? zM)q8DHXarF46O7efGf5aCgL2QeT(=6zXHpX84v9q@@5Wpf)CFYJ?*_$)8anO(?@#PUS!}kQ7tClAZ|$u^jsIoO}NDhJ;cBkr%T-X zi-*$~qI-$CncDJ}Pc4!+9lc~%LAQZLwYL09ct4MMn|q2|8z1~#A@Fo;mU3r;^^ALq zJwha`aWjvfDIY%X$aqMCkUKrx0t-~^#D!Lv5Z|&?@{_wnB8c1eY2^;x>()AWaU_4q zLtJpBoRV@5DwGvP`woh@fHk|l#yw`y_@8&Gu}fTlq0{Olyq8DRUJf#l*yTGuB}7NN z%|pc`Z5ol~Z>7Etd`nvi)9Xq84yD|lAT)c$BGjkL!64H?n-FG+Q!tU%Six6m==DN~ zHLIG>ouw`2b{Ur4#Oqb2;ju2aPKJM~N!$`Vi@NZ_IY=t1va&D!2tuBWM&!NFz0j5-V;G}SYWoG9kLH1+sFe*&c&w0@VV6e&VtPPMRH zdPuOmY8SDh;z3&=8z0J}q&-O*Y!=CBHVL=k!kJJQhM8=ZHFA>S8ms%BRH62Jhsl@f z;(2q?vesHJZG>gSed^H`!4c&tC~NPoTXz#uhrt5jw0uon9XR>M5ZUWeQJR!|z<00* zGUQQ*=3*s|D#ASewDGJ|!9Q|N<_e*4C$)hXRf!F4xU0R+AqN8z9+eesNX-C8=>RH{`J3hZ8D;a3Su^2pBy- zJ5ka!cn2$+4Keo3p4woj*GD^u5nIokvBLK+LH@Wf-L+|I7Z-|X*Iy~2+J|5QkzKLj zNne>oivwdqNZR^5v;x1B;FHt1j5q8aFHC7&Sm(IgHLSq+kvq?ev!-Q&b6HlVS~JTn z-9J8*u=*H zIhuxxED0g2#9k)~Q81)i2?N<(&2A@@?ru@V{Q1QOVl?t*7B!g7`y9#sX zutXfU;}xn(PDd!piv^KzT1|I1ZUuW5>>WLk;>KDJd9}Fk*<$i)5FY|$$OV*d!}f># z#e-Dzs3+@fQo(6WNLyOREUR9tI&Wq#&B18j5W-|~W0dpSQvPYtJ0Vb>PY!o6B%)&{ z9G8-u#vS>lJj0TBwuV&H$e8(7Vj$S($#ZIct3Fg_`JY2W6~pM@2`e+yb1`_qjyM3# z@sf7LwkESxP;O;1f_+c}c0w)ksxSP+LE9naK8j4^w+Uv?w9RM5VPtz}lSNDi_=`QF z$(4)~1>E#abrQk`eAR{)W1bu4X-bm@de{0X{Pk~N!;<6yn4oT z1`Nfg(HNQjj`>J=TGX8`(PrE$&8e5|@(Jv!s2)BHNATsTrN$jC6wCbC?LpgXq9p-d zi)~tb6L#>O#7lU9pzOreTC1tXsV*>s-T8~4*B9Sg$EGZqN=-F2w3l*c92p_5TW2`l zfctt3aE?;MM>5BcK!72V?AA*DRIlbvlvU`7vYWhDjxa01wl0GT6HQDjeBwmvSXR-l zBNOL&@GS$yWk{ORCbI*v>T<_ISRMpOJ#X~0n_~M$Rr$$4kEv;dVt1$*`osnP9N3xgbc1)sX(<~Zs zM=!DRJJy;JlFHg+&A!!G>Rq#->TP7MPwQ-4AV!@9^%O5~njg+u7xdsR6L;?&M$Sm2 zhy;GqQt+$ihiXxQ%;_`jrFyUjUMNCl#XP>js2=W#)=2?f;e@J3Ki2DWGQ7;T13a3u z>juO16|d=B*eFw5iAzo3xnvZNUv{iz-zMy8+vOb6LE9-DJF73yO~uag6>DlGEpYVL zY*SSc>xNc78p2PoBNUw;oz&K|%`1DcrYQJ*p@ioS{b$OWbY!4lbb*uDLX0W$A%}pK zs3dND{kXC{`V&ZGp*A7`it>o_(d;f5~1rBHBP#3+XW;sZrp4V3bwza_%*imKj2y+r!Ngvjg>nu-ZQu zlW5PL)K&?%E3G;t8GNSWfp%HcCo$2^P#HI{Gt}mLUo&qnG97kA{i|J`TuoIrp!Y!`FV7;QJX6>FT+3<3rgii-&b{q6k#J55RCm!5lu z&tK6P6H`24G+MDQ79&SYl+<%LXH{%OZwSUMt8RJ^qwKZK+1D7!>oN31u$n)U7XzwwfAo|V%o>UPck{<&AkHrDu* zQxE(tdXE0j$t~{F>0UpJx&k;fxeyx$2Fa{yLd;LnaCqne@peCgbN@iu|q97|RvyO>AsyH0vY^o*5sQw3{2I-E+$*zW^sKlMb@IvlS9kPh$b{ zonRZUckiX$gkalN4sPgTLR%{JVc(%mfma;FuX+YCYQeAO;@7xjYB#ELU<`z1`c3|ME0@MOvo4j?VcsJX zK|rJezYKrV`+OYFIXvg*WH(55ZQKjp(NW7|m;wMikwdEo#8ge0nVok;Cvb(FE9#xk z)Z$0<$~tL@RRsuh=OTaMFVNqesf$9sUZ_daE_a8Lo>4F%7DT}W#dJCMbb9ttlF$$h zfi)_#Pp7KoJ7^l*xJ{GAYWD6UBhlA;>rP**EOrU}DAGwhpCHASSb0Z8#>Y8aTGk;9CAl2~BP>h>pNRaa*=ETcn-ndvVZv1Ns4pZt<#s3NozE9hKGzBn- zsP8oFCNjHnAu__*{H6S5|8q>#dK)ie{ z%%FXv7fWXTQID867p}j$Wv-q#w-|(BWdF~h-jyf-2OR(Yv9(awm8J`=kl%DL| zSbHvbpj+>7-R5GU;-k`*o)|9P^Gt{;&Yi#6i%~>#j)Fk>tCouK?HS>LB)j`9#psuw zBPeI^BEh~&&nF=xzTX#_OMtt#M$C~DML;CX+xjIQC+b~bFYL0{|39OuG!~QbEHyEm> zw&qU`K#{O!cN1j>EIJS1-PAk(e)8BXYELI+q{=AH3RB0IMUV;OyqubmvqU-YUJL3)_Yt|@(kx$gX4mbfa^ zx+Igf@WwSX{f}AY=Q@X#hPRu&ErcDUsl=o>0csZ`2^1~Kfx}W z$Up0(y(e}9)Iq(K>W7JpgNKXAt}vkG*;!_lkIWL@(xGyB8iIPZ1oE?vlG_asYV#AR zB_&j;{x+}Fo1mX}2nJToc6@igC?IJTllqnG`iGPl7foVhuJY~V#0)wfR|uZ3nV53M zX>?tDG0hnKsN-*)TA z(W6^vX@R{xx7^3U6a%42(h-zEduqapVLZ?>UIB9qOE&J1X1T)pA?}CzFXlq_q{*|o zj#IR%FOADlk&}}Y*e5+!dMdO1Bva%f47UNF#Ig@jn=yc z>RE89pIR%G@9{(Y5c$rvqQ2kR-e!^lK#0qoVn;M&loiT*jgS#Ul^UMAZ%17$*u8ms zJRy2yH?|YF*CsAgUP0TMC}8Hl%z>ALmW*%W{xON6nN3g62F&W3fbzwjk(UyPCf*-I z+&z!PdT49D(SLpEU+}HivtfenwNPcSL6D^2UUQfPipWZ72e#FuL-)CvlRe7S2j>q{ zrHBEosZ2%6S$6L|X!~ezT@~Nbvo#aNjS^+PHB7;qd84%}m`XyxrihHX(`!V7U4bw$ zg5{x~I(ma_AVe>D@`ie~Djek92y>l0Pxp@TN4XN@b)fbDPC&80b2LIWdjxlElk&+G zOtn%ZlDT&JBNESy4e@O|WZoV(!c;t?vmIsso+tabxO3e)nl;mFTwvFej=*N0%utd} za>Bv(+7R#^ui86UGId!QdaHTf1xY;ld@WgOt|=dgiMjN^S)7mSd!G<`z51f>HRxe| z2pEDZa#IQhonRVvF5&x9ajjrQv%?Xo44F*<b8Tonv0fAHW)-UG>&ySia= zLZkkMvph3bR;kD8rlTFl`9^WCd#LJHMcc=YgND@@pd3CJV=zt$LxH_hdX;#!Y_LXr zMHfS7@46gL+Ui1yrR}J85J7+JzXN8|5||22ww^@CNW0Bzf5c-=w+em`d13#RB$kc9 zWfDriXI;mSZRXw2mO>OC^fg^d&4TiJ-b+mrG$Ut?a`|bHco5p3gK4007U|8cWpJ#J zrjbBkrw(63VmbyYj~$7vm4wX6nnZ(^^+?uo{ z82SF&+m}A_+x_!~tA!Ae|BWWEYRxWJaVu#;&O5*>4@6Y zXI(Kii%o*InhzDxqilF?{*?WkH+VQPCLyNF4Qxj8u`Zl}<7iE;1y;o{$mN?Y^B7^5fQ+L#Z@0!_iDOpSUcpc6O(AXncNRiJohMCyuNn=-oYJ^5gamFWYIAdK zNT_2oAukK1+pm*~1mo)Cf?IxeIe&8|63g24aKPhcAl(D}@b*BR3<|d?4}pQ-J5~%d zJVO3KRhCsN)CiJ$PF1u8*<#-w`p)Qrdz6)}xScsMc=qZXsjngMkT}GDM*TsL;(X+- zZ?x2yjDAtcK^+$}^*hzzurIw_7%J2%M2-|oen6pGeJ`eC=-zbxxh0uQFTR1MY5ojo zNr#0Wq^mLVJZuC)P34KJ(~Q{!#`~W?2td~%LM5kXgKZe({njL9vi9Kv!~2B2t}&E# zpEOR}y$a#8>=Di8fwtfakapXoXorAj5__$q<0Bo8RU-eA{4dP_1?m4@+5N5*N z{UIUz(8bKLCtM+W-tbh6^HDr3^S@7-`aI*~*x)01@rD5~@33-9rixm1qZ{nHg|lAH zd^Z$_c%>^upur5y2wg>IhN5MG{!RGBT=7S_Y-OfpC6%SMo*55LK9v?}j4gOwj$qh2 z?y^k(L!8wrBL`Xrp1!=Aws~ zkXgaGq8orYx=b2AM^&#%^U_P#bG2+@gV1j1rF_i=qepCxDg#(&Vi!}t6UNrqxq!$8 z{opso#cXfbLIpiExhcLce6+Iv=!Gr%=gvQ6!M-4+D^mAjG((V}aDG045y=H)t@VWo z&0o9JP$A|`q0p5vafju6vamy{0~_b~aYjgB*CZ4lWXQE~fMSIa+;a84cXXBSFxc@K zrQ+pb&?EziB-J;4eHa#x<`wpb{Bx%m>9w`Y3Clmn?27;cjCr3-;aEv1;0HK5T&tp$3=FxNkAr| zZ|5WMs=OVSFrGg1HgpVs)bFB2Z2oW^$UIX`+skE}_OKu`cuN(L7an*#>@g=(a_3)f z=<#=eXY@8o>n={xDZWtflrwWIdNrL5eqD}q@;;2%`V+j{bf|a~!tEY3-5 z!85~RXZ5AmRm7RMDV+ln-JyQ`aQC~rasX7gB~+JVRQXd;skyJceJz%*r0qMmg06T< zzFp^*po|%?8<+W4nbs3d^Z{0&Gm&3d%VzS0Wo?i-BR>@8kwHQjToHZX+?{dM8C#Q& zf0@IH0~jRyv0dX!1;y$un#1;?EM5H09sc3(rnFeWl1Nq`bt2E}k;yfmFXC4`_?o@~ zz%pw)9a`W-P4z<)WN#ucGw0Qgh%UcrOeaJbD?tM8R7H@WXIA~4Bt?Qxo6FTphe4T5 z2d`m>R7FX5LO0eUI;rD2^?&&1n2{KaUQlP4YV$%b#NdnnRVhR))*lf9w*2cqAZfIp z0#o89F}LTX6N+6mAF!?00lxi*4R0o=V*eUt*L|$)?X9y_S}Qf5ycD3m@@Bk(?moqt z+XW%iH2tVh(^BCMZs|Zff#7?SzI#NMKiiJGEohZ3HAZ%%sRtj>4wJ(prRXmj0z7kQ zDu9TVtjB<->WY?lg$S}CT$=)^XW#a(BJ?8wkYzx=A>X;X{-+>S9SJO3}=u& zKr1k?4roV+2?GT%k1*A7PGe*q*46w44q9;#opLa(Oa7gZvCwu0pYY_P$pPWR77Jt^g!7>F*$A%LHwJI^N=m^2iCgGwD?r$>OfONpfzP zt$3)w{=AEQn7blgjZ&A~g-Rxl`()XX>jr+<^|UDnJ)?t?`+_lVq5M{9j50%it89^i zyWK%(pk$Av+cjSe?_7$Ze_UQfU8(I*}gz(XcQ4Uvu$|Ictp88 zS`GhoJ_qi-bE>x51ZqMacy>S}bzmafhbgr_F?4)=ztv22AAqez5cBQQ*p^N^!rMwc zlvn~?l*GM5Tuc25^($o3&z}*3ZZ=;srb3-aW*-<-nq$4-sDu3uAZtqDf)a@#_A24@ zldc4az0``+&j;10Msnv9AyUn+EL;sy1fy4on=NdeOXUiG=i^RX(R6L(M^{x-n9G>M%?WF1o?udsE%9uUw&6 z{_I4u@e1rHkAP2yT8fMB$zqo$S~WB*LF0D;c3)1GY>^7AQZamnQ;J1`z(EbvnXgp3 zUtNI;js`58rrJS7#(I`(G&@w4QD>e$0cA@l$V8JYr8`5ZZBFZ?xy*@*A_^Q+52RO6 z7Bf0UczMN&qojuigy6Z|xs_~#Y!G4zNGCj3WovevQGKC7kRHgN8ZvI^!Vrmm8om6F8z7F@ik>4=0%{)quqmJv zxVPkA6Qf8$!=a>kpOT5$kYj1}Ot|QCU$~-kov7`(m?M#hxi`A!*+7V+3&Wx&ubwD6e zf5w>=XePL@x+5=plL15|g0_XxIwRDpPfz>lI(j(8)QAb5E{#qBGZ~NWN1kT;*;zA} zAL^!Q0SWdygfvNO9kBar3z5Vz49!Yz4Say}X6TmILRM@e9l*u48!S%)&TzT5w9K{g zn`Mv!J7y$hPR5P4T9++TAt-mUU^T)t5am(gtE@ytLn%ZmQ!Od{WE?LfH-D2I4~X2O z;RHwU(OmM;t-zG8jL7j)@%a0@8VKZphiTQYxeQ?X6mA3C%{`pApy@6@ROmY~8$9dy z_|Y4JO$r&Pq+zhT=La^XZ;TX01qCPxg?R4Fe3-tDI-h31qyWu{7L}QyZTxWYIP~eX=&BrRpcfX+0w10^B*;-C#{LnGv&L*=(fG?0Gi1B<&MT7!2DH@J z3G}qBf5Wuc*;(gRnxB|tq7e|8)mx&tMbqxmG45nUIFQ8cykhyJxO*x)%e7)_&!koF z(7QadE)=ag)zJ!%VvHu=ok*kqjD)>rIcm0`B8zlO`R`F6Qb~jCV-9WcJ z-j$IC8mWO_-_uPvdRSBxdXdmDXwWPctcZbt=JwsLpEv{4lxK~?c>CaT0fytN#=5ud z1`wbMt||RCW|SIj{;FQ*^`76Gr{U0~Kp#|ubD=7Fug?y$Zxl2rw*dQW7RV*Q@wrgP zU@J1!pO9!2*oFdkW+gm(*=RO}8Tr)lJeR=`V3*ZmZNQcd0!)=?LPl=T;B=JTQ;M^= z4|gVtEL{~adOBTvi0yJ7xTMaT_yb7}t!yX<>PXB1>_}bfe;ODptS}|W#X-Ci&g}{W z_JRKP@uaYNGdtDvf5kzRr^PU%O!aymrED)*Z?#vaP#ZFHB zF3102ZT1g?j|@x=NamKf`Tf2jQnc*Ez$z=m3X-Tw;v?Dvu#51<_n=5*k&hWlVl_$O zX-!gJ3J)B)Hm_U@QhU>fR~5w#37iJI&w-22kHs%q?r}A0KFl$dm(RUq>y9&5 zih_4TKNv@;OfT*1od~FOT3S=-T~KGjjNFDmd*;fv)={GEvEH8J>=q^^i6PKp38Y}P z86p;=S$3>y;0hb!Q(iANOaI)3?7^aT_Dog0%KI{md>d*QYvwLMq+LT^uzb9)sQN1h zM|-x2)LGL90O)4c{4%5MLm(T^07eBqjeb)Sd>=!Sms zz7Y_PTXoI&uKrH>RJY+$4PhwwRPP`MT+1k|tQ*4iQ49W*XtRk`mi?v`Cg_+AaOI{b zG~%pQs+BtD4s2yJt0dFm(xVOHCLl_j1M%x3^f7U~>K>DpdHf6Mcxe(gNvXL9Zh0$L zJvm2K3E^2gQH_?bENS}MJ{GNB{^@le9Hfj{%IDO&DS=Ku_K2`+*cZ_x!PnKj(raBA z@X(IbyreBT^3Yx{Ckn6L2DI*mb};poVYNUR9n4cY*SH&xP2c$DKpqRURZLE;LYabe z6zI@eh`{b&ts7)$ush)~OFT@G5WKuG^(*l1XwSP10*;3*33Db?W2Y9WbeD<;AvK79 zGU;ACnf2}F72bqz4j+T)>v0`1OYOu`vULl1z097UkZRCq$=*5Z^!@s>!Qz`e z(Y|aJC!AtyHDRzs!t~{QjgVr1crho{qLhOvGTE5i7Xf6*T&MQLRO@2X@vjs~y;tO5 z>;}MK79Yj8}RKyp{&OHG!1iMGRsQjz;NFjNuhR zXN8vu&*^!n+-Q;3M!NK=A05R`$CO@0;-63~#YM$vtqJmmip&{$3Fm|OMY)FO8XC^u ziK-PtFMW#7tD~$B)IYrSJGKZQVIi*Vn|H+4>PSV5NppA*O4CD|-1L#A?sgY)NB#ZJ zeYoaW(=SBZ^*~_IfqfB*Wg+=i3@sa{Pku}aE3Ru+M$jA@43-=S@~TmAvuTr!j?(Lz zQ`ckGCVlo5(>_8_%sXa4qU1^M>C*f;j9_P^=Ym##TSn6sXazV93TKa{Aija#&?UY` zvBCRg-cQ`~J8=sf_|RIZ;rj_N^US8b0&3b%iq{mYcA6pLB^JKE0h%jK&QEr8ffa8)6HNEU=nL=cx@r+`sphR}VD!OF zJmSAQ70_PJu|M2sYGRKvB8MNuu+I4Pswv~${_UoPc!xtXlDOiwJj#`zCP9`!?=Bwu zj&_HSN`ap`N=!=>dG$5;>@?5eUtvQ>F|FF6;&+Z=maxc1xKuTOG<5wWON}(J7^k2Q z&vZ=NcDHOC@o8(M2*%tqmpjtr{+WY(n7z%3>PVanhz?L85P!#QPqTfY}^r zt)j}Elvr=qjQ}-Bc5!|r>(QZs%doGqYvY=vRNhnoR3|bvs&s($n z67D&A8?02F21EGdYYB6ZfjubE*z6f=VCZH&=8B`L^8wlP-uv zzA&xy9#|)l1rl^MLV6qG`X0e%pLYno(lzZ4jgeFFK+X8GzS3wD#?(KF8H8v?c5ra@ zT^(`$I_YZ2IXxfgAn5+1=Sjv>60k2WTc`R5+9!Z^+!`^)3hTnnS*o?^F^t($-~S1Rr#M)j^AFkUsBg?^tN4G70dx<`Hj z=pk`QdDtuzI||*$T32LyX>2d7lk)^`n|n?hLj|1p2nLoo4p-iKL4g;*0k!mzZtPMF zFb#Y;CgPT{aaP935ffHWX*1U?UsZ5b!^a z2;+*jd%d>~|IYI2Y@t5sfafqQzE`~Ib3RjNkkAd!vN^OEQFyy$kS$=o1%*H3oht2! z2Njn>`pTbl8*6(;vJub2KbuJ4IC6Q-8sxYRpc4~fHbMOp(VNE+<=brRlmqF zimJA}%34;!P-G3!^X%a&p`aTMBRNZcevLW)?9ZaMeeRJyDUEOL0_8LZ> zU(x6IbR!;KN6jrPJE0>BY|KN6YUtkf^{=DZj#9XAHf!S=HB(pZa(nZ4+KO4Xum#Y^ ziL|z2vqr5VBgTy*u{koEWYT0?VE3M-;f{ag=VN<57^z6sX$uZA*))W2js)~|@nVuT7BO0)n@2u>txnmxq=bxMKMY(wp6{E967e~i6DkT6^mq}#S_+xFYGZQHhO+qP}n zwr$&ezgf*){EOM^evW%v@8W9;MTS{qLv@)#a*34an)7iY_VPWgk zE*0RJGohUcl+-1`3TB#O#e|Ho10+Y-A9?l)eYBDPAef^Vqj?q|rRjgj6{iR`j&2qt zQSB?29qUj+lD*_Dm`Lb|3e`_S1(cu$*S|$TA&)b{rYx=v*R3g#0)xYNO-+Q*Eh$bF zl%?Z3o|ChBp3`i+pGpG)lvPN=3}tDYPWh?MN|kMc1`E<}j^F#u1B*?YX>7UC+q)h?OA!7xALS;4p0Z*!2qp6~WFy;o?Coi!shni-e?-)H*p1CtOOk#h0)6p-%4CFDQ=Kp`Ii{Dgw8uD}$N zkl$gc@jDRLk-YxY#Mb%x$!mRz_7Xz!6lM~Dfbj6}z6dZAarP~K<1^6r{)Gep{}_<2 zFX382zXPG&VFCmEfRD(H!7=#r$N82&A-I#l|MSUDot@97&w+%y57q|S1vK9R_-UC5 zU}MJc4R1EXhvN?Drwhv;uXlgv>?iss2@>)L2ez?Jpg&8{j*emrUmwI30Ju4s`As2* zLJt7a_HzQ^C`dH_K;VY33~3zW`o6;fkxx?x4N&m#69H#&1mz-1_>mxArUwD)TOy#> zh_wBR2m}T^q#!=1_d_YDGr)GP^@jBRPgRU#5cu|KYy%Fet>p`JV0A{L9|6wA0l13t z_aZ5J*Q5AcY!xecqfO`?nSm3JS=&pp86$RsBB{*>^eDW-RNsu;|=w>SbhoC}Ctd z1c2|Ck1ylc(^OiZ+vAtGue$@N^9rm=%c_TOuGGrmb%S=qiC?Y`;1A*eusobKP|B8}@%LAziy zpdR%5KW87HU!#bY{#JSRbwAA&d4gxt@u8cX-(Fz~Ma)ac)|G%lYXU!n^E%A@C2oNO zeOwTv&#Mf;{4ua^cx=x#Yn%l+NTh!idt?lrDZe_3khVefKP^szM1=tHRn+5A2>;xh zNr3JVh3U&^*Pqzy0D->kL7;Gf_=lc=*9o;D{brs5K==WE)PEFzQx{x7CvyhNSa zPO7>vA#Wcs$9-OU93NProQG}ut(DB?937C!S0+k%p3W5?s&DCX@jV$^YQI{vm4nXB z9ys)p4T?4N2SC2GuGW&8Y1%1xMZdpL_;~E(aPqth-I+a|pN zO1bZZNxl_qs1DF;NcbbjhT=`qL#BwhD5uuaY`RTm(da1_Qib3SL}S;uLOCs)dMZtS zKa6E~Y~6ioQ8sKq8ohKH5rY=~^o|XJ=yp$}=7ou(L(9!B*?y#=_CNCId6i*@UdZ&6 z#Q@Ls5Z`Jx>M9}C2octKd#{f8Du~M`ds)3K9UPp5cfA4bolmJPjf!Ed!%B>EceVtwOGdyqm^$sHzsTLi4JB>DpVv+tB6F!mQai*+a1;;-6-P%*(|etnwL~?Kx;s z{1uPYQ#wl9iN8)JcZ*+LUit_qdDo9p{$`OoA2QZ*G|W{;JwCtV!+&5#LM4^Lf0fiz zDTL3-S5kcRreK(PwEjD}0_Tf;+i_~BEVOmYO!8PGsFU(@d}eW#U*Nd>ecV_VS((=4 z?LfBX=VVxGA~I#HW!uRi9-5=Eh<2?M*QDETEy6Ynqg|5(Lv2Q}^Xei9WnVwLDjUGG z-bDgu=SEFf<6ACWM|_>Jx(l!<9*q?>%3zAzTEjR^3`&A)11kXuKBOgkI8BM8abW_g z#i=rmP44{}Z*Zl~P~)!jIGzPPiPLk=)-Xu1&o$sTpTDzI;dAE5j2+ z?)9}8O*eXhDQdsCeD4(^HWEJg4IH@*_Ia?WV}Ctar*tnujKeUTR;>yO86&c_g2R8J zIhwh*H-v93kLMZhdyAz1<0@^h=}_W{#296+>e}^PeCi0HE4w$ntIAV8dtNk)oU??V zN*jh}OO58%O`2AJZ&=BY@@78T3UY>7>GYe~!d@@I!OV`_264998m@CYn(9Z=kfUdL zSvO~CSVk5|=Grwyl;I<#cP|w`S9M9;e||s*MI=nKJpZ0p0Yk8KK3vUp_Ddp zF<=Ps#sPDUWxqrmc&eMo@6qw>PbA%xLuyyRZRv3L8H`VWvl^HfVUEAvo4vRR!<9%m z(V_rzT9RmGJ7gW|$s7zc7}h?u+`^JBa% cG~0XwWrzl-Joh)Rc)~=)59Zuyu>7v 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

    Xhi2KjBINMn@6cgS8Z5F-_ckTSu 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%0D{VNer{9)cM=6qS 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%0D+n?!D4JQtO=6^mgk}x}I-oo~ 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

    |JXY>gsYy|GRCF-w! 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

    j9A2%iUcu*(Ay$X}zS}n24 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

    I$(x{xU?R2Z64}fQrM= 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%0DteO|$_6U=Wz=g+=qTadtIF`YiSk#) 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
    thD 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

    98s3zBS+-&?)Qbi0`-)Ya_(abt)|CKC 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

    )%6a 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

    lx;^Jc4`y9t)ufC)ABO3;3_N$ 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

    !(6sV1n5K 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 S@BhB~-~SKh%|b5#Nc{k34C@5| diff --git a/scripts/eigen-3.3.5.Tensor.patch b/scripts/eigen-3.3.5.Tensor.patch new file mode 100644 index 00000000..54984b94 --- /dev/null +++ b/scripts/eigen-3.3.5.Tensor.patch @@ -0,0 +1,19 @@ +--- ./Eigen/unsupported/Eigen/CXX11/Tensor 2018-07-23 10:33:42.000000000 +0100 ++++ Tensor 2018-08-28 16:15:56.000000000 +0100 +@@ -25,7 +25,7 @@ + #include + #endif + +-#include ++#include "../../../Eigen/src/Core/util/DisableStupidWarnings.h" + + #include "../SpecialFunctions" + #include "src/util/CXX11Meta.h" +@@ -147,6 +147,6 @@ + + #include "src/Tensor/TensorIO.h" + +-#include ++#include "../../../Eigen/src/Core/util/ReenableStupidWarnings.h" + + //#endif // EIGEN_CXX11_TENSOR_MODULE From 0250aa9347e3a6ba47eabae9d9df3702043a614c Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 28 Aug 2018 16:55:48 +0100 Subject: [PATCH 263/267] file committed in error --- Grid/version.h | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Grid/version.h diff --git a/Grid/version.h b/Grid/version.h deleted file mode 100644 index ca8d9007..00000000 --- a/Grid/version.h +++ /dev/null @@ -1 +0,0 @@ -#define GITHASH "5f206df775c54dc2b863bacb5ade177ee58032a8: (HEAD -> feature/hadrons, gh/feature/hadrons, cliath/feature/hadrons) uncommited changes" From f3a0158213882a5b999abf3884a8c304083c9233 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 28 Aug 2018 16:56:07 +0100 Subject: [PATCH 264/267] code cleaning --- Hadrons/Modules/MAction/DWF.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Hadrons/Modules/MAction/DWF.hpp b/Hadrons/Modules/MAction/DWF.hpp index 093dd1a6..0bc32b0d 100644 --- a/Hadrons/Modules/MAction/DWF.hpp +++ b/Hadrons/Modules/MAction/DWF.hpp @@ -72,7 +72,6 @@ protected: virtual void execute(void); }; -extern template class TDWF; MODULE_REGISTER_TMP(DWF, TDWF, MAction); /****************************************************************************** From fb3596f968ab23503b62b282e752e2c3d1b4f6b8 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 28 Aug 2018 16:58:23 +0100 Subject: [PATCH 265/267] Hadrons: precision fixes --- Hadrons/EigenPack.hpp | 12 ++++++------ Hadrons/Modules/MContraction/A2AMesonField.hpp | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Hadrons/EigenPack.hpp b/Hadrons/EigenPack.hpp index a6d4bcf6..f00d905d 100644 --- a/Hadrons/EigenPack.hpp +++ b/Hadrons/EigenPack.hpp @@ -56,7 +56,7 @@ public: VecRecord(void): index(0), eval(0.) {} }; public: - std::vector eval; + std::vector eval; std::vector evec; PackRecord record; public: @@ -119,7 +119,7 @@ protected: } template - void basicRead(std::vector &evec, std::vector &eval, + void basicRead(std::vector &evec, std::vector &eval, const std::string filename, const unsigned int size) { ScidacReader binReader; @@ -144,7 +144,7 @@ protected: } template - void basicReadSingle(T &evec, double &eval, const std::string filename, + void basicReadSingle(T &evec, RealD &eval, const std::string filename, const unsigned int index) { ScidacReader binReader; @@ -166,7 +166,7 @@ protected: template void basicWrite(const std::string filename, std::vector &evec, - const std::vector &eval, const unsigned int size) + const std::vector &eval, const unsigned int size) { ScidacWriter binWriter(evec[0]._grid->IsBoss()); XmlWriter xmlWriter("", "eigenPackPar"); @@ -190,7 +190,7 @@ protected: template void basicWriteSingle(const std::string filename, T &evec, - const double eval, const unsigned int index) + const RealD eval, const unsigned int index) { ScidacWriter binWriter(evec._grid->IsBoss()); XmlWriter xmlWriter("", "eigenPackPar"); @@ -215,7 +215,7 @@ class CoarseEigenPack: public EigenPack public: typedef CoarseF CoarseField; public: - std::vector evalCoarse; + std::vector evalCoarse; std::vector evecCoarse; public: CoarseEigenPack(void) = default; diff --git a/Hadrons/Modules/MContraction/A2AMesonField.hpp b/Hadrons/Modules/MContraction/A2AMesonField.hpp index 797707b9..4ca538e1 100644 --- a/Hadrons/Modules/MContraction/A2AMesonField.hpp +++ b/Hadrons/Modules/MContraction/A2AMesonField.hpp @@ -94,7 +94,7 @@ private: bool hasPhase_{false}; std::string momphName_; std::vector gamma_; - std::vector> mom_; + std::vector> mom_; std::vector> nodeFile_; }; From 6b42577b6b1f739cb084ec929a3e465907ce1f19 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 28 Aug 2018 16:58:37 +0100 Subject: [PATCH 266/267] gitignore update --- .gitignore | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/.gitignore b/.gitignore index a633c0e9..e23a1208 100644 --- a/.gitignore +++ b/.gitignore @@ -83,6 +83,7 @@ ltmain.sh .Trashes ehthumbs.db Thumbs.db +.dirstamp # build directory # ################### @@ -97,11 +98,8 @@ build.sh # Eigen source # ################ -lib/Eigen/* - -# FFTW source # -################ -lib/fftw/* +Grid/Eigen +Eigen/* # libtool macros # ################## @@ -112,25 +110,8 @@ m4/libtool.m4 ################ gh-pages/ -# Buck files # -############## -.buck* -buck-out -BUCK -make-bin-BUCK.sh - # generated sources # ##################### -lib/qcd/spin/gamma-gen/*.h -lib/qcd/spin/gamma-gen/*.cc -lib/version.h - -# vs code editor files # -######################## -.vscode/ -.vscode/settings.json -settings.json - -# Eigen # -######### -Eigen +Grid/qcd/spin/gamma-gen/*.h +Grid/qcd/spin/gamma-gen/*.cc +Grid/version.h From c527dc3358c1e2790d408c3faa738f7267e72a9a Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Tue, 28 Aug 2018 17:10:08 +0100 Subject: [PATCH 267/267] CI fix --- .travis.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 55f7c097..14a0b1bb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ before_install: - if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$CC" == "clang" ]]; then export PATH="${GRIDDIR}/clang/bin:${PATH}"; fi - if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$CC" == "clang" ]]; then export LD_LIBRARY_PATH="${GRIDDIR}/clang/lib:${LD_LIBRARY_PATH}"; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install libmpc; fi + - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install libmpc openssl; fi install: - export CWD=`pwd` @@ -33,6 +33,7 @@ install: - which $CXX - $CXX --version - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export LDFLAGS='-L/usr/local/lib'; fi + - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export EXTRACONF='--with-openssl=/usr/local/opt/openssl'; fi script: - ./bootstrap.sh @@ -49,11 +50,11 @@ script: - make -j4 - make install - cd $CWD/build - - ../configure --enable-precision=single --enable-simd=SSE4 --enable-comms=none --with-lime=$CWD/build/lime/install + - ../configure --enable-precision=single --enable-simd=SSE4 --enable-comms=none --with-lime=$CWD/build/lime/install ${EXTRACONF} - make -j4 - ./benchmarks/Benchmark_dwf --threads 1 --debug-signals - echo make clean - - ../configure --enable-precision=double --enable-simd=SSE4 --enable-comms=none --with-lime=$CWD/build/lime/install + - ../configure --enable-precision=double --enable-simd=SSE4 --enable-comms=none --with-lime=$CWD/build/lime/install ${EXTRACONF} - make -j4 - ./benchmarks/Benchmark_dwf --threads 1 --debug-signals - make check

    rcxMe+&_-IP^UiAmOq`gB*^8|lFO$| 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�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 d! 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%0DKo>N>sB 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

    ZBPI!cIR=}j)BrNjZ9T^O*u zSAQA5zb;byY(cwwDoh@g2`fx9ug7yh(JOhOm&Vb$A8-TtE(=O5Xtgmo2z>%s2=l0Cu&64iaXV26Y6dL7L+og;9?ISm|bhI2!IW&L0tDIYVuhrg>N zSlz?S1X%(-!gjhGc5$qM!k7J218d;oakc{(k}b=6!AkjI9-;)Bu_xt137{dk?Gay- zi@%)b>2r=irN!K9{#;_yM|p0+CnK~vCFD`uqzDL3bWk>@_qcG z;?xmzVyqPKpGZSAnLX7txj<~V;V_e^aEM1v5YH$v6Zvb4H{}j(0C$>@XbytPk~GF8 zyu;8>>N)#)+=B0!tkdJ#b#w(+*|o)qjk_l(%?klkCP&6%oW#O zOTy+*c$#0($tw{qje7nf@?bdLk*R%P?4#3=J8ef(CsIuUBH6ZU*TgQ@3fnbLZGZ@g z!Rd~42daq&E>N*nRxFMfZ=ZVS@^dwnXnGFGX<0cxT`HqXBeB3Y5lyuH|ft#IRL%=0`G(zdvMHIyFzXsQ8l~nr1a+ z<)B01fqZ(f5jFviSj`nV5|}nTV5Hh|IqxxIYQcL1qJJ{3YvA9H{G%$YTn(i#nDaKx)%-(W|?)qWD;KT+h#$!W)YT>5I%nh z(PPGuKP&UC3Cb>_eSO;}i1sMwoK;HN!cn1ox|k**M(9nP_Qtey%qk)~zqnQ|kAQ!% zZc;|BK+SEWG+!)LKn(pbHH$XjggG1ThZIZV>!6+V4+@Y*@a&d`{D&|O%`Cg1?j+|g zeawPhhI02+R#729J(?+ zq`nzw7FJqX9M1(AhS-!3Ht4{A!7O9b?ArRTtcG?#gwu+A6Wj^kl3r}GN&TZJ=cl0q zf2wPa?oK7Lz^wX3b@Z*7n@^Gg)o2e}@ip8u7f#kEGU~OVB8en@5c!CTT#|$i1{IG< z3bemKKATzC5g=aT^Dp#mj}_=^Cb}Qb6eN{2pFr+@9HK12b~^y5T=~p9oNwOSbDO~( zVLy5kinzUdhKT;?v6`Ye|4RdnYEiL1W?KR=M7Ow^_roZ2VOT;$pCeIdv>4Yf6w{?{ z2%Zhm>CAg>+i67t&;@9onogo%1KqT+2qRGlrhix@^acc_z-BLYy|8D=V*L%33#|1I9scM`0r-7#3mcN%P? z0d~@DNmz`cb#!h~n7}j||6cgpVV{4MFk$Aur41&Q|5j9I z`=1|n@4?iu+Zuo1?Gv&q0d$J{l0A(N>ng6*YKBikwx>wU&llY!6H=s;Bz5ugF>`gT zC=nTZ%~8gve>HM-b?r49SHt{%P)(?*POet?ux#>4=~($S6%Bgx^BCdPhVr)n`FQ$V zfk)S@b03YY-miLbiMG_K;UlrLo9b$~ol~MTDb&p?k-9iOH2lG?>8`80>b+%q(V%k9 z%@WyYlE3Qf`F!&1RDpgFxkPw$c$BHdNSjP*+uFSuEA0XtG)|3fV})~f?78a8jo_jD zibNajy#`a?LE3+*wQ+;k&)-Lor`qfo4Ds>{pC2&n;6!Ho@E(2ehc$2F)LggTOl4~g zH{FY!(ZMDJUhP*_ro&u&_HVqC_9K3Lf@;_!-iAl-R!6O77~CI9F)ppAp0YkAeToVL zime}<+-?Y~s8%ltq$Gx{gmTmT*YDBBHZO^an>>x>@3>{haRVF~{)7{6YDt>D61d+9 z3Iwx6(3Q+gY$MX&fPu;kg$AcEose;wQN(isdNkPQbQ4UVqO^j~T-#}C?TTA-UHg#s z{2&ipBO5JWWvb-{43I`^)6=Dn%#))msTWpLi6f2WGwr+@1^aCeRC`%)+sDEBpa$cX zf5WiD;;c=6l0IuZ74h6~dyj)OJuA?p`nX0%VaYsit_=6W3Dc74jF`5yBilr&rG)42 z=&3u`jMMCXw=9eDZrSyIIoOAlzf*N|Bn!@wb}nZ74Z+}%3lqa^OKQVm_RZM_7O#&? zDm%F=ynAENP#58TwH__cLbP8$VaxAHLdJmq&n}17JL4Te$5Z1?3&Ce&;nTivXZ0db zFs7$VmDJ?ST7@{W7Yw_`!e_1J%|HcNr0r_4xAs*>HL>6PuhqJaS3pOt*;TZ#Y=Qx3 z6-u<~@fd#z7W_vbgp~4>$w7&3o)vMiQLC|uSkbwx)zi`_L%i5fME`zqnC+EuYPitE z>7O}X^`9jABfoEf`)bJH1$t@X83)kQ$*2tRmAJ240z*neHG_CC?@XTqvY?Cz~`_Dp*xBnCx%1>$tbReGJ)#r~9+R?tnW#c+|P!<|qGg zIAMRI%tQwrSk{PuOSl%aH%sJ%Oz7H=(}fG?a6*JAermjgtH8rYasbx4ay-fOHq%Tx&TC2b3JqPHztN&QfE)BY3i#?yG^MikYU$;(^YR46>idZgt5C89EUhciEN z!Lq;N{jFJt;{*kLc_u7)Cz@lh7d-bZkWQ~XuLBS$2h@0{o`|j=$1otR(~!GxL^M*O zMLrW9BA!HAND3lqQ?Y{-N!l{naozJ2Nlf3^I-b1)o8b^+6N|EEp}M|2cynD%Td%gL zi()p4gy>^fI-U~_i-yeUX6jJ8a|(j>p=I@=KmJOeWiN|?D2^w6{ndnHCv+cg`6(O} zi(1$~cj2wt-6K=DbP5p6ZMIPb`#Q3dsIc;DGxAHN zeWXpDW3huOd{*znhy$t-+e9i)L=e_gY01Ni3h(gDAdyyuHdBIf9Rkl4loiwaScnzY ztXiyB*22cgsR4lf^jFKS0{z4bTZVDu;sN|!LvCR$h;0WP6r68lmJ3yffcRzl{YCb_ z+ez#^$*Avl3nk3>tn{9{16^}}-($%!i6hg@dAyLTQdC8D+0$*eXocP})RJk@Mnv8K zQCPX`La2kgd21abWP>q($32(vnAVRvWj&BM=SFB`lh)FjMY|9%!dT&)E3$$HFLSh`OW+bVLvL^#VV8XjK}6TH8_=|Q z$&^~`9{ozWh2~LH%wLfon(WWZ9Y7A+reg<|57e5UCw+uYX|F~ZZK%@lqnm<@^I?CC z2?jR@Cs|8jS|$+t6kY^=CF-4fP|c5f zhkG^CR2o47x=2c5cY3-#I#bwGgUKY^$77woaJa=@!%0E9y~sECV**8k18!Xbm+uEt zDOQpO4Dj+PR83?N@#~ZiXY(`pE`Lt1?zb)lZAuNCmSwZpVTrw>B(OfAZ?C;){ZpQf zf)sZGt1bhXAXnQ<1A>G>w#7hjfspv{s?w)3iBZ6h`DovqUibZQYkY!C8;_>) zN?El|-OdAqwNHos#DaLanEDj?OLl~Qi*L8tKMD{iSVgEw%L+lFRUYo)uqTUPeL@O6 zJ!be4YV_&kvB@upaX(E?paAq0)fy{x&}B|n?(H&TlzVU*^Dw}~;BRZY{!33r5%zFnPK zbm`N;ldx9bJ0=M3FOf*)vvC3~a&gn2GYTB{vXfMaAp>=C{w$SRZ zB6e$4*m8@TXh74n{1qD?`J{9iULWgXh)Qn+I9E_;+H@7YScEq1T0Mk<-^d?^<&{QB z+$+dAkS2v?Nq{9G-Yt^B4;G>NeD1Ne?9)DTq{XwoD@t4ZchDx_J^=HW3A_Cbi{Gge z$zLm|Qb%5|3-(7n_@D8v*aW<2pt@iDK{aI6|H{7q@-P9*|AW5&g?-E_3;;sHpwhsg zPDVz&(#X&u$J%tj_2!D5K*5N|vnCL#W`@=v#SK(|0NCPZEoE+@`>k?8h zt>U)YAG~}=e7P~zsS8DVHsvo0I;#!50;3r!G9id&`mb}v7^(} zXV%kLZy$YP25);47|`XVBlQ{ zDCN$o_3?e5jO5{$CLJ++=g<(HpvF<&r+*eiw%n&1Z>lAj;vKDU$qC)vSk`n)&nnGi z1M;U84(jwXRz$j|b%Bkm9>aQVF{{)LPG=p140=X%TWf7}?xE*wR9h*x?KoI~r|(rKw~0x{yP$qh{hQ``0KM{2kjLy1a0ND!GdnD|nZ_zur_O{evecGK>uwqqHf{pp{2hr8cPKoq7v9w9Gd<1u~mKrP}aZZae{KSo8DJp_d2aXJ@SD81XNH9Jn~ zi5Ei&uzXG65hTUIB%0m4MUMMrCK`iKU1db$sz9LFs%7puFWFc(9eZzRIO`tga=YR& z4hbs2cm`Ya!t*+nwtx%bF2_i9=SRvS)@9S=jpeHoa0q3zH+r_}?T>)j9EEEwr^$Xr zm8S-)2g{bq*tC# zq(APCf1Iil0fb?BV>WsG*WWYYDKgOx+29r9xT-wHXeILucvUYb-XJACn-sGJy#F0(_-VDb3)f^F?54=jAla* zNu|DMY;sv>ky(;|a97ge3=C>Xb>Sv@E`snhZ8OdpNy-r8G~Q;?XQcNKFY z^ARc%A7DFaNtBQ)XNr4oJ}ca|-a}Iqs^;LtrwbRsHT*9rt#VrcH$ce0t-yG{jzLCD zQ%Ed1N(z8blC)rZ#XMT-n*t-ZDX^BrjUrvJe}8C)A>50JdLlc8L8*6^e0JN0V zc+uk;;_E>Xk1YHE*sQr9N-{sF1EhZtcsB{caew?P!ic>)aC5HcdD|CSWs58H{2i_% zOy)`0h*57i`gI+?bhMdVN|=*;;kGm}oj9wD21D(&A&5cHfy4nG2;kg0`4u?2R0C6^ zpN+W7Bo2bwJ0J*qxTCY@@)MRM<=kYdWK58zW0Us zU*ecMaljTf@2CYNKzl*^I$>6UF(Xr#y=$saz`1MS){bWPRtfXbI(*^;!_=%H(e&7e zpxv}d1=K|a{KElRAQH1OWlEJVjFWHt5I?HYj%REJdcEzBXX}7afsY4FgB$$r-~i}5 zu;Iu&J&wmPWuXLII<;k_6vD>4T9B4L+RMqB79L*vCSV{>4+j5OFEOGr&sNKVPXGCE|p*Mgwr2~wCP#dA6PA(Xv3Wlpt74lf!<=^Et=Uk!us7GwwY zT}UV~i_qQP&fd>8TjoumgZS}iXjfKQof=YOA=&-WpW zW(p$rOM86X-&H3>A5%PyV!K;~-fnaIbLS~AkK7>r;!^O13TT{58df!QH6L6jBR zml6oJ>Ewswl#{+T|5~o7EZ#RZDky=9#*$j#mq|s6+xx3C1y;+Mftn2WAslK0eL~|w zGxVqvva{o{y@BF+AOz#LVo`_E5v}ML=LykmB5g_XE)mCnYDmy2e!DWBh_E^YcqmEb z%{tg(&3}?)WI4%EEj=|CU6Vx*=*(TiD{YLdDp@=T$;29H!*VB%r7HfNY7UR6Bmk@tD}xlNgKw-awQY|=ool%x@kE8fEw+p5?Q!EBIe;0!KX#28Ze)dz*7u#~tT z_jBhKZpAf|I5&=ka5IpmB#Cf+BLbr>r-+?%iipt>>w5MOF5DxJug_73rqOvPOT)i! z(q?+$x{X$hiTWUNxEO(jr$*sc`spi&P05^0PS1}(;YkSLR8@FEdmB6PCCC0Kh{wK- zq0YA=Ux*qUpIve@>-kJtlFV!0RC?F+GQUW^B!f9=+#y-&=VBRsua-6BnO+jfY;A5k z_O-Tczm8kHBoJ1JxHHrd=~IM22sky#Ph10T^iK#y1l;UJEs{~%=W*V)Z5>d4t}&}Y zwB*N<8~E+-d~^WmKZH{}tK#M6&C}_TlGrrSJceoYvg3{__@AO1B=-V=JUiMa!Bj#; zXkq6f-KF$mgOSi^42YHO{&QX3nk*B6Vusrl&NN&$oigjmWO4gJ_NUtNHgvqd2hEBF z8jmGUvdtPng1n}iAj>PE;w|9=cKNfvi?~QdB)5uB6!|FNa?@`d4KE@dg=1(HUF+Gx zm>n*rrp7ly>AYKi5sNQFfMZ5tgFIbBD0qrP3-5T(22Q`4ROH4X{= z>llU!Ndk%+1;xyg;(_0w&cHJP7Y;r9YPyW&+^~ya&a=T{IB@W(YT7+8vQ@x!-NF* zlYwY5rRnr+75hbxSVVI$9x%lYFx2o`7HNeNpzwQ>{yt}|D3wY*9qjup++JC^TPA~4|8M@Qdbpz@wCvQiKRmt7B~Nel56>8%?%Cz`xZ{pdqrQ8@SFOz0cCO60 zzAQuqy_9A7)fBQkClLhbgnxd%%!Iv=MH10J66+l$o9*pHpA8$lb7Kx>$U7zfALXYu z*=)Vct<|%<#@aO5MG3d7FNoP95-^}P(O_e`)Doi)LQI3 z-u7Zv(#m&h*$qx7@lt91b&lSqe!;i)jZp)aO(ZW-NPDM*$Vp^bwq4;DY9Z~9!rH1F zSEZXhztvE-;z}!(8i@;^5s*(C7oe0As@(>c>IU62-TBzy3le3(b(iWK!Zf3oeI_y@ zjI!h4j`(Ju*}``n70F*QykrJ&Q|M|Hq}QJfgSf#1^Gi2x>pZ~m<7$k)WVKz%c=3(@ z3)}UpkNGk<8~9hwQPW*`iB-B1x(v{)OHqthI3KayN$>fD>A_5^Oy#wPb`!zfdQ?(# zkseigd#z*Qj$$1cX25}aPkQHa2Zip7{lWuU;h}9YzAxDHM4H7D< zHTXs!5E;cAm);3r;9Sj9qRc;;lyM;EB98X_XA3ooUb^7Eq~pZGs=hlY>T-MK&Z4|Z zcH2uY-JL@Z6EZ13+^);esJ2{2 zI=eqkGTs~7*NW+>m37Pc6`Kwe$I0UWbB`iKMsgF{d2OTIr=7SV1{zS8oT<0C%6o*@ zc~w(m<427U`1rTIP8)eaFO3cm@Sbsv_F&8Yb`EBM7G2#>JBTAYlIot|g=Z2s^iNrh z+&1Pt9Jd=sUeP>fl6npM1ap)2epp3QP*YoBx&3FNh9PSg&zQbDnU?CSL?ASMHFFPa zEAuAti4a1B!R#D{eKtMw^q5+Lr;FlsT@=vXus;*uldQEAe^YbShq2~5ieqdm^Pil1 z|4gLZt0kNen@v<~*pwnR%`i$xc<};;LcVODbIRA@`F13&ae3Q$&U&?=yC`XE@M252 z%(Bp#_y7 znh)&p-jZ-MHmVHIzYy(8aGb-{cW3>u5GmJ%s3HinThKPW=_iMRC#Ij2G}_Lk;rEf0 zc@47O;O`xx{q0rcIIJHVA@9weX5>T-W6*i~=%VdjwSI=_(YIFfx1oXPM@3Bc$<QGMNF2%PT13cylhWlwcat$5q zjuMKmL!k~_s=n1v9WgXwmqXG5q(7r$fKvO+x!KDnaFRKns z*tc8&Pzi`Ys7e!97qwbs<5h)C%upRMmWe3NAS*jS9M+e$-pIW^wb_Eei?|ZSN3|ai zV*M_KO3^k%srIq?8c&{{SZFY!CJ0)2#KF|2oj8>Tz?`)p8dn5(qyc77mV!|r=cd{R zASl>h10iI65%@Ra4;bj^UxP%Aae!J74psxfH6a`%K;kzq(NB02v;=q%bA;dQ5`IUiay4xP&9SWAjG&U;AaD<&Fidx0xbQiE zgrPE3=UimyFNG~a$>oLDZa~;1&T9U!Z~zx{IPw0n;6@15scf@^f|$UZAf%z_>yB2g zBML9!1mQdrEHeGnoEFwLVF~o&Sotw9hV{pTx7Z$uXYNCBh#8yT6Ul4)z*?T!dZ)Z| z8Ik#seF!6ge9yiFUjRTyx6V+6@NDbGhGMRn4)nw)|6vG$h!XcQYtLjF&$!g2bEzFr zqGC9%;uk1Hw^6ZHBiK0V(!v4ZT>FiTpB8+WMK_m^3c3Mt2!eW?9Vxh40e8yg&m(pf zGryde^!vrk))xL=Uq{c!+1y^w=U7)sQRDX9oWfM%m-SX@t~wbGxS$fusNsUxdMZiJ zif?(+NVR>;?U+9PX-At4+EEh6TM&!SV8=xUsN$_)^1ZH{XvDNOvQfH7ylPBtkUlBo z7HkK2{o9`Cu;kDFb*cOP;VmKCPBs4%ZP_X5NZfp!u*-pDqKm{&P!5BT8EqBNkPn=U zO@q0?LG|im8ROars~@QC&sU$$f^+ql)`y(=ezkrRrHE;hz?;_;W>YaD##z=4MV1~tbZn;o%V%0CQ z$gc+LAT2p?_Ph*dv(gs8N5E4sI(-p}p%Nhe%_?ySH3E7a2^;~{!?YwSs4`hYEYhB* z>4nNoV~Ye(fXbO(ag zRt3C54hIp_`xMqe=2FeT7+5K>*e+~O9LESoxx?;`1iTMQw(;7~ z#TW)TItDDV2K<<4sfYt=ND}>Eqxe_Ho&Xku=^;r)u6cm3i)}OQ*q9Tn*IsmHcBm%% z=*EgdWl0;eH8yZt)Nf%IsHlOjUZ(E&5aJT@L}*-LdehO<<5uhe6mIar9H`dIn+2Ou zZJPF;nzNN)Y8P0#$703`I-m#k7KF%~)j}i)?0k4mB3zxUG?( zlev57I*vKJ27~~V$+-s-DO-bMeS!#1$OhM@dM09O*)0nrOZMZ+0}YBtR$>zB^L9~F|Db1U zAVCt+5tNiOU$i-X{Fc(hVJ7fwiqAkpZkONCK1!_K`0i^a%(WHd6cceq-u z%QwVyrap;tnm84N8YX(8mYkE^x+NX>VDey=Odd|TJt$=}ZOQ%`vp@KCyk4^ZRqvet zP46uK^HsbQ4UM?1aYWy@y7V>$|B3pE(-a;MIejzSeqCZ}BSd%fD7*?%#!`s@Sx+7@ zU++uH#Kn1CdN7Pv4V@j;mlZ-6^r5`Ys>3cK*&?Ylx2~tAbg{1^T=w6eIWwu%ka`B~ z>hG`DjXXV*jhx6Ls@mn9*Lsqcojo6jUk9eNf!8bs*(HLnDY9iQ=-ucUg|MNDHdDJd zp0~@D*E8Al;tVChQno(ZznAM1S1wNJ#5-d|HNJxe06drEOCChLCna&Jm1!fik}QU) zr2R12@<7`pvH@TQRe++>onk8YSnH*nqcgLU$6voB|V#xEr`Jd7rga zz023}q3_#U&gV!L`y71K*Ul-0JlP@fCCnqtzr7&{NB^{vt&)VvcgOK^IdjeRX8 zC+AdbFE0bC8a>uS0Gv%vsK&(=y<%46vH%_o&!tY`wLFh)h!Swmz|s!997tepA%{*C z!8EFSrQhv_m~P8`5(|9q3zG(iThFN|a>DseWb2|;)Em+v9!IAM zbL3M=yl*742d}WqrbjwQ;|g?fp|b)pOogb}Yks~l;{BSj0s1!Ivu^d}DDGEgh>WbA z;uGBu4}6GZO&j(*diy@04=USlBx=|j!ay$y1_%8^m#HauQ+5cw7X!m9>cc*}>x_|E z%Lt}AQA9A`Ho4OQ$IP>C!vZ1;`%-kjV@%Ik0VGlN}%#B!Qn6sODR>ob2Nmm~F{D9l}M2wrI_5+qP}nwr$(CZQHhO+qP}*ed@l~s>W^HYE>(pq>*H; zWc=TpV-DYgPtE&)l~O|26{FM}=;u;;nPjFV&IdV};_`pDyV1AT>Gti`dCc_1M44*E zjF&*KQgH$4W8nhJu_~GR(AzP>?qINnjfsdi*5-HE+?$Eu-~mXe9C&27k8ig>O2lKA zi5OYx@WjU9eaJ2yic1mp?zlby0LesD)idLGS;q0SPb~*`iz95jqK**)d+9bZtF4MSZ&|E{9gONXS-mHsD!R% zkyX(tZYaWpAj;EkwDG}*Ik~9Bx&eGKDz7W zJrCOySpl>*;|ms7-+M2tO(m+K$MHOX3P1d7fH$ic^p>!Rhm%GBj#gh;xS5Gwxc`cX zoT~4|5`t4x4f0AxNj1cBc06ztiB+mhla#3u>+K6^^TLyQ57GjSGR_ zx1FoYEH`-X5Yps!p0hEI`BxD{koJUWUUeoCh2>8*z~WU->@pf#8w{1ubJduoxjB(yT8}amZ;om)ivSfM$jLEjbsbqxAuwF2A)pHhlb^NlQhZ>v z3U;hB@_=NhZ*Q+0F!21E^Kb2NZn6;3pm+o>)rrMF=uCjH(khuefdCDw2ml-53opMZ zy_7D5nsHvL*_y+H6``mWyP}gCD2)>P3If2+xZAXB=B9#rHR;Jl;d?u2D1yK?n>%wRzKz=xI}q6YQ$io8YR$uEeiFHBrl{SECfbt{ zC<14M^KR-P?hK$|UTNu%OaRq8u{PcbRk6sUsZ}a<0NH-h34+27a>1sHL&`P^b~>cc z1##nuz~jhIMjb7!d5b@eNGwo)dIounMtEMNeTme`*f6>l;!?5q4$JD@cnp#@LsC zeM6KbLWtqBO9BqEXY8~?Px-laX!JR4YZvj&Db9c%iYqcIDHuWG0tKNo zcsU`6c23L`HVc!NQS9LU`f6fFIVnPvimRkDboq#Y&A6Oaq(p;NPmH_rPm#E$%Fn@V z(*_pRK|zW;!f+Hp;ARap)I)LVjm3eV&zv4*r{E2`&v7@hD^)7Si3GsUqXC8g=Ssr) zlmkp&|8zZ9YCz{vhH#q$DRmx#?J%GIB6&>tAz#+o2pj28-c_}4b30!^bSJK!)gW) zspYz}O3{+)r|xAH1Wm3{1(mf()@>Lz3>P7oBBDnfEEK_OYnv@5JhB&PC~Gj+3AhG9 zkYti#6JS`kmjcPhi#+oBYy6J*YGw73k~wSbs?)=W6_5ac^B9JfchT3op^9*nt=@bP zU4Fk)al96JpF^TECwLCmuR##-G7m8B=q9)qG5rgTc9UE|2Gu`6>A4~lo^6${VyHz_ za8Fim%8Y{mTx~fc9w=<9Ptgcz6%6AfVJZea2RmGsstTFqOx4CmkQ$})^+;m$EPs4% z70gN{S*lM|gQ?=4ue*(Yi6WP<;==B!@HE4hnr@4_f8b~5LeT$B)w44H|K1bC%K6{C zuS~4}A9{l9ci5i1{X!S%cR_n<_Tsr;hF5!0=&(pEa8HD_Uoay7Pa3$2V$<>WD?7cE zmZqIEgb`dgu@gtm`!x4QfIsha!gYJGQh@*UXnJ-i{tU6TI|yduhdU;WL3I{x@zN_aD8`!8~R zzn|}WVBxqG2O-MsUeES-_xA6geA3GH=;7acH@^Pwx7`sXToAnp9%a5`KG1t5)DH*J zT{4Z59|q(5ER=kd0gKg5vW_pFtDy<%Ux=K8Y~iwolw9=gw$e*l4`I zsA&tQzu)D200XNJeSZ)>9p~Ezw)ch@@^EKcyYhCvXlebyC7?E2dlA>g0JXmd?|z59 zQB}`>6O?KPZUST=54@Fpho)S9s$}nK;h~JBJ)n#bRhAncz=-4kSbRMzv=Z+geH5Bo zA5g@2z)fIHkc_U5Pdk_AuoTaOp^ZDVYZ2RH*Y2ywFQ=Ln=7^P}B#+%3|Fi3w4>LNc zd}J=ZI1GC#a~H1Qgy!I+(SzB$|V29wkJs0Hg|?9nW7TCnNkxSwGMmJIc4X$FG_ zI=+UMa1m2tm^ z)%}C`e!a~kr-6omU3*Eb!?g2mr=SB$d@4Z`vGvS6p?ox5tI`=w#28Ntju*1Gj0=Ex z!llBe!zT{*ytGoB4GXoEF2rw2k#0s*>nJ&2;=0a&nQQmmJ(JZ0Fni>z7u z<&7edJ^jRBl7}&z7-+OKg#^KYln7s>Ze2EqnOUSYtt^GqM37mmT^Dk*tUTB>F6eg7 zF0i#2$DV?`so~erSRV8B0^V9ImXH5|QOT^uGW2PyryV}3Sr)Yrb|EFkVG6Hr6XX>% za@)h)PY!T9XthaWlec}1?DW?!&)e%5#q-Y-6V>lSwV8|Qkl-cWd;)4u5weMfw13LgOBbDbSOU8X*W$P$aAp^<`ln>5@M!_E&CD4Q>cdaLE1eA37Y>1a6y08&Y zWmG@7t?Dw%T8aoQZXYgfI|N-T1c(Kw$uI3bz*09$4u{P8akkA=A_iV;GGSL`UB4+m z@t({gB&MRo49Ts_OagvkmSTe2y4(R|K9aedrQ6jTlKF{Vc6`~UB?IOtv>t+}$*nG{ z-To$rh)eKM&O#NNNIr9jPdbD3IK-mtC*+ld#6+w>jbo8tSF}Ht+KnUz%+R~_q32s4`Xxfgkg-e4aSNde(6Bbi%=PPXQfpElwyq;7Rv@yz?!j@ye>Z`~5y^rj zw&4Cfr{L^9!7k__`2w_`v;?n5w^&Jfu*OqRq{~HyIHso2G*X8aINRJ3bOTswGsLKm zJZ2&tk{aqt8dgOrfhiq4*c^D&1|5w8mb_0g^-A}mf+*8LfVqgzZnxk2c|5$G=lAVT zg)X}%i&x}dPCq7*lJdxz;nB!H}_f(b)^aAcQ?{$sCr+xsX6V)9jr*YRS&Qson zC=blU_|Mmlp_ycUNSf!1f|D+x019$&_2ZCgM&T*r^uR$*7; zMGWD<3mL!w4O!khHqw+0eY!#9De+z&SuQomgn!iA8gw$*^*=b!{AhU0IB$^A|aUL(Db9zt(fM zaH7NH_0%j9;UBJkx;BzFj^%+_&mhyDkASHVoN)zY4emTpvT-Evc^g32Mc4yUX-A_9 z1w;pXDegtLgZqj(1>~TG>pX?r6!zh@)37;IKsCPU*hD3L!M z-P+;j#TT1Wmc*~bLRC#>EP#2eXUc0D;yk|hst)1xn4Mb55Cvq(If@AtT*#rw=gwT# zwptG+KznRxNXHueYIzRF$H6d%V*!oikZ4MmMSjNy?4}6wSnd-fWMO# ztON|#tH>gDnZofx(RFQy(@5(A9tm&wMWm?TTY^q@M3Go~F4pv{ply)M~0#n+%T)5@r&%6RY~UNwrfTII&+w3#ljPkHu-y$h}y z&$GZ`4n=~$Y5*~Q`M-OM!#;i*wvC6WYvYJs{Q&?9Enco>cs!T0&256hekJ7{x+)| z;3e^v>8T|QDA9!~782(4nj`YxZyoB7M-_QEFFSh&ZSm)xt_!cMHb0@S*x%munhZRo z7&-@DmP*mZl&tbStkEi#cNj(|X34mf>VP0P!Rmc+O1g6;CkEu+OjVNkK3w!kIIkaZZmy$$H1EkNK)zw8=9n7tp;UB}SStw#EGk~;-FJ(mC z5`q=5m=g=!6k8Lzf(SItFgaWY!7QuHl8nD2{d116aM07C932JbuO|>M7#sunRTU+# z@3|Ty`Xh9evy@P>Y5ny{A5}^p?VS?>b`BEe))jYpy$3-{C_@Skq>EK^KCICL#Qm(a zdeHuEP&;ZMJQJ2UWzVu;xFNH?EF#d#bo&PtlR7#eB#2Js`9(VQDaE{QLjOP?W>$to zZhi>H$;TuL(K^QAP9k+aBlVvfd%6}lvgW%GWN^tp=(7;|QXmEDN}o3LRc_hY>3K}9 zqC88TA)0jAY}ISNq=`y#gEItN+PA6PU=|z=KsAZNSnoA zZu|rIQC*4uZy3VH`d{iBOpHwbGlpn*+wXKB{^QRd5(vy;`ws#Y;c2sjdP({^7@o&) zqlXi@Z!BrmsmH2mNoeuc>Gv_`6sjeil7$nTCEz4J|I9j^N&@^lnPlRSES8{AbxXS6 z195BZ_>*y4^4cpyqg(msh&Sor9HV6Nw5Vd?JcBq^e~!`kIxwx2d$b?c&;-IBFj zVNrp;Tup_iS=C~nQC?#()2r()GJDex=BTLFBOrV7YNwZ4))4-#38yC}G*&W`CC5x4 zl@hA2;wI`-VXbfdyaK-8JKSSlv~FGuZwmfCrL3dLeQN1lj%IM}>9VmdYQxIJ zdx$SgjdS1Pl}tg${+qH29ucwCsbW{gV`HSkX{bta0fi1aZ<^W0>IKWz_*xgJLRuZ4 z6fWHSSIm$o2;p)DbZ~V%y1MW8;Yp{YLX&bMj7guvNjI|mHx4WRc*MMhQwr zN|YKhal%cvpg$3EDkTC@B}}42>jUZKPg&*NK^;5!PqC_Jy6OT-7p?zYn@u>e;eweM zA#6!$BBAiQtnwbaS6J5c09T7k!s(1qkQ`{x155?@Q&}a9->Ut!PzO2oGS%zH6q3n! z4r9-Urt3Cmy+{BO^?mRxJzMr2qjq4#L`!cVGHB9Hj&>iH$%&RMJt}RFzxoK0LbM=+ z`uYoCQ2eDY5XY7fS^nG@3O7}*WV;8!{@MRD_yYY>sY^Kr!@`~#EP@STSY2{RGfsvz zwjeh4h#{CFvI+5r(5h`rCORfXAqmM9say$UdI1d!aTssrARfkc6tf;iI{tePABRC1 zp?qB<(Qizq4G+Qy-U>Oa84Bs186^mNVO5NEp_bID2EM=Ws_^OUYj455FsBM-iz+)# z#jDqi>#m-Hfp=w7MJQ4xY2X{32vH3v<+71Nx~KxCKq+;QV!XAkY*DO#x7kr%U&xmg z#4h%jtEdN_H8uoyj6qGkW(g*NGDJ{Y;b!Qn%r2rstXdDrHWu!<(W4sSYSDQ+bC(kg zeVBsg?yBt=_~Lqj+U%_$;P zae(u!7tngUBg78`3l~N&L^|g>iW@RVXJBlURtpBuxf2J7Y-UE;?hUswY48e7_lrl{ z7*)dIW)s0m4RqkIYMV{rcU!XovP5DS&qi+$EERwR6p^J!;kx+)-Z=RGKImkvW$Uqx zfH#Sd6rFr!J|_&8eEt<~mOI=E+iK-DlW{?80Xfj4v>8K0k_Zez2VzM*0*DgLu9!kf zNW!+2b%c=4U%+piAQ`w@#1SZv+%j8EL6_c38z2)*P{azB<2O^1FE-c|UBgoUQu%2U z{hW_F<9(?2*V9b;5>=Xe6Q>Cr((&GxGX>4}A5S&{=0rz5lAXELQLOBij3Q*EIWdYb zT)RTVIdki`1B$*+r(i08wIgnkQN&h42@Gx6zyUGLalnp28+l(C|6Oc=c05O+&r7&k z%O3Wg1(f9B+T4VVOx@UfobHY20Eh|wEHsk|S?=xf^l`C$h7S~y2urFB-?CQj_a*?W z?iytx+BRY*MRiqU)IrLaC1V9^*yeMo?q-O_A#4JW?UyMUL%j8kmqCXnTLe}1lT1@g=l^mm(6HiO1;u2@J z|DwS?hW=85s^e3BNR2_X2Wvd8_8_Z0@99_@#aykJM&xufrinl(@ng_+RPWLmK-x&a>eK z$lCl}&tM5}f);q!xQ=!%i-d44(OsPL^N}*`U4>V=-5Y)m8p_^Lb6@ql(U#^JlJ`2S zJ~w>VYoce(MwJ_?arc)ALJqhGrIKTxJ0BVtA|$8FfnT}w?NzIxh!#I%u#h1e7fz`^ z>ZQ?Um#V2SWP??=FUyWwgU0{m%wz7d@><-t19SJgj^!d>i~eIY!ol-@ySwg>-+CM1 z!_YxJ7m8LpeA520BO7&Bc{wNMMG{;Jf9z&{&o(0vLXCaF+;Ba))RS+bmTH7*yaUS* z;$zDY5cd0c{PKF8j_23)5yDJK2hte+%P#*_q%qfD_cSd`wM zuz!a|B?)Uv+QK;HBD-nw(U_Ipmrz9BsELGMFj`|?7&d3Z_6F03`vmRlglUvnF?#^4_E$w!TB;lN3Kt!=Rw6yh@TS?WEny-Oh z`rYkTMyG9qi3HM!!iNtX==Nh)X#)JM(!iTpV19X~%&v!<1I)6!G2!`oy~{%E07Ie? zPxI5}>-NVUWkCJ#PORE?;xuX5o9XwebscY}%=#dP7o`32=!+=c^s?KmXKpL0*`tL$ zE3%pE`+d8AW{SO+ZyiuP@BMSB@6GxYB$L4OaOV5z{yp8yHlFy5IaJ{d$l_Ley^U-@Aq|mP2IC7LmG%rMo<9di~2lR5x2S>pU>C-^P<(Zw35A_#(u9) zw?B}1g}&8$(SAJw4?O!_pMQLG3SGIPo(YzU5L+o@9@YEVYcg7#QS(uEmf6NPvGt}> z%dMZiInicUY{un@AzPTp*fY=*Bge}>&ym~QCXm=ZNALhH*o&p#nZAF{bViHXi- zAo-sqjw;K(X@26^AB(RdSNg8P|Ce|DFPOpEjsNF zZ*ai%Is(n@OtH-y9 zON%%>sH>c>F7!D9*XaII-CjmyEq0X1)hZT9UiN06&Ln8ZKby$#uAIwoD!m|-WwM8L zERa>QcZ+k;lVrZ#RO6v?;B&QFF@5h`0>Eo-dF0An2nv}QThB$9gClq->${EuzGRmVBEX4Y@nq>oR|Oj`83~SHN&2uQt?)oYb#2_B6zmRx z<%E?U1%#h4_s@KMLe*zFoh2z)mx4Feyg&82Ys&y`;&JpakGsPy5?Dbd zl-$_O7K4F|NXbQdUGyMS_3wj-c;;lr49Y=d<(m;wk`LhD?REE82qP2>>O$nPf&hvq z8*lQQv1y2A2TO zUtk5oI)QTW*yc19@MEXl2?B6fDNha&vC!N*H^h%XXL2#2gK=FV#X=g882AAxo; zds(A-GvRPSN|6(Uy&)~HA%`S2lb|9nxUR5cRtuR;tw0N(h|*7ygjCE(u0fSumXZ=_ zN7+dK^vVRKhIyl_(~m?CUV=F~pxUT#Kq#{D>1{3@`nNDw_EnBNG4&+K*a1k!-H45+ z=QMDS+T!HI77}01++;@DZWHl!QaRib~4aQJ)7w9 z$YP-sfM=ED4U)7gkg9{7e)(Z>$Vt#e0(qIBqCso4V-=y;Thvt|R!;iD^D1imrkkMw zGZu_HXgMm|tr!Fpx5KfZM#a>(=psw#Y%+uB=EYzcX?5r(QM^yCzKU_%R8o;CG1`v! zp3`t-#-V2?Ieq`R2h*5v5?(s@@&c>SY$F8>YVh_#kT%AKUT6{n!c}9FK^OI(WWn?& zk>FMN;DL*7GvoH{6r|bFhPp5omU&8A{B2_O#3j@UV1;zK@Zvp>B)H1=Msf&mIB(B_ z+#Wy>1%lYJ_=PoS0*vc1ccJr{xa8mPIvzugWhOJ2X#{aE@!|<}UJL6gZYD9@WL{jG zhH#c5mME0jv?Js%-uav9q8kpD1LX>juQgZV;hs$h_9u|!sDX62UyeMpdYelRf~c;r=-Ih6Dliab;^rWS)wd(S3BcU>Fz2;JrMQ=oMI zxQoIM?xyaVnfDpyWQV!B-Bz%n5+^dj6hJ#=CDn{LFN7Xx?x4?L{u>=fS@*#9gJ=>( ziTmd^4>V`;5FOQEqFV&nIX7R-&U(iyW70O)en7Ibs zT__?sS!6Gw67nbRqDu!Xz;>a|sDO^qDo#~KGkp!(Twl^tbBDj`_L;lT_s%+SDTtxD zHRx5&-T)uRwvs?HtZcNKy+S+%ac^@IY4(uILgI8qqtJ*vDq%{Pv{uoD2Xac+X|Qq| z4^BI8SwCurg4c<-qdeU#p2Y7T=#PfeC8DNdq0vJ{z6Vit;+X0%wB1dHxgUbucJ2r9 za9_WK&tjmYYP=fdgG{_tEzi$8k=!LqCx=&_U2-tLz))CV;EM!KUqNR z6Ze&Riw|HarE_^Z$_?KxuK_BgM|&3f?bY`F`b;kef%+!;*9BM3`K{Pa-=P{$w`FP?L=W&DV)UwQM%7I$N~Yeq z=4csJ{rjmawDNZt1n~T(k%W#L5v%k~({lzw2r-GC&Sy^`%C#~onUhOZI+55M? z>#oivZ=9`>Ahfc*-JM_Ou5~Rj&c!zIbXV`b%%z$2Cl;FUJdL$EG$Mtq*NtUxsv|l) zc}Nhe<82`2-jm^Z)g9i)#r%58MO$QdlIa|3PtWu0lY6GPN<=zwmr;uyUjC@X$O#*y z>QWIFCE3T_tsKtp+XpCBSoEzJ@{#Tqk6hkoeLe5`EkF**Uf@#0v^V2W#p_U>m5$|s zV{wekFNy0hryY^>9dA^V_2Fe6 z6Xhq@baG$&b5=+UiAzfs{Qww-tV=^&ww+B4$0cls|Ou4h@LS=h_KF2~X9mN8Vtm_FC!XQEOy* zEQCspy6^Td@Jkv>7m_5zh>e-eHfG)A`e!Isz3B3iyH~x0u z#h;LkrJJOQv`dV#fMEDSJ-=*H+X5l&_S?7>4Q3HWlBEJP#fg0-@tW^*X!}JJcpVz>zq0TTJ6|a=w|%{ctWM z?gBOH0+sx5S+ZkDzQe+MuiBP&6bfK5!KbvfJGMCQ4GMqM8w9*teC!@yQEBZdch_zl zHq2Tyh6HU`!S00!Y*;G59@% zy4iq=-Dc6&L8w@LIpG)pONT5xkd}p(Ks!4O1aWo{;zIHu-9ZnK4xP^FoU*C3jsnnX ziU8IIQdF$nLhY2fByzWY^|QjUq8W&elgR~s#WZ}OL9+y%apsV;C@M5^7q2^y2p@_1 zTtQ+OTcZhR3U%!1F4^TdMYWa*r$Z^Rbt(!e7gF^%^|aqyIBem$;38+4IMUh6K|bZk zr<>g8v2JPdP&o1j)x;m(X4ORFly{c|LHsq{iib@r*ff}-(Gw~2Db<5+yF?$oH_!>g zo`@PPJ0LBW9bhrM0H5+YNGN(-3^NTFm>xW6L_UyUjt!kcx}%szwir%~Yz8m9c9jT| z49egDys2)E=@^!w90pPUzRh`g1K|VnIso3v=38RnM>C&dFAImQVv$*zMqGQkuq_91 zhYTKi7P=4rTE4ZOlL(Z5A5;r*r~sU1x!&C=r%5R=&E4Ozybk!LGRr+^U`F87r7tE2 z%o3iBTzYt0JU#&_9fAYe34f;{=+$s?H__~nv}DJOiY&0Ho``H-2122z>~{pjNncPZviP;6ASlp@uh+< zgnQ&U#LbArv(O?@><=xr$trg0m?eMV!vi;uKQI3}Ubd}1E3WVFwjJ0U5aS+Yt^XKx zKq$P+H9rj-qA%eu2)fAqU<%(T4i-zn<{~rr5HTLoVwZx?UyK3B8Lc{Y)xl{d2o^(_ zjF3o(y37ao)QMwEb6Q^F`;+_z6#8z=ul;5^LEtgR86HSEIsT}=isMKoP|zy3yD_1q z(i}S4*5k)^bwl)Qgw=^wHl0uD{3hdD6$);j^Q0>gCWH$0Y(dXXlyc>jQE!^6WugMx z$vGpTdk72!5XlRWmQG`+k1yI{(|XR{cJ=0e0Z)c%Uoe<6E^x+l&Zs3gHFVi@R0N1; zZ$d1k84>gqZO9oZ+cYO`(^a>PiVa#9IvRd_SiJ+3nq7#`G0}0U9(NQ4MM=BJ<>$0n zr?LT?uQZ1`LcHAtq)ji~-3I$4HX+8$=H!tDa!V^eC~Y+;UBut4Wa8q{4CL^G?2`rh zhXKfu(+j{+L`oDQB|e;B=7bA@iE~KPgpjydCUF?wPU9cs=8(S$%{2U$*(l&MzTx5^ z#62nCWxyay7;=P>P|a+5DUq*1{~p02mCB6#5JH>Z6rmtc#4ssfm`c75Rd~is?rEy9w&nH)hw*XciG&3AO;rXs3JH%-lK|nN zfaV6-1OdEp@;&}~sKI;?Cchjuu+OSe(YzeM{x!y(;jC>;tYX8+&A;jw<# z^JlTY)s-PMt=l1bb+Caxn5~z(Vi4GI6n?GuSl}Q~xHg7uZ#`HT8*d;cPR90P>0)oy z^hwaRECN;3g*Kn&&|3nXU`uE=5sX$@J^`5sw$kNNhC;0sGxqTTxagQ!RsxanS9dc= ziaalb914O&R89_j@LB0|CQt|U3w~aBOpz(3@V_Bj>OfGsxShg1co`H1Lz-18I@?b- z`zYml&fph&Hd>oR!(|}vhk$kmNR1tbZ=!URU9=dDiLQI=gW(_OeGbB*&&$39n03N; zxwMdH7j%wrO(-_r&(MSXb4?{OYQUE+!y8D#1ggA-!-4Gd>f@7lvH%ZlwseM(R5o`g z_ADYzwBV`3a*ZGxnuIEi)6J2S1y&~fN=7HG$M@I4YG(`1el6bSL;*h+T6~nhnoz8ggbh^3bIj;RV&RTastQza9LIu z4^m1uUxlfXlcCPZgG=;WW?Jd%)SBp>?B9xETUE78iq$v=Y(CuOUJ{y&3OEjp@G?15 zT287pmJuF`$wTYBocwg$}GZ^EBz2Yt9H;x+Uv1> znSB|TFpUWVfJBG|t9}SELF#ll1`Y|wnDa|rg!93WP_!&g{drZ3@T}m9T*)Sj@kcZj089MW`@)7gZ)~Yo?#rSyT$`wb@hw zc29}s?|*M`=$bBW4GpINofekUBQ8-7$)e1_`oifBrQe`O6{EF9i9x_2{T`c|&<{?J zoRW58!XZTTq0Xt;49UH+g_lQklmH=RJ9&}R0UyR6*`fb{*pZT8{u^0wF#Q*@Vq^H9 z$6@Ab**YKpU$PQfrY}^2CImntNwzf4LN~9IC0ifK_3JRv(F(G8BUvJ>eAe~zb#H|3 zgY0^CRjJKY35r3&Nkq&iY9Yo$o?Y31#U(6#sOFB+TQ?@y3v2OOFWdAiO< z*Vie(lo~6FfbQ(tlrQhvtko0W=Shk0wOz-qbv5bJu}>n2?W^tTtG$!!-L;K-+i1DB z{Q3Gi+h6gj`U1BhU5u|^WAf_UlQ3@LkZOLlXZQDi+?^dzu3BNv6rXawn@#bibWW_7 z$%Cjw-Wo98zpMKFYttVFv259Ymv0{*zj|A+nI5)P|24EwJVDyfYjtb&f1F12x74ziiyZvgqH4J~M2Jp{B6g5*DI|1VOAPAP`WvoP#l&bO7@71m5X=26kDlGmR zG$M}tDx-&A2`?&BYtC1^v`~K|b!UCq+x04LiU|L1tLgS##=DIZd+flovCbVxFH-iT ziBW8T9oNK77W)fbQ5<9JXW5oZiV`aQ%Wc{NHBTdA2UestN3MoOmNsm8yg#5^$a8?S zJFup<7$=&0UKO(8r|vC^i95sc-moZCDI_2T*PmrI^V1v@u!YXU|N z%5692VNj$r8H!~~S+}^08)-;=V|RrCTyaSOTm-y9Ryv+8}U356VNZ*i1LmKjkRD2^zU zF;FIOmNSIsK2yl_-=7(iAixN1x}(mok#A1;uT^1)N$$MITx4VaUnX%#G+bCQuo=)b z&X5!I-Vr+(a{Os;X_`#>wknrflQc3cgtQ+C{KHB%q^E)Nw4~+j zfYoTPfg3&u#6Y$0p9_Dti?IAEh z=$PS??WQ)FL-pdfjOuDUdEO+Tjtxt>-^~kO;c=rE;~ z*MA}i*z-DLDbS-A8r{jxRSR}_-&YqXG;#+rRo`3Juz6(G?MtB&GelgyA}Q6fE;V=f zJQu5$E1KRVfJ#6&&mH?Q02;-6{D(rrpN9Jvet{c*eoi@uFoO?O1ei;soFZ;|ht6}j zL5eKV0|cy7!@kREbFw&y($CPeov@g{aIwgsayj8UKu8;gathFX(Q=Z6663}# z8EEPTDJ#&3FMCX+ADIEC2whT7gtc!voDWtL4#_0WngC0#vx)l~YPWALA*5Hew-FI0 z@xkItFkTjdm^)z!U`>c?oxt$;Q*U^^h1TBvP6wv|b^~}K5%1W1mbjlYC?GAouDFpp z%4b0R;!4e$V(zD@vd_x5DSAVw=rnW6w= zN!b!1MY%nHg_NGz?x%or00DcRF0#+e42mQ~z|k3Zr%o=fEBJ>#oR=(JWQ_8RvQPFD z1wt?ziWs1{Tee`Nd+FME@Ly__h=nvvtm=whY0jaRz0RlPP$`ZlMHiO~>cU%+hunD8 za=Q>911eiy5nnJ-q$QzL`U6LGBE^bU6fp|OaW%znr7@iIp`LgmvZ8!v{DVpwS3j%d zrtOm>lT{?A40nKu)(As`W&jZj07N)HuN`FW9btQA`eVqQ!^kPC$~QqcGXO-{T$*k# z4^E$Ex7UIO2zwK(hjDk)4x9=n&N=TfQ4ftZ``kK;%!=Cmoll{AUDv~)>sfCF4L503 zn`mey@UzHtj;K$L&`aC~*RnVzJqm$(1AWt~$MN)jg<(Ew3rbZ8Q?{O#kC7nKj(2OM zt=XBGhXi06R;em4xhv%vMSwCJyh{eX*B(m@BMX!O--A>K8)u?h1%!fh3FymP^o_xX z@^TE;7QDcF_DTYfXFdVCM}fs=^3C`*zVehlFgl%e(jBhFjSG16I5NLnf3|Jy4e1hu z60v$mN`}}0vj^l?>rRZ02uXqa>tGKsWVP((rxBNMIHzucuKdEC`D8 z@(=Yo{qT=K;e3;8{X{N1D{ghR9S##dB$ZKD1^57$p%YwZw$VqjVv~qYrQR^ub%WG}NrL;E zf#9&h(K4`zKaDnkkO44@LP;k^8|)sIsj#bo7h@Ggj|%D~+g3ATT~1JQKeDoe|AZwW{@7Kd}ge_qCK;#anm9I`GqYlSc~+087ALDz1mTGKEiYHO5ix5Yc_U zcVGAaUWaFI*ZF^5X8D7T0uyqrc{|^tjr;OKQWfQeNZ|m?GkwZ(%mxc7it-Oww#%!Y zwXLq87vbnplQ6?PQME|WM?E?@X$`b%?5{UO)(Q0AC4+)aDsx4`G{z{oVdFj&ullcqxygF`C$)IPp6@Cw&~-f>q91^A3h{6*mopxqqM*QH|@ zBoWhyteH$mB)b+&RL~(F6S%rx0DNkLZRKCJzOYR|Gyj2;(4uBIywOM=yQ;UPv`EoO zY~dQV_5AJ6fH11%P#}7X7VA5FxQXoX=3&N##R$#CLlii{bC;t~##(*Xk)xfb(~-y< zER;k~?@#OFlqm5k<2EyTK9_P3Q&J4m>&FR9pAL|@5zsgr!sBUq(@=Nm3uSc@6%+$6 zrL)5BZDZBP=~@^V*jtvgW`t_I+XD0C5&Q*cd_=J&JH(y+G%W~XzJ$%8b~(@#FJdcs zEDVE__?XDUr#h$pWG-fqoMe#HbWXTQN}@0%nweFS+RzEQ7aJ2gb5;vpSu_Cp!0vt? zx4=a=a?PG?lJCbXh<5v`8_E7fJq6soOlZah$BJ@6wh8o%RGk+ZxW)fjfgL3q%rd+G zgvRdIdJ59RT5NxG&Kx0Qzrw`Cu@^S1#E$1TtSf>V==M1t(+4`qD?9D;s3kQ#erFO& z9udVXV~l*NK=C@GLJ`e2z&6QLzd-duF7#-VU|z1%QlU{}EV!Eo&Sz5k$BrO5je-TzYtRNgxMW|3IvtgiDBM~$ zVj{;$Kb7~sViT}V=7c}7#A&Xr<20=3aN#fE|43C&@OelG-ob8paPgAlet-YP0Q9uG zUyMUOr!aFOR}yH^3FtrF{8Kpf!74thfyvhuj2H8bxGW~B`v8_FnJzo}X%P5SVzYdx zW<;VYQS8dlUxax_(t=HgoyGP7iJ$JI+FEQok`^gA*dmJgrE+yrKSD=Mz~Xis1f0H* z=ZFFgiJSNs;y9k7ceCBDs{g=lfkEi`CPAxT_(&zh4d`3^He`HV33t-zQ@Ko2$9Zuy zh{FfBlXh2TIdSuVf8Z~!hI{z0p!wfQcr2X%v$A)`th@aC+PI|N=tExr z^ikESc1qW+m9HntvSnA#@i?2mZ>i}H3~f(F?eFhx)n1=`GBr*W@BHiP&97_q_UsB@ zF{$>?^ZT4S8|%~lkfdHFnbHrGwhqVvrACjVw9~**&hoe{pEbN&i>jNn?=z|IBLr59c*p7nzwZT>$pe zYU?eqh9_A*x=BSl60jXeoP4@P>eZ?ifhXc`gH^_?nXaeiD(IkD^Ei!<%coB~cAvHE zKiFv6dpx+5Q1>!MDtiJ6HA<0Z$$Qp#?aW+WAhO$Sz3*JRi_+H~@iIn`b0DYw<3jb$ ztb{Ao+U2+{s{hvAj|g~1ykT&QdZ&BqqA3? z9;wqJ7VUllOb<9o?Dm*j*I_|hQ+>%6-R&E!xBPCpP6Q;lc0)gFhkauIJ@TE^U*XZ2 zc;H@G@Kv_ya1WOvo~qy*l(l^k>$?b_?RMH#m-UV9#jyk!e3}94Gxx07zKRneVW#M! z44*mZvRW?}ULTJ1U}c*uQtlOGZIPs6A`%^}%b>3z6f!93*iPqJV*iP**=gWSZGw!n z=oh!@jfLtV+$ui%G+umL{c54t!rPBDs6?i*IFog<#Y&)oQqt);bMHMHH`yR&s)*`c0&uUPl!Km$j>M zZ+shYpZ66*WIxOdi*7p^a~we0)t=? z;sIJLKpax_)yIkRW)U<$OuKVj3EoWM+1+`*r_jBTg)Oz@#;ZALPoRHnYdB=0M`kr< zXvc2(8>Qbzif8@XRxbyJ@B7?-MKYenl`I7UEU1t*N?b`X#N+~Q6ZF>Rjkq<4A0%~@ zk00I?UY=sv#1_^W>I&-54l@UQy4v(h`z&pyZi3PyOa3mphkPrHwOQ7bc!;dG7_<<- zncUdWMj$3oIPz&w%x4me>DT~$obr&I0HGDLwSjE$=#pr-9A@Pn!|f#FlR&xMPrXrg z*}X(?GcOoVgXm7Z4QR>)*Xn9|6M;xaU^~9Avp}4{=-yT$yMJ5{JS%$V3*aSCV*(g- zX=rqErUj4|0A?N_p}7$jUjq-211YeqqP@>{zzYQUv8xKVQhwSTUMDIewS(9IWSST) zgd$1`87vl1Q6D^yws^uKjuvZZILHT%!b>RX+6-u};U4fK!Yf;Y#kzjq`TTjkWo;L$ z&_ics2jfeU`3Mj@0OsOUlDP|y2=jBaK(HDD$A643fx?V<{!>;NW${8MXAICO^3-Vy za3IYVjmuo(gFl2aD6;PMqpV|;8`LvAB!JMoDwjqEcGSm8TYEIhNTJ}jQ-^${AnC%s z;c^%UWA!3Lk~U5~dD|4A3FfddfKgN%FG_JhfDA7QW=}Iu9|=C^U>9?)21&vHx0$mR zZPdgGG77A3!lJ3*eNZ8MJ!su$+zw!tCmfMC0|>?<_yFHOC2r}yQ{TnFhp3K+_(B&Y z{jHL@;-jLcsR8J4)=I`0iv}p3z&PzVdS;j^pa5IYh1ivG(bP-7b~0!b9hWM@H7zC{ zfIEc91a}dG_w@%nEm|Ha_1xJ7@8&@gcZ`F;8-se}Y?~9?81{l+C6s2YBQK2c=6KL~ zm;Hu}x0C+bwohx>G8rRv>rmT$_NcIepH^~V6iTZZF;!|yG9Ikrg+!7An$>8+nc4Iy zEf>fGA|`fCn913oc)#4aFmQe=pREK`iD26(w8i)>Fd&{BqvmCt5+3n)U?JRByp5I(TbYqH=%r^gKAHpVqor;g_Hx2pkmZ}|b>jZHY zkQqeshh24DIM3w@aw|{ruQcL;>_D2g5^#fu(El47NEG|`^cLGrMj7q`?b~))Xu>tY z)fgv|w^P{)oL&M~Wfu9ozFF23UChIqu-|yMDKbze4A~40Cx*l(%o-50+{25^3W}7+ zPUm?kP{hLieHM4pKyWYy>>qapBqi!3p02uk;S|t7akHR3DIX*7uhx<%G69O%U9_D# z>uXMKTL?Gmy4ipy)`m;jxz9d^PxNxA7~T0n0>y#Nnt#_%>J1}gJE8j;%+uWOXks&=E4u}^_k*-Q~hh{%3EP`PACf?Avqb*aQ zny_XNM+Q)b#$cdAd`+*2B3slNotAwLeRX0>lW@T)7s&s*P(^&SDN;%nC?GNz(}xqy zu2L!zDZ&s=D*Ril2|7(WVD>6Rt)!wi$gRPlQaA5c3tJtGvcDg}VeuclUW4$3v z^D&qm=*!ap=24NgVIprs!6e*Lg^cRWwxj_h0@Sf!&b%US&=o4vzO}aT>}pL^!WNfz zSt18EsS7+akkj!Ni=1+pq+l$WXU7abA7au+Vj2Yd|#N-l9X5S08a;Nm^1F9 zFi^$e3K1_DtmKBWXz;O)K0Z2CdrH%n%M4<}5>6GKKvY!#M*Q$cyCftk5bvqHSVLL* z>h!ndY#rzOO5s-_gdLQ_=Zf8jE3Kq)Sylw>lPTwg5P^g(G_=16x%)Lq>@ah{L&+vR zw!<7kOw-jP$l3ZNLNeRx7-n-qXYdzD)qx^# zr9>x|`8+hTe2z@rGfiG!WB&BbjFXbJ)2TB*a@GK+H9aAKk)h`>lp-{&3acWO3_1Xf z$XxgWw%gpiK7@EZ>NY^HEeEy=qIPmR?fG~bZ6;-ZSXAw4@I&n6q;;&b@x$3>n$Lzt zzd4{Y7Oy#h%~amw&QigBqcWjB*dG_F70rk?pP79hj!g9HpzM_N;wDPb*dyd|hd1({ z!HH7fdgu&Df4UQI3}G5Gc!EZXDEX`;1AX4gtdu+SYY=mDa>I56u{E z0*JH`ZNS~G3vqoDh#Q`IZ?tiZ!aAa7i{28)?SQF?T}<5~I6Vsu+HAF+CLJQbQJ6&r4^@nlPq_4^(s49kryPxi@)wR3|M9I6 zw=X?lxRmOiM@=j+B#tE0fPnh|e?cTds3KSJ50cNo&u^3gR7=-&cAA|c{6_KcG9u;g zOC?$MKgcL`He9<}e;YJ>7o*eHW$;|Nxyfd?2oKB*lFWaUS0DY{ z4?tdlUA%zwx!L3itd@^AOdh0E^UeB@9;H<7%=!+qh?6Yd>Em?OGEQm>5D=;Idlct0 zLNTT_|0u28?0OQ6=j(hIylOT8G5!iG$^BOrQ-u>ZEoUWC-a?H zeo)%Up&y++<6I|hPCq*PQ8!l5DxH(*%vMcQ{Xjnd2arT;%kkf+kMqBoyBOL2=fI6t zEM4cFvD@8#A^SqEu3JB+$&bm%p=H|u2j=1*yYHiU`!fqW}Zqs;Zx!y3hB3`*|z33-$`;wE;02QrLc71(rz&og1h_bg4zY zQ+MU<*4daTySJjtuLBq=Yp9O$6LK=pYyoj`J?!`|)Z-@VH?N_E9boivqjkKF4lMoy zT?!~l{yZwZ;8o_7pdi_1AE^Ag@6Y`-6207nCRq(^%Rb`vwsNyjs<&pm=>GaF4o`md z=P`CE36ijf4y4gCLPfuXrkzT7CWB=N+O8 zp7$Z4D~|g23XktEXHw@e*Qbl_s}5ILc=Dp8>?O?U@P`Q(B2CUxvqP08RFQkMhdNP( z577w`lVkwS+pXa9VRRUx?|#xN6gc6NgsS>OSaV)^sy#2O_@E{r<|iR{>2%kd-4`!$MHuA%dEC?}iTVF>-b^x(^7wmsQQewpeqlJCl@11bz z+$I_~hTXsIk1it&A15-F|CGiHsjs)UtqlxFaIS72KEE7l>dnUrr!svDOyoE@$55MB z7NRtV>mf9bM=^U|KJfW_djI-(aV%PaFR0uIs>lC{Fy(Kr?w_syD!2@*me_F&%kxah zBk=PSq%)px7Q9=OQ>t{A)c!%euCHbyCk1GBSPUD-uyQnG0uyqH$KaZW)${CG6O1iu zl{L{M?0;s2{N;sjB$3lGaZh-b2onmU|8rDjH+=;UM9FwUU?oO^g1$E_H<_C+Y0A_w zP9oZC-_vEMn#GV`E=`0vZrcnZ_6Wjcx6Qt&OEdLaaUh|n%Cs#Xjr>}EOGr2y7x3}7RQ1hXj~U=d4ALqRjN zcG-*C{mdPg0c#TG2}B5e3}>kvFss$IdU8u~at)A?nZ(x4wSL*Zm9O9P{dxF1hOe*R z|7VP?T8}g{8Ym>6*y{M?XxyPA>SZgd~P=F(<#l47Kq3CSXYXN$gQqkDgw`8s%(k&T-1JlBsW5s z5DVWWq>D`jqD7+~7L}!utkR!9-~;Qj?QN4l%Q_L(<%JLzl~gr+WNO2xPBl+Da0$%V z8){x4Y>bBX=YkOcrzt;+!zo`kE{2ZQS0{R7Qqll{3>}ROEh4iUO>UtckN+;Z+))Wj zqmvV6eNKjWvY~rVxm{Pob<+t7e|j(`-Nle7-+GNOzz!4)G+fOzseR9Ej2I8?Q*FU@ zl<*#!2ZKudr8@(bmhWYC?Ab6y=qgRYPGBnZACRkH=ep`yIg z$p_Rm?)9K562DH9QCrxxmaB?!e_+dF+|#9%C8joBOfTA`&|;E&sKCmE?Mi55#~~3r zu9Er;`xLoqA<}^%T`+23=Gie#)m&+1usXU@%tTg_Nd#RLY8XIh1U<4q0nB=tRKcz^ zybAxO1jYvSN?G#$E~mU2wg;;MUJp(cGGl`FtB9WrBHE^K;N4azu{p8hnwza?IH7oU zIkH#@TcOv#`Q~yh;uj;ql1e><7X^s5pZ8z~5xL=qkA)SZ<#ByLq$w^QPr?mj{aS}n zp{dIbx}v7meYDd3+=Sx7D?>RY7>%Y_R>{thjk7hUeE*iPlSAO(T`@^i(++XrqTNI+ z^koHgXym`{<}d}Wl~n55ADZ^hR``QB4ZM4~@1p2-7KLL61gSW+O`&?pb)U_hF3FNf zeFzCP!_-|_IL-~&LSX;q7XU@`PmF`=7`HLHGl0v0W>ji{bNN8?&TVyZ*u!uC%e#4sL-(NaenCrKO%vOTuAquRXLA^eakfTnex&+<~G@`PisWNLxTKsqLE5IUU%oD;OgVRSjWaE>B zU>svv^_WDxgzlFhbDBluXb;K}K!M_V3UxU<2!&%;&*s$BffDy&@X2WDehUtCC@@)S zaeeI!QUvTI7^;*^5=um0G7$g<>5<%7V`3O%0alf}w{kl)HbBQ5UkKuvbFA>mI1IL0Z+QqZM>93z5S`Ye*Gx5?SuEa^ zLzjVnd~NQ2|16zCs)y|5eH~?hEHOKlm4dz!-*o4_ThmK;V8OGuL;aUkMj$v;UBE1o zw!o12g*+k@{JMyp$_1Q_JDQcs3$cLe9gaxNa#u=+$@ZjAWlH8(Ota3D?K_c!Wreb0 zI%^C+UqCNwrm0?I93$B_pI>ulJ^7?nWHe~hs~dGyjD~MsW~Wh=J)au+Rulv~sc5Gu zP9|wmt~JkemsE4pfRt|-U_wG%culP4XLO%c`0O@2?rq4RjtWeP-w>z4;^%IZg5Dsf z)u>HvhSS++8TmFg&e3c3RF1f-ltrgI`iJqXuogy}e>>@xta_P%dFgLlGI%U)mcxgT zMOHYWE-b2jT^|T*-)*$I(7q9L9+P{PgHEy@ON+aW_CGKp2Z+Roj4oFq27}Dlc!g80 zrONE-Bf1J7A?aqi;sdu0itF^sXQNv&if_ENz6rSnPA7ruZW-+C0%NN06jEJ1)>VI( z;a3~s_v3%U$+5(%E4eep)O|FAdYlF~$pn`Z;&)=;{VNaow+Zu*xDFM?eN}7yM~OgD z+^}MY8HQWGNudGIa}L!ZFSK{%wbC*^?X`!VvoV7w?zPvpJK8@qLa!i4M#eOfD)|5P z(n<~Op)5?_4@mm=5{)!=R6{Ure(9>%;XZ$M=loNZEASI~VqM;(z!{kkqHAxy&%Qfm zGqvT`%q_0uUoEwdF0_CEnpxVpCwEAu|MMO#boE3ZAoKwzIBsX*2LX3DB|EtG;0@UK zC_g;jWFam?w7JDBs_^w~e*fMJxtoVZ&MY!XJ6(3^4`+AW7cSyQQb53YX3SE)$>=@J zq!<>T@`S0lkd7T|%Po>hW17bIF{|qBzm4MivxKj*NWC^E`_WuIg2&eAKIT@&<~PBe z*9$XU9!K$EhN!xCBzWz-yWDPrM*T~-R@SaFLxe-GZp#6+|AaT7!4v$iw8Hk^YE%rI z|0}JmVp-eoj6HVyhc5U*q<*n|lVP%hCUMZ=Y*;2#T!3#YTyp2dP2hTxdbXwhea;zw zaw$GRHUXmmxlC`K&duEQgkQ-F<#S1&YTCp|*gCcC@Fs!O*3Wr7Oz-1YHrN3|qZg;{ z>+*bEWjdQnMX8is-5BxiT^YH)Q9V8V%#OyJldTO&!*?URY&J*x=hDY8CL)Sy=saD7 zN8`mWe~AP+oQ_jIMWRk^1bp)_Dyjl|rHje7PJ5=@zHb|4wu-8<#RH!BuHdAdb49Wl z3I;1+(pDoC-aqKK^2X>}up2g4>74=!x1QmF0_9*%pQ~3w9~Aui+YX@xFxstU^{~moZKJ;1k!F*ii3%7skw$1 zL9Cc4x2+HmMXUa4QE4AxW9@msrf<+(+k}tw?w(ciGvaK7An)eVtE3znYG#VmmnJ(H zu=LMgwQ1nBX~Lct+akfimVdA_1P0X1w5_fZ@*LhSy5y$1z&M=Cipw3ihj|#yx`-Pe zMNshBY#XWGJT(DkPPX-!NUE@Zt_!p!D;m&~y?KcG*D%;I8FrrjPJw0^wwkN+*^P9;%P*r$_ACK zcvu&q!K-oUfn|mXKJtLh63xUyOD+u9FW~$^v-P1tUSkN1KNpF=OOl~B%I{RE4sEux ziHxUv{giKZuNs_~D)El5R|qkF)eCSKBtWH{FTTPoC*HsUk3!%z(@?dm_XH7|ZY#Bl zVl&rJ{>ht{DwZlqFt`T>EzKcahRm(9gVpBQc%jv1@B?s8ux7R$WMHSrZ;DbgA2b6`a7`n3JG3%* zc-a&kCQcIk_$9qZ;}x~c;WU>_uXW*ySVV7;+_}XDue28=W^xh)m}-+9Ee^8)j(Quc zS+n)X7r`|L8}hD7zMz!h=^jWQb}HkHyAp7g!3rr#BXKb629irYv=zWbIiBcY_0&Cp zQ!7)fP3M`ILWNK3IvWh3?1&4EN6pO3PrUgHbEL$8Lrv@jVB-R3bqLmjiqvZuJI3}w z4(XWl6lfAh!6BeCI4R&`&f3QbD>fMbC8KgA-iJ9t{<$oC7;IJG& z4+tiMw+FAk7ldu9E}FTr4lAy=^^jm^rV-7CCF7MDGM#yN@YYi=YF~GoHgBc8hQVHI6= zO9^#P{-ZGGfSEEAg0bSF2Mmw{a)d$g6J=S9%0uDF8t(zR_{d^i-flD_LxApn91N_C zJE!e>sB;J5Z_@EV2hv5KNgU@EA0*WlJ@Mo(f~brffBD)g_-MpnEH#q}c+=YGU|%Dx zZ#35{X_RyT)nJOaMwjw9_Dsw%<^&T4se!H5lde2xpdwA_#TR;Y2zehWmmdc&tQkZM zahn=v7c+EAqeF(ikB3x#lABU9OvSGa>Y0i&0-`+E2m$EQF0w-uu|8t-HkqEx&r*rz zXjR5F3a(UUxzw+{wo>crLACsH*nAQy`zxtV6RMOa(2iK}B@6j-fkU4vV;(x~Mx4Lu z{AN+>*nm|!Ji+-?3kdMTf{fv(3w%rj!CN-+<>CvnKl^Y(IC--PMgD^RM={rcLqgJv zy-Ha=n6deaNj7oACM+FY%-3-!F2$z2KTZyvNhHmf`fx*v%pP*iSG%r zam6upRfGa{Kgcmj$hJrZ>j@n+S(~N6C^*o6-W14!dJxgIyE&Ix$74Y(vi=ya0fr!Gx00ULGE>ET%`257{y_?4!iU#WUjSPfKxC(hIQBkGsfFZ9?_(wSaThw54|kU+(VYTRevUd6O)MV^aV(#c zC?=HAYX*DGwy`MS6e(@gvvXNbAZ#D|cGgunVF4F%2PIoJviU(t-9+SYE(;+v$kW}@ zNoAGNyqJmF$e3Sp=kf@7SO7Cy9?9L0?LV(R1VQdId-055dTkfgeM_%S?{XVRp24+I z?r)x0em=4Mc;Xp0EDz}@mg~4r)~JGu*7e0NSs5kB(UhY8dc_bSO44^)p1KC+j$(E^ z3sp9>VMPdJ^Py^Ca&lU8mRX8K(*E(i#I;&AuD@Dy-26zy!?i?3r8szd&$K@`Jc^bF zmG)m4nHCc3CY_8S&m?i3Hpy<02MX19on~+@3${4=4$H&NKSCcBEN!AWSmCx&dtFG6 zm`)0G1ZX<$8yvv>8nU-ngzFneLKH!Y9G4kSzn$L|jV{1RrY(p{8drhPV9trrNB7WR;BSgHZ)VOT)kLgfj1T`w0 z{y{i-Bf_?RD4TJ1tzHZI*OX1}tzN@daSiUhmT6&BcNv0{py;JXm8U0oX$aYd^J5|B z<*}XML4B&*N0qq*UI}(rVN1>7X4k)bVZl4#!cXp`!v@e(c@6+Y9hGajmV zb!~{EdQwT_?#rrGj#>`y zOl6no!)FD}%B@WgCe+C5*c*v-0Bkf*bYwcAPz|~3P=YBvsC*e@gC+!xenkDj%?$j~FGE@dhJzPih_4ILOJ)%2ikxLFf76#|7^OE2`_J z`q~UwZ`!z+0Sf3WjxJVkQIDVM<{Tr{f`FWSs>9sIlHkG93s?%iWAy1@R%Ahfjd6^* z5>?%xO&jaC%}!GrvH5fs9`+sfBXYTo=Z_1#A7;=8<()3nZDV{_zJ);8K$+n8HFnCyj!w9jGBC^7i=9{IFp z&@Pnt=@fRoF1(oYv}DHK0LKlBn7A!xo23)sqW)s_1sSHw8z*A0V=KSA87cS#JaNV~ zv!Mn{j2|%chBEN?xkqjF_G8#GB#+}3XO>k+WB@)u!M~x0LHd=d!yFD^fCYxK$9Koq z*8$nzjlGY70ZH8-Lvpv17w%rgBl!1Ns*j5pc@0Az>pHd;J_$?+RXwz-w@z=vVk^k- z3W2@8>I`%)Ae@kiAYt%h(oE(@J9YBbIQ@8Ri2Cc+Z@-&0ZlfDLx6dUTbgI1V*R=IG zrK4^jrSJkU)tnmR(XoFpqQ>?8APwA;i-M&$K{gLUP3EYzj-W_d;%4G|d&u_E!VEtsw;(PDLYWJx#kTz_2u)1{o;QuCz51Tkb($)OMys*=+` zuUuI}--BE=&qwMg02*I12xypDD^-4)v{SS0IX{gl)6V+vl9>g&YpPlGYEfH=DR5~|TrBye&_Id8_9((trCA1RInFSrCl0Y*0}y* z66dLM*G-#eQM+_Fitiu&{G%HV5Df{9kwCTO9g|ka%dVU+o+knH=R7i3Bb}bW zN+oU$c9YjLc1$lS1Q4n8lc zde6*jGJ%W#-VE8ae;yB)zuV8f^ye@n(BRsAS)Y!p1BtndzlK-M7)Le>Ys3<%q}M1& z+5_DX#Kd`{2|Z(~Vf9RWVpgSf`#~hFuQzYGC}Y~yOKZUhV)W~LKAKuYQ1!90+R>fM zmx-@jym0Wic5N=6*!(n0s=WZWai80LgV1jvWZ#nk3=#==OoR~|a%j!&_k8|-m%H=2 zwYSo@ke?al*KFG^Fa`y6w?wGe-)RwU$M?fjXZ?7%r(fl^yu@Y&1#g@Cotyfx8}eIy?z#G6 zCItRO?!3v5zX6Y{(;j`NH{2b;+}0w3GEk*Ou;X6_4Q3FZ2;G`sdq-h_t{%({7|mexs}=>%X0Ir1JPA(0A!SDErR zkxGQ9jZitXbXgj0bkt3ahnDg*1-UDDC!%w4hi62j!0=!g05v>nEXG)fB`BUw4QCNy`} zqOwN4BnUePaKB82-%N><@C21dFJ$j`af?MQV)N%hDx%X%s*?6znVdi_7`Zhf0l!NV z9j*N?*f?Fe76OT)4H2UxQtFZvRM4qVnO@{RfrvP56c-n{8E=+D6}Gf9ex(XoUnIbV z*OX>;elSRKq=v_csrn5>7#kU)BM!iwTDBH*K;rbhMbxW%hh z8V`;uYz%x70-P|zmcC3;%~m-d7wK9?)29#&iuX$E-S3z~0WI!X!Ylasx$hPI364P` zh0<=AUe{2Y0u3pEL-Qd2*4bnoh7;K;d#F@{LS|q=1oVQabu$+i-I8v7k;lCwN%)yr z-0hmde?1Y0>!!uVuPXthNx^MG^RkU#w80{DB3q0Qra~Nl)$rzA;&)}g`o#y{F@^=Q z?}le{sUu?UV79>D5h9HHfV-F&? zlft&{6T9!c$7HfKjz~DSwc32y&SJ~JN?19gsK5$UEm+qpyx43r6%h(gXLgJs)apFe!=(Mw1wGa*5fq-Hx&hP z~(4!zc#D}!;DbUNUnf2})A3S|pVB5yeXL34NeWE0Ste~IWPU9?gHVRtU4D_r} zWL`}RWV`a%kX$U?dBw-LXUOuz$*^6TF-DAm4P4_xQqF_0V5{&V9{u0@uHZJ?f_9{_ z-z&W}oAx~o5@bNSRXFXXb}T+0aF;Rq1o46%3iW}*Uma|M#zZ-+s%`vI0(+hIBgx2F zgI%Dnf4@u&1`4i17_FuFA~N~AoLxPS$LH(!?*4fA-sz;@3l8nQjytn~Bp-V(8AYIiKyiV0w*>(Dk-&_6noH@W-FTyJK68E5Sho z>E!F_^1?Se12;L50cr>xtA z-^#z32DpY?M-XAL&1Q_p{sYa*`)rPu@`F``9Cm<%KI21FoNX3yiZrBPrroa{bj6J> zc9y%)Oyav(6vRRdOy`?D4g~PK(5vc-CziGpGwA63F4zmU&_F(Zm&Yielq6&`f-oxo0GArDn(L(X{2e z`EO5%G;l-&Muq9=-umr*DM`sQO$v#0dURvYM}~Zeg&{m+ibFb}Fky}jIiQpi9y77v zG9 zf;B&OgkEA5N50z+3-g={k`PKGTe|K?+Qlm8G2}r-zwj<%lO3|?-v%Cd+QR)Pv6}Kb zU0G{?6Cu+8T=AvHh>JL&2&HQCr$oAkEAbq1h!P_-sOyF{5g@E4$yp7a`hzMKZ18S> zNv3$1uA=8+&1fyYsTNyU?_~&+Es#u-0vKK1$o2N0?JC%JmM@U!wO|Au<|hNd1wwEr z3l9bm!tI#oc(KdIE|p+zk!v=>)75T=kJBVP-nYUpX)~mH%5pDAZC9L+Tf113Kwu3j zt4l~j5i{Q}V47Z_p4Taxz@Q+m%Xxy+6n70hM@SF@+?IuEFit0iBC_@EEt}eGLbG;DB0F$KxxOfQcgpq}b^Dx0p zup;)`!t9Ds;tBy^YXRjx?FrBzxsSUvq>HKe)={8K~np z9v1YHbsYs6jwn4~2t)pd9^rsru&^q2w2;ksOjs zCOC{0k?e~|j3G%pXy9prSkX)#hC}O+=}hz(Zv6bk3`%2Y;}?^ zUkEzjq%!vVK!bx@UqF6eXXCm5<)*#o#=$Z9U@_*A+GSi408}d@NWkdhx%~<(c%B%L ztufYthxkNObvK3&2l4#`dw1wn%)mLvg&0t4NzZYTz4WOK1Jk0^mMLfPveEuCr0oyr zClS0d@#g>}jRY}iDx|I+HncChzkDYDVi=>dbmC|p667s{x0obnAPHeJ0K&#=^v2lVK2(81?lnx>+<_PhyT~(%WZ`t zz3yLTMhBwVxijDj8ZqAH5lSOn_-s;7dK808 znd6chjcn-6Vh!#*?CQ&kAhgR0yJ@_ctoT;j>kH3$S3NtKY`ndUr zatQ>({kc3&?6m^Q0D(0~@RR2~0+T6++vRq7&!CGtE$Tu2>Uw{>u;>JNdmHklOJDXn z?E<5n9=czce_N@>H2=%XaL3vOAm|7}BBIg{4z?!$1oK9k~aadC`6)Zi;lIhg} zf;AHA&{lZY3`mxC7kM(ANdZLPh4vUyNbVl2Tn=5`kV{fW*wQQLG8-`f;L$?hYYC2E zc?HnK<_h6aa2+r}4rllz-8Q5>ym{#^f;|$Tva(41k}iFU8G#BZJJaCgnx`_&)6y{rr$ zRCY|A4#zqRt3$T%lGh#e3K{UZoixWC$~Bm{Ct+zF!Dcp%*iCCh;wsD<<~^%%ytjV4 z+ZN<5PVHnN&fP2QNQ6R`b^7h@n3TkuQSawlF!y37*c70r@M;2{v?PLLE=LC-PS74z z7L=VC2Bhs(n6A7}a>8bfJ(7aC9*60>RUIy~Gb^YpiL2}mx^^#<=G-8t9Fe468>3Dq zsq!z9BzFto#USx=uBWhckOMGh;R;5n(3$v>WH}WjG4AujDmkN_M+c7^>l`L)&c2&t zoqhXpKoUTf9-q$t)DWyP5FCCW*_1`}`>MCWLHr(3e*ucI|fweiKgtM9ub=tqbjG-hQDV&{SNa~r$fB~~`!BCHcd^G8OX=G|kMbB92 zTnexMtx+~`j-siBF|=08Z%nW6F@aj-bI3@NNkTi5GnubBaVj$twLxiaD?nT@sHeza zVUo1yaeiVPtjk3|gkdwLhyvIsI<9&0AlXR)gq6t#x(UolQIHH##Yn=9N~%Hbgg|{C zG&3&dN!26>p7&^RYATUHE8vN!U98YTu3cE+!xREa&@nHTW?r$9!IUW)ZK5b=0jdbx zOk{qdeUspm&@M=m+(31AjY0xbY1HQECReL~SS$YV2g*9gVk zWCS(JH>pvaVIVRDtlVCtzL6~vD4M}6V*oTZZe*x{v9ra}p-PIAxMSMwav#B9@dZkd`qW$6Rd! z#X;!dRQBST8s%#+CXzXi(IIg&{S%TF1HP&f1sb*BCj}&GAafeW%3#%|!1yI$O8)`C ztwKg+ZQ7#b8I5-C@OHDgc@pXcjRqC3Up>kH@710(8xRxS{rR)I*}k7Pm@aEnir2f0 z3>`q_YD`aH)p0i@5HPN8wrFz}8m;y53$S{m;}feZgk7V5fC8h$JD~68%-JKnCl5MF zMz3}DMYdPTe)VKE8k)7U=3f0uaAJDComEc-|EhWN9ic<7Chf>D$j6_}Qk511gw@|SLtc=3;Dch9 zU+Ixp7~qZbrP6yFF8l%y9%wjReKfV)(af>M8qH&|c!tTdPlF}n))rktBo9eqEmjUu z9)vPKM|N+gS3mU}-#q$Xo@}4>R(03y8uPtK73CXnasUGs)*DJo=yItIt0;_zp3IY& zte*uPHmJ4Vb64Hj|HIfnL?p7_NY5vDd7FBQl>^4n>Ys%&#ji^ux{2A)j(tZ1@O%WZf_Q z)Lfmun}6>|yVlOHE7QmGMUtJ})yPbZ-6lNu@zZZWJi7^kU z2XQEy)0_=v9wZh~}Kb?}uNTwcY-+ub+1Oe2j-cWPhXbgKHy%tzK` z+s0wAOLrzQ)ju_H7_Cd{EMv$-$X@CkiQGX9ti++bTq4gjB9w6D5VnILcEFIq^Y%cV z5y^|ZM7aiN96EE{w}2=7m$E0Tq=}!K-rQZ+$f=PXBPu-~9=2=%w3kw05@DDGV-VbL ze4>9Xa^MtWgQ_IS2fLoMB(w1hv5^+I5=(%BM&kr-_ip2FVjvOXu2+!d{eEdsHgQFR zudy3BEJH_lrH>G$kHE@9oru%u>78}O_g6Th!I=`H&WmD9Jj-(ncv*|vGHIP!(=Xwt zZIasbSCu(_+1sr%bsE;39UVEcVxyR0@^4N^=d9UMXA(e-_33_hFw2C3kL43J&|0$< zIElh%VoxdX1&8s1c#?vAskLRb13-651n&nZ8fgh9J}x^LxYbeoslnnVA0zdMb7FAv zh{HrLSnsOZ^5)VS?l{#H1kNB|0M@t#K7s7s@Q$DI0=@QjyK`t)BqwF+^e6f)6q>qe zd;j2*ZJaiGKqk{W+I?FOKn_vj!MFe>H>jt`tnkWs_}0(xj+7pwruLEEO~eHxWY4dzv6A?Gys5XVMBC7ZVU2M0oF z+|yNpXc&nHU&dbWvu#IvDXS;7O^8tzkUx#70pL=mFJvg1oS|s^;aGT|tvRBF`X%%cJx#gRm8nExn@$by4 zGdrU`jzj(xt$AL=GSiP6tjNA#VJ$eZL7l7p%vL61Dcyk>#6T(HQE|&{>09wYlYY+I)`b z{Ue~?PQ&*gtkO`gn{6oNU9k?It{NNnaSEibc_;~O$W$2eT5iNs5lgJ-f%VT;^u@WFKs%OVuU6mtXAUDY<)BKj zQ^W2*&6>7o{opnCjfR=46RM~}f?qIy*ZWe7&CYhs$^GTitrf$LL_xpuOK>vpH@hF` zxZCL0Sn<7|d%SX^tZ{A4iaU_j+0w~akeUb=d+)0Th5JwB) z4xJ1Q(7MLb^?tu<$W|Jlo4%T+M$W-*m`bv^kCe9) zrxF`1oTg4%wlZHe{Q(iGpi>u+RVu?(iN#%0+PK>^hPb9kh+8I~_wAYft!kI6(IZ#V zaWWT}tEJA8dt157c^4G+@yCHFsB)tX=fpG)Q`a0u=1qOY$64$9V5iNTHq+K1vuEai#Yc zLjiN#iB^tdQ)Ly?b{$Jx&?{4en>u`ka- z0kUKvUSXCCMnt=J$ebpKYQ0r|Dxs9}ir=|&9kK%1TtZ_ie9E6mQ?Rr1bU6#1oL6nX zmWrop*E*(Lu3Nzkmd=af;Iu58KKe;*zd-Jif!fWx4cq}8rgqcKor>+|`fqkVN40v@ ztRSdDhQuiL?yZ)$weDKQFnsv2pwik6*?wU^WHFpAFYRl$HCpA=!zl14PfyXP)C#y7 zCS_jxs-+n|^TE2PMaT4MwX#&qh>Nm#%{qPcaNs0cgX3Plz+QW47FNjmIXmq2+V8G8 z4Fq3B3kP*$+-k)#E}=30TrE7alT`5fJj2B8Sul85{vxe!ING7{XF0`Wy|GAPRuT@K zxgp64hA3Nc5bp=4py|Blhv31dS2hb(oNWac4#J7x=CI@(T&HnZG%B&WKu;rr8V<`Q zS#Kb99|uPg1J(7vVTq44pQFLpoOQ5T4L7;#1VkLt1w9Hi6fvsy1Wq)2Vfj+lRpHag&YiAStKB?vj7I&E z+h&m-z-9i(ivZ5+t*uP$g!aJ~1;wkh{wqdm`z(Vb8*bVL?N30RN5}tuC4z@We#9K< z*Q!xy1u*Z!WI02&KFiYf{J#%|#@g&_`McZ2&ekLQ!ZOdbx5F%1biG>#zwUaV zDUeGo?{M~OC9^^L5SjsMic%+J0Vg>&JbNkHM!*)SPa!A?G*@S>2YgBHv&{ZHSwrY4 zNGJ0Jr^A0qSVsVRjSPl}i_wG=`z6aju#|-y^VT}FiNj%L03eJYts1@Ka)+=a$TEY0 zj1%>MQGoT$X{kvUFDc9jN(SO#jv#_(Ln*EgZeHk4R29%Rh2H8+gLl_x2PpAr?TsqsVSiVItLO!ik% zL{==y?j%bIFtvzH@8g_FKAk@h%#Ix@2+RdJmIYJ)+2vOYwmpR`&YcWGd`rFR<2gZa z?gmO@C@!W{m`GqS(0y}-E!v9%eBn@~0#otT9i^xdElxFpipSp?8p`* zxTa!|J91X~Ugr&rMZm{)GhvFKW!a|t0g za$0~}68U}`96?d_J0%(sn?oVW`ORH44=>(vgYhUW|1 z?8G;Uy-6+Bf$=RvvA8l6uf?*wSC-Db+75CD+Ag?ALAQLmBpi%F6=6%~c@;B4?QLQB zoFI$Wj$@wxfo0tM3=0!|i2g6Bu$$~Sb`D;7Er4Yu1eTV7JP~eACDkyp;=R+CCnUdS zM}ff~HN5)EJB|=AlGy{5yNVSsyFRcDh14>JqGMHt!(k!jujlgc5Kf7EHR`v=xWSoz zY2EjwD3nWJY?Rl0II%geJ(D;uobPGg1I%TBF$ME&F+ihVWdUTKDK?0yKXH;!QNmp# z^6`=H)Z9{$K<*IF1_IFXfV+-4VX7TvXqqmaIE}zh`1EAqP((EwF6 zm;SZhx5ufNj8#7H)eAeXmdlAmbowNsSotD^1Eq~arv6+$WsdsMmUA0;z?QOaLx-fz zV>KV)Kf1idIFFYN`E=$Tm{$tPysYdhk1R|^zF+;0e6rc|B2N$O&-XE|Wvkg-p$mLC zpHFN9?0;AW=yJ(FV=YMd5Sw#}oS!gw??Phk;JscPkE^%YYY5%Ad-?l1t##vtbcpYV zICrXHE`FoM0R22^q|@n3DYwpx@xzYb%f255&Ll>c3#D{Rkrl_dnW^?N!Y443|oM+vC4%SB?J%T^^Tai@WQItPMi9;>D+E;$nRUnX8J zayg+0u*JDzU>K(kD2j14)+{T415>f(M<6sCf;<+=8)F=V*189Q>saf1r3qaTvp#lQ zECUu0Cgkqjd`+qGO{VWy^YKDQtG^nx@6HVhoJW^8DFMg7%xpkI#c%wS@%F0!B3veh z|9W7GgYkdvuKxd=KO+VBT2%9lI&^uokAjZJYJs*DsW3$mz=pnU6{O%IYg)#!a7nof^bGjq^6V}@v^0-^bJdOJQGnpQQyxR>z?df9t1 zXT^@+|6mAD5yd$jiiaRHkYXE&AXDT*iWuNuCYWXp_pePVg1|5)lJYnCTy7%O28e&n z*C1qrXZe=ROxs!o&-?pjw;m2>Rzi(`p2m~pju_%ta5IM~onEHu7K~uC_~{E7Xb(q_ z3+&JX@}V?VqOZ{ZvX6AjM9UXFyaJm#@wAlJJe~{Q(;P?bX;ksdw4Si><)Cmi_BrK( zRCivRWr7cSFFjYbRuo!bjeWQxpY}7>WVuyla)jA|g%y4M6Vw&KKybL0p5e)-+95`f zJKezVw)A4zV1xM)QyEyc+q$~GkO5%2x9r~6o=vz6oCpw8sCuIX7t#iDY;DXhFGWE8 z^U?m@=b_8-3f%2R#W3lMNtqhLIH75WKyUlW78`Vka%tU~tyRB@`^GGeFFWN}8LV!W z`tj`_8y7FG=2N5*6;wL1hp~g{@IS@g1eSA!{$qlYX(GdAz=S&^!Aj^TQT&`i zTFG!jstNhm0!m2=n8uJYB){Px zPNx_bXWMd`bLX{H&40sI_RY~7xUbq}9k#?9nm26_b_U)x)?cQ)s0A5F7G1{mBzJLr z>3E6)QrGJQc6&F+aStcrzhT!F(;0-SwX|m@92(W6VEUlKgKh)^Uy5D1Qp>hO2|S-_ zZlZI}5a(Pr<=XY7vUPVFD@_(rdIdw-o=03caFXc65^olpD@7<3d%P|WcQH&AvtnU^ z5N!r|Qb3g~oVZoHSz5Q+YHW>tV-MQOWN!sUEQx+a|BQ#Ph|~>+^SX z7B& zGH^%n-ebbs%aF5^tG}ny&Dq6?ubFN30z-#s`awkLijmepEv;|?MbdbFZFJ=HZrCYE zNGb}`AQ2*x*3`GPVwXR)j~gd?bWm%{?{f20Lm;RBo_WYz<{`5KdERt+uqcU@aO$4D zorLi`lT4uXSuHNw4!^7(lqh45Zl(|nIXOlVWe!PM?i~dzByOiMOgw4G7)aAPlMQKx zF#PIhn(Kmc*%NM@DBKxO=zUfEpaT0wLogKXTL}tXv~1rUN;X4Hqlh3qadj>S@%L7X zkApe6#W=dolV$Nt;J)(WWRaFml_PHVFs-XxQ(g`!UUa{GjZb^XljDF{LSpJ%JsYGu zCz>UvdpLyx>mZ9lMVqF_F;W#0k+_H$BDuZuW;JN@@wGPZ zM%e{R5V+ze_v3ZuW8>w^{j3QsKVKfxI>)Y;AlBHz_n8C-ai^*&EBdL8-Pxs};2Ek7 zVNg2}1YHHaJU{%jrt};!uD2S9t#1A5382OD1QkW|W`sUgi}5uxMv=A3t1T6wR0kqj zvKh$gM8Y9=0589w#?i4GWtV(1d_6)95|@Ajh?WV80K(v9Xs{%=H^?j1QO0-8EuO5k zXJ{lliW;saBA6C!XATOf1B7lI=)O488X?EB(ij#6SvcU7ev^EoGEdftYPv}AkC(+c zA2b$F(S-&y*#L;qy(Nwud=$O(g8gk=oGnpU>Dd`&4072eQIv>*XLq^BScJ-Mx;P%g zi<)v~xqC0jj!O@ZBK#s|^1zQ%YOpqsC?>BNjV2*!WdDp4eV?Q#~$hd-0SwIMBKn^+QTD8T2_u85e_Y5 zLEqvtR4|P$oS+hY{|z{R>TXb4M{j6x9z#Ti7^;@R`^RgNo>#zdkXjXImoG4tKU`?7 z?J*i^PEuGo*vV*b3}AlULrh zg$;#%v{#+UlfTB9sjhq2Bjug|(aC(UnuOyV)7ryFt4*i+`CB3q2Hl-|Ns`r?HW=(; zc=4fg?)x3U>}(<`P=({ZR=5{KE zYwZk2Gbls`@Au{&DZZ=S(QePsK>BLdY>h)e&MA(0g;r-3s6Q3*AIuPcwe!K^S*-Mu z-+GauJqa#=1X&K0!(=1B0j}m~g*r8ECCA!)U`=)`G9$ZBD;?nC_m=nFJ{Lfw+}II` zH=p2Q>+hA8p8R%$&)K~Pk@BFwCsL}Z(|e?7+Q|QXNGG0wqwT3c(}7Xep@6K_(2$KI z2LvWzwAj9bP{cfAOO-@U{G^~bF_(xuRTH?~Q(=FbgQ%JQz%MYIa=Q=cK_P`&Sd81p zMuRpnK|043jgB>#r)7sTdQU>3MapVz6Xqy=QgHx1y{N~O<`SHL6v2c*4x2%Wc9)CB z1m6-o^|6eahgRx`)}ySWLfhBX#Y$AfdJL5Rf-!(Rf`H=eBC=4>Kn%OFmUKJoLE?P7 zFyooH4a^$=16O7w0SR3~xr>hTOSn!lwX7IR=QZ46bn*Q7?-;H>-&{}&m-nFMJBiBvIAiqkL$wE1j4SPq$E}1Vs!L04KWU|1Vc^MZ78RJqBBV*$Ord-9+P?5@R5z7VMX0+^S@s1 zoJ?)C-Rbw`c0k-~l>T<(dU;vF1@f3O@w6ri>7j$dVvwJ{3yey`0=Q+Rrpt$Zq!UY) zo_fyA|B!d*_WZ2fyqtWw)6bcw%Muz6gHJaa^F0}YE5Z>l8AZV-vI$WbFI*x;V@9;% z%rGBt!ey^>5)AJ8xYv^M}CtAZ~w&*)f045^TV>pGdQb*)U} zHj>1=wu)@39F1vf{HQ6Cg{qQzd-on3KyvP?6G%;!tQ?eJilqq^cg;=$h6Vd|CB5a{ zQp4ptRd#!>IUOA#YEIRy(^t>p)EVy*FPvaPkYq{0HTC$+nN^iiIcEpPjS$t6dDfYy zfA0X+PzB<8=oSojI$B%pfc_)KKktg8OTl2n0M({f%Z9x!+z5u$(Keh9b63*7T#nmF zcr4peFGi*ax7O|=i$VNuc3Nq1&)KlktX8Dd$95p~7i3~ZK~>bo>41|9`WGaI;;b`X zr#E$nN-CyStg8rH#dJr{1yBMJNSV1^GN64wpIHLNUA-US#m*C|Oo3E>tea~A5EZKM z#f?@Y*Pn7S4j>Vy8XgL0iHJv;d1oI!n2#+R+%6F+#>bVQS9nuTI5-yBLYAF4%5>kC z0IfFupE8W)KN<}z4F9vcrv}qHZtMRm!wB)Qpz1Z~(&W)U5Vl+oiR_}@1AHWcu5#NG z(N2X4Dw0+T|9Y6Yo2aD@KemM(1311ibKZ>Qw?*#B?IzF3(wJzH4$W4&Bd%@wItcgE z@bw^e+d}?LP0X&f(f@wa$=Zvcq$*O{*{vz7w5`n84`kJB{_E7IDM=Q5wQ7(_Wbv>L zYhZu-QdFN3W7qXBesRCE^Cvww7^M}Gyg$H)M(oz75luZ&j4z4ixBGiNtZU0HWr^)e z^w|DjdC^P=5h4@$5%0O&ygUJ#Jq@%B{49iV>#Vj*+tgI#U*m(i5;97kmwRt z09YYljPF+(S12A{6Km^KXO;BWwgPfP7V*mGoI`~B^pzGE+nfBxgRJnrX&;`bxvTu{Nv*btA&WalWt`?q3{3a*(R z!Wh{1vs@9?@2yH*|KRon9>p>jl(T7}B^51wc+@R0l*x48j{JB^F3~GsIRUl+St`~d zQ)WmvTC;*9kdH~W9P`~mZLpHVs?;j%%%sV)w~)(=QN30@GS#1tRmD=@6@-!Qk@Tbt zqqEyc?icl>yaz=IwQJ`%hUdE)#sdfL(Y~_!YM{1Iwm|({USl=W&#swyz>TA=)s&FW z`nPCqN1M?-&n<^H$wEG9j~)tx5m#A>7g03OL)uzIKr=B2d6v&B{MKTJ^FrsMj3UUH zCB@7nKharr1!u_{VEK^wV)cE&!E&u_ojXKLf&oL!%^X8SlMX7!0H0IAa9%Rt#fx{F znbXmAHxNI7Fv@L&n*+!5dn>!f((DR~u(_mfW^@EI_zwu}vu?=Ea&iiCg60K320qLY ztsv^CxmlxHu-U9cjG+kgRa8ZYBqGo#dK@pKgEZiNkx) zkHJ+I=6z^5b%kq|`%S=O2U!V48i_2D1O8ZKnm_mvjnZA1|3i! zscEvI)wyyR;Vnh(KK4Z?bcB#6vjS1`pAu9xymr1K2sV~-M#QCUT0GpjRfHX@to#)5 zRV!pPBs%4ZNLezmfK0%qG?e+hnUX7`Y75Pz0$B!pQZ$N1p!5N-D%m$sEI2QA&CWu_ z1<*jt+@ki-M(Pt2XTpq=)w5<|6CdcaVK$kn+}vlA-i>(LX%D^R*@x5RM>#jSy`<_K zWgVG%#Szb%bK&=TPj)L3Ld=W#iU9V|5)}CY%lzwneSl*7>ZY2O47Di^T+PM}jcaOq z0=)Y(>r5<6^BL&gB!CPf9HFR7fGZj6QA-If&{v@Ov_#i@`ZXNF+|ofPbtTXF>kANY z9V&|Te#K(Y({tYqFIxuM*{#85f|7sTrhIQiM3aKpArW21Y7B;d-4yKZg;gZ?@JV!Z z9=}if*UOo{pVwC+-6wM0>=8g&OV>SzUGakZ-U53e!?85hJRC)s@Ck0^k)5s8j?lO$ z$R3Nh*5_#h(#3_;RFc0?LpJiUe{Z9S(6IlVnD#$o8GsZm`{2O3EWq4%Y&8{|zWtY` z3=tH=TwPKmm317|`NZ)hw^ovSQrR?FncOJt^r6!|FegsR;93leX|pTugz*>3qQhBV z%1Is+rmjXTmWxN41(FO1zRc0($}ul-FpTEJh|GvYtDB=)(EZ2iuh4=g%YEx(WL)1D z^GDaKISxlFPbu{#fZ>Fy?1xcgI4$2J@q?g1Wj`ES@`Vk5uz$w4IPF^+dU-*ZF4BY;gJrfVM4E8zVaHPwGnq1l}Q zdGbTqR|I>c1ZOhOyr*>(#x#nzdR`W8C7T`DbcHN3MEY;4Y;i~4pkyzzWH0j0?&OjX z;yaAVoO(u8oV{LJEJKOD^Z}@qGBDoG!=$LS6jYV+&WfI_#8#FrKpF9a9d>Nr#ztnRIJ-iI~dw6{Ef zn(=AuAv(txLu#}T&bxjhYNV@dj{*lskl65#Di3aw`pe8J{m1aIBmq^LpJT&|600f( z)s*WwDuNx~C0xn#9iy5aF;{enhDhYM2h<%%WOa7JA(Z(LQSdW4#C+8)Jc-(@jWjb?$iPzypm;0zBrv0 ziDJ49bdvlcF@Z#qQSH+F`p0TI*20lKwc@S^2Nn}2*OHL{eb~y@5H9iroxV`crZj!J z+8iHqeCsbQtLpU68bd(>Jt++w{AxaTr=8(F(L>N8r+8d6&4R7l=)9%ee?Fiw`_>+? z13c4tE(0-XK~PCoYqp6$MLFr^>Gy#>R6u2wAi8Y1(!B?paGgDOMN%nWq8Mc1ogoqm zh@aDqPl%>XzEMZB!X2HQ`l0ncz#Qs$s4IBWzvqA`LEX|dG7X;gFl_MISg=x&hnh4(hOaG7y>{SZFti{Brj*4wPWmnVvthklxnGLd4Y*pr*+d#4IKyX`S}Y? z2cr?XayQZ{5Gsq$cw`G6ysrzq8~*5tBZS!g3)`6g%bUc)%>2K5leX-(#$R~#3(DwP z>NT7^?CU{WvAeE}lE5O-L=(U+)3GE&NR>|FU%7rha_H%;{7#yKaONkW_;#mx~KDK*@ac6Uaq5& z$DZn@`euSeIvUV{(X@IxG=GhIA%glLxBFock7r&Q%aAEw{Fy@H>zq-_3a-Ejmwp}X ztExVPNDG#(VPFcEH&niSS=B3^G?KM-CbMO=Ph}NT)Jk1l4Kz5DIaPb;q;&Zon4&|j zL?hF&lc}IiMP`v1tJ=Pe{}?CHj-U@A-G*dWMu&RJd9q{&W4hnTF+gNY5&4g@r=(9tK93akY*# zpl~USof&^v>vjZR00?wm9^$>Lfv&GPti4$V!I1wBomE`JLTRDzwG7#3uHG4+*y?1% zL3@>l>7$1O^`^XzPLrDuucq8<7-7dmT)Ve-bKXm6@%Qx8NOCi5q=PGM?hoPC4=Di8 zN_gwtVHfQyc!TjIB+ucSh`gqr<2>iw-bI!d`8TNQecV-Tg(mhv4^f235=61kjDleJ z9gr?7yA71b=Kxc-r@r&Mnhb{e#Uc;uT_v+63eHOEQt}c06{>$ zzZTnKv87>6qX!p~J~x_O)+b2`(=41yf_ zkPQ?0k#PjzjMqhAc}|t<`%$uJjki0{877b!T;?xoesAOuP&1BMf)0sWm=grUn|vNx zOgCS5?;rb&Vqk6{5)>3PAlX`}L);~~k8&>Rc#d+;($G%zJtc*P)mtsqFU1k~sR20N;O0a{1iv~R1j;T0!4r}mjEpn=wyD%@xQ)&YY{KlO>lh0C<8 z{F)W`pV6K=CD3~P!+wdOaJMrm0~gAr=g@7we!>yX#eBUg0Y#XmT?e&Q^A$u8uV@y6 zk4urQuvmyCAUehPT_sUj)@(7=$N=T|;&Om!VF!}T#9yIK0O^TS{#++d4OoA|8K=qb zOyTBuM%p7AS%0-V(5Zjn@nk;N%a7q-y_frs=f}m}pU#fo`}>ts<@rO;@QYkHfw-90 z)H4Gq-)$65j^~(kr#0YpB;qE;Br!S}=1FpGeryRyT%({=h~(5N$kyg$j%P2naS@YB zz>M|IeM-IK25~u*GJ)w0f>pEJkwpkfF2H2OOlJ2!^pI?UJ{AqIgYc})`&?rGK>_%Y z7%71Djz!r1xo`uNd2&5cJq`o0gqE-xka^uzO-5}egQmLe&h>n#%5ZkM0|J?0Bla+! z-bK;6BRzG`Anlyw5fw%Td=Tq*U4AM`V!keu5m!smD!3RY#Xn+tf{Q8kb&rc4N^e;FJ7t8cKPB;nv#CqL_}{zyZ^J^Z=+# z0Hxk2MHmEGXwqhm?==M)R95yah8D1?GqcJw&>k&_exu*y`}y}6zK_{{oc6Hn^M>x| z+sU)rOY-xpf`m?Lsa9yKCOc07s*+YKaNd{Cky$EkS2d{l(^5N^1zDD5@8?s5B+q>< zedQyOP2$}79|Fftl=vPi+B*fwpm(Z8?t2>X2xFZ6nit9GYIJbt@=J2MYDo7EG!^p5 zS(I3cYdEK&cNYW_1l;~Zaa%YnXcp!jZ@EQQ5J)zV)U^7|_QQgZ4}#SAATFS6(z{b& z=Cyw}4$2G_AL$>m_yim}vKy{~FA-dzm@LNE2@*>^Zxkb>aOIABQEL?fm6#_X(S{kb zFR0C9!lCy{6AIQtE2yAtBIl1UO1b@zD?XV!8S3L>2XnoZrFX)|LM5mtniTYcwYh+i zwnmLF5?Hf(t#)>L6E0B5@6G{0u-7h$aZzkwP=kYag)U+n`^w zCPDdc;PF^+?4r9uWF3bLGAkT53bBei!h)u@j$@R9l2HBV(7x+KsESA`hbWO8pn$g~ z{o7T)q@ZF5vseHqR7R;o%)V4wGVUiH+9-TUv!AHLkYZbuLyv5n%chjoLH+-dGNPE- zL;mh)!%yCg9Q+ECd5DFk|C*P?nY>Ntj7IzBzxofAYU>_VsCIAz!Ztcc4C6Zl>?kIl zSnC1$2H!9z=@=AkK_-6AE=?96gB(V7x@zFW^!|j%SS}B&8NHcOR@sR85z&|4LezOq zrk~~oqrjx9m$>1pPjb*Bkzu8!)7|V*R9GdoJ?XXk={w(2D{i8{J_1l9vXkU1;wNXl zwhBQsiBMewO;mUKZfMj;0M7CTa0$2zOkbfDW=_<3rU^G6&cE&qKMJHP&+P8?wTjc0 zo@vnBH3-xB1h6~&xDzb<>DAlvXHcJFw!aPgL1XbvV)Cc*_;vr@?OdO(!r|BYbo#FH zxuC|6x6X1-{e!e)Q@gchSJ+25odntYZ|M&8q=};uO&kBGtsGBjC?Icf2m23@axFm>IaV zuBNB=nQ0}x(0lT_#(Sy-EfcbyO+5XOVOzY~bdSF^^u-zNq2U*c(>!+i-oAf@)R<8; z)5j}j{CZYRU7w`yQ-u7kt(rA0tAgJ{R<<%I-Bg>klzh3|UE26J4R*QjA2&Cr=B0Si zw*kqJyWQFo`*tmE(m)N0W8FM9ZV~f(nqDZCcj#eSdVQ~Z@ z{j!D$Em5Ixq)mI>U0r>&mEAOcO@DAj2)`$BERHoO)#-XQC1^}eOMlUEr<+<;D*N3k z!*)$ug_d1cD_Wvt<(IQSpi<{>p5e)GQI$6~y~b`mXM47KsiH6YZt1xcQ6iO02)*c^ zwN#y?hA`8~k$D#;9$FPF<#XNg-sN*AcI(cTLnMfh4rX6F?%`m=c4@CO#SyMNTW=2v zHjY=ocWTXgh^ea8$dp1iuG4jB^@@S7<6VWd{k|#~EH53@R8zsY7*d&&w+BW!ou*wZNk*y*3Qvoj>Y2g+srVd7<_ein~K zZ)FX^JZSj}9O^($f%+h+;Nm`iI&PrW^S8rRxTK2rPgE;@vy}E*rblB!p~y$}zpuZi zCskit@b-JV-MyYICh(Z0%;NKwTx<|_7pn7*^Ev3{V=Dw-4#k~Rc{(=32@tA0yxg3~ zAzdPv2@1Oov`ufaz9vzypvbYFik@gzVg#+}0KyAL5zj~fs;6gAaPjki2HAIRpq-L> zvFMIl1CtI=EcGy04Aj#=AA$#K$WsmX0mcUP9Ht8@*`Tk|Ysa}~siJ(+!8Q=KW)Bky zqU7R6(Op6Efz{m92x|K#QcDxRkwOX_gTuzRI2h=YQ>|vNr1tYj{j#*4L-Oo*cY3|O zUu%v0)j!e5Nh>pjW0r`e3xjC(eBHa-J>I@g|KP}9h7Sf=EUx`$TW_@RJg*F0Ql~RP zp$-Wjww^9T09Dz~3k?r*C|%Hmfl}meDN{f?mY=If9#l4qOv?xy1e1ZJ>o1T);Dspi z-_^OGfq_Bkv4(MQJf{V*c9u8L_tqI&XH+W@E*ka90toV;0|G@sQg%WfZ0dsVim<>=B9>%onER3jQJA3*wQC-ik+sbaBTd;7F@fQIH2nu5f@p&Es@+3qfn<#b? zUMgh}C23%!eEz(C-9GfbOBE0aQ$8zf(GU~7$01QIBn1?n$eZfz7#n))|MbbafRL8s zeGDf)7tD+Kbs2ffm+i+C}T|QiAjjE z{w6ciz5aY%EdW8^O!{Es_t2oH`jcFM?NqUEXvm>9w2V3F*$IAM*GZJ*TY!5}sam(q zLJ?pJHdclAs8!g2CQhoAYlcRjq@!cIWAY1XsB*IayBPb9fCY|7Hs5%-FnS2l5~cXi zdMtY0_x}NOB*4&gV*Jt(RU#EklX>IFgWfb9pGG2*G5K+!1xJE)B@AJwrQA!vF2iaA zF<{(G+#NWYcd+Sv6^{?f;j}y51x6ht+v>L11OulS=5_1~*w=ozt3NsKOpTM$Ig4n|SOePAy2zPi{ zZ>4h94uVgrzUwd!Vu14IrQcpA3^(CXB9h&lcy?(3Vq1KJ%cLQ%<6`e9EU2cU)o?Hq zHG`-^!?oEoYExZfS3eWt^&V@y=@^R_L2~?a%7I4$57JVX16<=|;oD3_=uS;N=!DHM zo3WB^Zvj~O_(!!$#@4ZX)oeG_3p5}(b{Ob(?eVVB46cVi7n7ZEi2kXS7EL(q{A)?5 zB(*Ge49#mW3k!`yH;IMkDXBCkSwiN1H(dE@B!AwhQ5R4z(E(b*ATTe&EShZWsWk)DG(Odx1J9 z4DoEN*x?=jz?M=%2VTy*7WovsPG8ozjuvsHh=Fs!@e%Br3lGZ!4I=M_N#rjHDnbvM z%M|^doPa|{K*J*Q=`1vF;C-)qwJOBngt6G!_Q{=gmWIQ*8Y&hxt6z-sdDGIDA#^`a z7)~a4Qks6c*=@zk><-P43uvv4@5wk_uW{7u2P6+mnSwp_;&E?R$2lfwB%;cSvv)8~`Z&h@x`!#-v7GzO8vmgDA!;b_( zbaIYvJIYS|`Y8(Oi-)PP0B=#E-*6h&XF~`G=Q`+#r)wx%@2#seX#Rnv&K?>}3g@{! zlsQaVDH-gECzLmxoomfJY~;=!IlvLPN2wZN^Z^XN(f7Ppc39y?03Icnq#hDFDL+Gj z(*@8l=*>-@VrSjTI!y^UmnArK5%QVpoQIOVy$*j|;Ji@C(cDrhC|!uz`Z;`-sj0!c z4V(9vB+DU40L&Ve@=RW`KKxr+Z-3h^Em-|u6v*Yb>~KNHzQsI@!IHr3I+BBx1>(IK zfirsa(=ClE(b7dqVnRgA_s>p-w?D6zK?Qe~E%Q%d$ROsoWU&7B2)M(p_sdUIK6=n5 zr20cb;*+z$6O~c<)#zFKcF)I#eu9>;e1;`&N+uU9O3>$JQ7~q5j(^iYgxt-n%6>!l zHb;KxXwE7`L@8fx*y@lf+`0>UsJ-zwt9uhT0j?;_vh+G*XT$ zic8A56R*?G894crQXVJ=4~t82!HF96G7ymM;cf6gmpYJU^tQVqZcW}^A~RzIW4 zXyl#!T${4!T$_5lvM{`VZcp#jnUJT8!PFjl>h$-%&%B6BWJr=^2q&WN?81DT5%N3< zihVvsMyWST*3?DoUEa$f^_Yh*(PRs&o3BM-;l7_WPiiMgIK3sU~AH4n#%pU zbp7A>;%8csQZYF#F4UVJZ*{(|F7K1b@oU+Mr1zmbl-R`ETD5C6GNUf+x>jzAO{r89 zZqroC%GKJ<)mPfU#j)W!AwjakboIFu>WJ!Lprn4v|LNHYL63T(fs9!O3%?Z5ZcY*s zt9gpq9MUlw8iKNJkDLbBjPHCMRS-@6<9#pLziJ;PRIm5v(-Gxi#}gng5A=vZg&3de7ZRHwA#eGQH46WQGv?&zF&HyuQ(g( zD65S-Gm@@RhE|h9`sWQuIBBe!;Q@zc{Grl|zjgwxWqzD5C+JsixUzueiaguM%YAu) zeR=N(iXC1kV*W_&%gRjz>{f0($qajw>DEnLv^?$c)w72+yrv(FwgeyclkE>m6B2wkm3P0iaPy<4L&9^ zSJ6~V0|&0){z=h&)m;_`W>-)`CJJNYx!Uj$;lqNnJY9{u?4~M`$z1a+B+~BH>@|;N zN}GZ43SNa7r;jVYOB?`Trn7&Oh?8tccI2$vQ`KqfOrn@S+>Mx^QgF7+W&kLDx48d= zcUR1bynx6*t1B<;;aRsz2dIA+hTR z%>|S83AjyTRH#ivz#9ezN=DF4xVl%sTEb=ofx&PJNTrlrl9AKki76~{NuI7nhjo`B zyv-;?vImCW42Ii(qWM&uZ~4wRqQa@{HJ@(ORdX+e$n52>gX?RMisBK}=*8Z2dN`kv z87`)Xr=yrBZ@ncv&!i;p602ghcYr%y5Bosy+@Qt5sQJ1|7rKU z%9`-Y*oIsDO`3~+w(WsH;Pe=@16smfkyEioTxlvGJn9i0Q$}=wwQ1ZA@Li6pmopCh z9BH0UN6&X1)q&#nY3n=Ayd-z&OG7?FLIsy&y%Z|HZL?G5LRBdx+B1@$J+k!pDRw13bIW=PBA-k|Q5JXimt$ z0D9MZq+`F}pehT9hF;Nz2yrR{&F!pGq-Ew5lb8V!kAfw-*L74u4&~22f5F%Bc>NEO zi`OP_w&v=y6|#Ls`ECahu;*aHzpe)6D`I#oidjP<91Q98;ZeUs8geo#>YLM1|49%s zdW$HX_1*G_aaZO#?Wof%qh&5J-;4-bDcht5`LsWg1a(F-&y)!2j4*=@6RG=%_USmBX3(*`>XkTRSGI|s@6}2VBW0v z-|pT($xUNLq%*HrGeWb+v|BwVEvG_2W|9~TFJ zZp0v?f2J96xwCe*KYsm5i`l8gu(qhOU>(6BHAi1Fr$sn@6lqBL9(kMA0*1qR`%} zBqtjX&jjMGr-B|AelORWBEMGIxNQhMXDTS=;tFcMuGSb>(Xiv-gdv;Ra9}>@PbHW(QeOPF?lG;kTUI_yM5eK3&0ygst$tP`Jz0S9HRH9^RO3I1j~3XwZIZJ`x1#`hGX|;)a4A^8{Q37<*f3;bH)JqqWtaU)L4Ah!J0@)v;lN*s93h z454$*6-2IB`FCM7a=QuGDGVRQT;AQ`;QyQH6{I(xtd8iRCrY#Ohgb3Tlfsd!mj}eJ z-e^MZixk{Rga73=7(_g8p#?X?Gh;yn z`m>4=LS@(fFSQxjb(bWM-yYC`biWl!+3(sfM! zH$FJUzzi=6IpHGe*xnLG=qo@N`BGF}61&5}_t&7|qi>DU0Jom!NiUXW1cu8^E^>S%-`Ks0GV3g5Q-l&EZyKTfSX)bWXvL(C(cDZy|$Rg4N_RfCeFi z2@SYcPGkt)D`&)bG!s!Cs7UBZ{f33*U$zb$eDr(csL+Qkd+6hQlI8xSw%_&pKvdvw z*h;i9UlJ%1?>Tc7BO*BO1f(xIe{@1TS9)_VG^CZw^Gmt_H^T>bRJMKt$O?nC(9DvE zyNN*n30{@97sv7mC}B}$93pCl_fh2?wceN;a~P%vYe$-*Ry#)00K2$>gQRX-t@;6s>|VS85*WPVzj!cmFZo8=P9%R zWs)K1$AWWXXKZ=S)d66X+_Eo*oL%5Z4nD%u__|2adCV1kEKkHisvG?R&&q@Pxj*J4 z4u57%1K2^jR!x%&v3Gu!1efJD{&wS~UFE;EC+Y`E?q5l`l52r`2GcYwBgQ#19$p|# z;Q!m}H0U|Kh?bOz_*r~76wB%X3AUkuM?)EUAP(iA`Dl8_jKU-j86E)(X!sQs1c_4v zxK=Nsq^Q}wm}mOs?0!{btoiVP$&zueuaN;Wof| zQ20@BQ=J(ZOz#oLKo3XPG^yF8SPt6-yVrEd-Zg$2Cb|3RD-olpOU68}HqPHgIg7CJ zmHT4K*Jv+wS$n$Jc!v&8h(E{|wg3EC5qvNZhtZqU|2?CE zLZj9F{c&FY-u{<}VP*P{n<}jA|8tVb4AzFz*7(DY{y-ZjvLnx1gXd$3N}}s^bw>)g zw{)Q7yif*+34o61$EV92i~vBGiJ)GIQYF&q`Nf5`SEu(l8p`kb;6f;35Qimt))4Zg zc$Iwg{QJk8yheyN;C?0ehtJRPMTZi!SY%Nw?P?ca<%`<`pQmGn9;;@H4kRJc&yf>p ziIm={tMUncoNTKuZlkc~PRPg8(+j`w6_-6-18LHleHzWjl+#Ev8_R;-$JJ+@yj~4= zCd%0x2_9iz;V!^SkOBd}Qe6#+%(y@gSqyTA4&_YJnt<>l8U>;l8T}I3h+14)H_hPq z$Ku4XhK)n9n9~>&5FwLrGlF4~Icv2s*@oE*7z3^PHrWQ+m`h@qT}Oz2A8m(ZBg1bX zm6rL221d3O(Tk9^EQ+Zf-n@o_0m3iiEhsb2g){}7{>!R-xkq#4*@13rBoKfYOB4+D zouF%7&v-tvXjo0|xF2sYqg+zevoe}l3Z645=OPWb%}(tp+9$S7OoA7iKs60gvbfo# z)zu7oCTzWOm|5punjUjj^MjT~K*Ol-KyG>zguQ~}2_k|7ZBlck5>9)?T%qndpCp!y zGW7l+{ZG3J&4iojNuRPCNGT18^#QwTDx2p6r5!4t`d2eRSn-ksl!NoIV**aSb9ENL zOCXbGXsiUA#aX}pd5S2S!KCgxTbiSRdLc|e)|K5-B}fjMCNAL=0fu=5#*}GRpfbmC zL^d~ayiw6)FU}KGO&<4_)JA@Ck1L_Xzvq*`Na#f)ZXrihIT=^2z+!lTAUv3eVRvrT z+c(EzyGaR<>R64%`;X*sXAO^23lnMwS5;9NOVs!e+ zAw#K&MI>-*ZBk;CYX=&qc*u1y8}ozvk7YVJ@i(MWp6xW^ zYJk#YAWvXz23*4|rU1~6fqwNa?;oc7gxSr4ptxKDmlMY^3+jQ2BGoU+=DB&OQ*E^3 z6zXhwvLXY;C_qiEv#bDO_+qmax}D*T2sN?XH`(49cuhs%O&5HDOe$Kd0PbZ+?fZrO z*voo2+7aQFuNy7?-=k!-4pKHGEc%$L(#_MZ9Z(4c$CPWgnU|3Rs=oC!16_31^c&E< z!Y4dHv}YQY(Ic8zcd|q8@`$EYSwGI5Py-qVSIQxXrplKjq~@W3Yta;1H~C-0oPz*F zL0HCFn&eUuD(;CXd?5HXMXa(5(Vb$|;Miw*WDqRb>;>o&n)SYHK|*5+Ytn_Zb?+%H z9*NZ>M?Oj`ITqymlwqw01WjlNmSjxNfC4Y>zd<~GQUU|h51$kOZZxvn3Z!Lmz2T3_ zcb`=!o#h!8%_JSyh0W*goT+qmkTCo7V12RgN4!`sdh^q*f+l3i%4dHUdrWx^mR)XTLwhtKFGe+J{=lum#1c(j9 zJY*&a(*Ab?(qq->jj;w;iQ@{e7omNVm~2aI+CZp9M@zgpHV$y?WN5&Jq|?0!)zKB4 zfr0wXFR;UVEF$9}?*zwlHBIO0sQK3gW;UM?zvlsuX`o7mKu0#eCSSJ*O7Y=fPH?|) z$X0wIVPN8pP4mBARNvvo=#GhT#%>;c{+jpGi!fl^Ny{`}=ifec~ng!GM^eZ`2!gy&b_F*(>B)BOV zv-l!0?OxKAKugD^+s4F z@@u~si|ulSeh#R7Hdg8ku!lP0q*P4xplFw(6o48ViZ4XV0yuZ5a`{UqnFUwSWcRYs z^$lpj{|+=5S1Z^C$3el420xJi16|-=U$9^*qa%(5>~>wB^Z67e%iKYj6Pnme_WBCa zTL}AXg}+w9r~$(uXv0bjms(tGMm8h|Nk}@%4y8$8zV~&LN0PuH2O*&z+2cjbxsv4? z#y!EEqCt`5O!Inbr7*6`I%J9hPh8(yS19dGMWIn;A62HIz@}TCJa-s`u+ScHsB*JYuC4tz((U}UsbGI( z(ZpMWt$2XoCq-COvrsW4DcFyqBAu8`%$8p_dW+U^4DXJeBIcVmpniNT57??pvv;Hx zBf9E1eTX{x`z?Q-n)>>@zfO0m($MYwH08C>jt37-&Te$cO|^$ZqaXE^xrM1p<=zD7 zm$NocTn7CGl6fFghN4pl^gsIkO{T?ebwP;>dDgWRKkcnweAr)~@_r-Bfh4Ndd%XPosvuXL^n6p2 zmVG@RppO#Yj@|X`MKQA<^lqtT=M+z+d943Mf0+#j99`L>#!5#d9cBbdOe+P<4>jrF zWmOpi*9rt8XSwvnC@^@^!8AO0I_HAJU8(beB*}TS&zuXw>+24{L)$bS|6uW|O%+1Y zd}j1sz4)nNtnpn9G&dT*hJaS@dwyQ;+*)d%+cPkWZF*^=IC_XOJnSmm^aK(gje!uf z&k(9@kK}xHcHKb-hiHGjd2@3VkIW1`-7LJDdj5Mab+WVeeMugI9e%HN!gG$_?Duqt z8P~2f#Sbi)d%nf$e>c2AysS?UH$!P?l2R@(7;GkrY1FLz(yb(WTP+N8rX6s$l55UT z^$ymFsoM9?{%nOSJ3Up6Yk4shA|q7G(KWQLKrK%dr+kzUg+V3E$68yxmBmvRnG&Y~ z5VLg#bWhDxKQdJL$fJ9<=GnGzxIiF)gqf*ttC|$H2n9E^7(UamOMc5gJr;CCBc{lv zg8r+Gg&x9Y*u^%SY&)_i`i}09nstsCpFMuqeiePag3Cwz(F?sFMU&`YP-+$)j+{CmZti;Z<&TE< z={m66gCeU3XVlrz|2h@D1clQ;BKNlMz>4nJq4R^0>HPY9{Rm+V6fyu&w!WR7zJ{Mj zNnuKmWeifH@9n&PSrGOr5N3aLiz!xPq(!~%7N0nkguujFE*VIJP*MS06&`TaWH44P zz4v-?6rY&0J2nR@O@|a_dB|Kn$G2$uLN=zrv8n2s&p37xb8kV@G;{Zw$V@&&X5u79KfpfoaEoYrhEHH?#G zZPdtt^AO}tfN0*BeWP5?w|OEllRmpRUn%*I#6h*or%1r50E$2Yu>e*&rm=m5DI|+A z!`>rCb?XPj$3qG*&t99fqX;qNaMat^v`cu&#{D$^vn@SA!w#yh{jLR4oOq!NWu(BecpwzLw)t_PKq=$t|UV4qq?j3Xt_9-qzdOX7gaf zlDfLa#{VTUdw5?TYu)`nQ0mkjtXUqgTjQ&SAM?>w$!gYM|L|{Q-E%wD!5B$SH4Y_1 zn!HcMvft~|{C}Z#KR~ANb_Dc0%Vc|LwRb9q@E{9Tip5{2i|(HjX8uI1Q`?ab@Ml-0 zvR7_2_mZ9~Nsm;C;ST=Nes7@d@A0B{fBFYG&s|-|+(-D^2;ZQzjHGb+suLhWT+biW z*a9l?NXXiFzaf82Q@^Fg?x@R}-j&i;$aCoA?8)4OKij#mN3jRiSOT5H_G%{KG418r z+MJ?L5Mb>lNv(33CqcJCa}oB{oe8Fx@P$843FEo=7&HmnjXCrj06LB~T$ML5m$2}V z(4Ki%1jL{3WH@3+3CQmzSVKfRW5>d?YcmI!{mB8 zAH|pPkfga!MvQ2xyaxja2LCv{9l`+v8I#n7{_4t>N$qTNS>e<-Mb6lQj=NrKGoV#Xiz;$hc~&h>Y#i^I|l73+IF-wwj7;OlxK1ZogoBjTrc zdeeriElGPjJAc2bC7_auv;!oj)8&Php2HgnXUI_}5go}`q?^l1NhiXacMQgUFujdn zYc!Y+V<0Un7@AR|W#N-ZJlf}^tZeUFU)Jbsoh=gC`vona)Q}8TBqsJNE$*t8esjTe zF071Zq{ z*`QuEGgd4C*%iZ>#ES^n z2SX0#nhXbxYQ_Naml*-pg-0^8K>;jMrs(^;EC?Rn(`P?S?kV?N+=+wA^T*nP8>>4d z`$9J+Mf1Mn(J_duwAU$4D#=Q~Fl3WYX)+lQ$U5-r_;q@GU*hic>h^xVR_QO6N!=+vBmaWvsrm23cITn9>{#^JGVP zm%wudwEmtX*$1qi7`Hgm0=9{a1oD%;zu#{a4XMWTmcM-@bH-fq6s5_Rnj|EunK z#1n`PjKbk+uV`BCv-dzzLV&1GG8@lRx{OEBT9^B?H_sr)OVedL%c|ZSq_Kozd9WS! zVoIc><|{%C+dQx7g@!f=fRP%)at`a2>OFRU9j`MB+ht@qi+RoJYEH_SVc>^Jk_$7$HK^a6S5R_q2@%2#&NPC_)Nr!r_?` z(}y6@TwB+5zo!gYCgKLdplo0+=;MZ`c#vUog*i~1v}Ey^azkZ!AUB%xmZ%56)%4-- zp!>4E?F5e3fDUia|K0=$rGC_0Kc-B}BsQ9V*NPSmf!M{xzT;vis#BfQ*WE|Pzm5E6sr-~-tS5?SX-Cr+=?oUGL7;t94P7mi39joL#MwZEsNzp6u z%Oj7+#`n)$TdkhHSW=Y0Pe+#J$#A)-vfAi*?zX)!>>s6-_Lkq@--mn4os^r_HWm9T zTgrId9IzdXjwr+5&u!8Ed|rMFHF{_vQ;SL1xT?_X))GVwDII{Wv#rh2Lz9z z4V|G;E$50Wes{av~11>Lu1@Cy8XfQSGy}SYG97@77*OwmB&?m6hx; z%Q~gyyzPwpgE4RcDp~)s*o@RL$Yj~6tLoh91*>G5H&q`{^PJkUs!0eX zN-|uC_MdO7+UVy~k+h(8H&RB3tgAA;wyvs6Qc;y)gn*o(p$yali=BM>MT^tWW~XYN)CAMR!@;q!%&4V*@YIqm8m!I1?Jejnv(axh8%>K2booT8zoDoEyuZrY|aD zg9bO1u}q%Z%U7*cjFF&UYTQiA)+^3XJ|$uPd4I~-a5G`XYj&;$`csox2(zSEPJMN;v!~W{N6`9$qBX_2}Q{X3W%RUh{{-9kgImNr7BG- z)nl_q(v(njp8>swtP1AT&BsC41Xb$nDUstbzM4Esd@8SyI9&_=^h2sqv;tRr5+4e} zBDE&AEO%qgb5B*fy1;wLpo-I^?!%KrK#M#m#9i#cgM*lD&$?tZj1B)_mS(?@#vUqI z^J@X4obyH!&;O$X0fK!l8?-o+cg$r|Rs&6U1(GuE_Z$z|JCOgmc3|)gYoJ`%&D-QP zgS{zz%Q;7yXRCi>u6(6!xo|0X$m7J7F*frko4$ggxo)KV9Y0f19FrN&QTh{5=|N?0 zre|p$sHD^|`E4n8`^ODTfG%$20|twW?qLR;`yt!`c9gSajng#j(D!TgZ`aQ(OR1ja zf|nyhN-epGCB=m5=3PAA`Q!U%BwF1ZeeTR+EQ+$`+hrbhq~=G1Byq4|*){BHr*Kb_ zmnkreoz}thMOL@jR&TN2NgbVSU$D!$rT_sldMSY&>wS%+@hq;7`U(j7ZsU-}f@_Pk z9N2hQ_dQUxwca+qT~5Wp59*Hx_p$e?6{4&BYQlxCKkOjcScjN*Xo0l0y}@Nl`O4#< zqwq9)zhj^k{bVkL_9J^h!*b#7E6CMW#I$Bqk8vyW&Ksu6B zc~OQYR6{mG6(K{>&AH1-*XN-C^`pz}AKd+*h>G1dPf>yUhrhe$QsU!)v)W>_E@#_h z|BrU(Ig!m(sRs9Fn`p1zY{-I*oYp*wrMW~Mf42{3bQ1teCEt6XXaDI@y4-Q~K#Ztn zT2V4dX~PinznoB2#faqcCyP2p_}b_yYaTnCJiInv{B&!JcPjcPETetee+bb>D||`7 zc3SwR8pULAvmfVJCuu3s*{TqYs$7j+1)VWJkwCf*TizNXPD|Y zGbd)+I)(joh9g^3Csuem0=)^(^k!403tG&CVahOntIj(t&py%cE3tS82K#pieO-t` zav0YHy~Rew@Of)+u|zfW5r-}4oNN0zw1R7v7&^XluZwj#zF+)*Qh6MXQ(TKQZ^kl06HO&>41R$d_sT^s2nPE z|3Su!ZuXQe-FKIkMZE-;@Rpw=0mUa6i?&$?&ww5aih_HNUHqU7;3)FI!Xy<>JB~Ul%?|KDT$DMP+&Q@`TzoYLd&&<53IZG@P@tMp90pau6-U4DBGYc!N zRF~}18Iy)s3=pm2P)GqZswBw_ zASl6C$cz`FeNqM6K!cS@Kzv19993KOkV#=;gvEylay?!Yu<@DAG!mRa^aBCN3F6DG z$%3jDr(Wp#rgQ;vKz7y9QD=`JIeS;d%2qhzZqwQ82Hc$=s}eNz?)@ ze_k`{DAEa564#DVr-Hj~bz{qN3sYw=4?%?Lwy;pLCt$>i(1t}Beax~l3&{F0c#sV|9PyoLq5y*$2&o8qAlaXDLD7c@~T{?1Iw`#TW>QB@9%jK|MWCC%pY} z5HPrB>T;{F#A_kM~B`+LpLi ztgnCoa<0BBfBx7wF!+QiQ!X4r8P;!``H(i$^*K-MA+F4IT20e~Q!V2} z?sjgN8bmwxzHCAed@#&6Vgc0v(iGR|A25mqc!my-_JdI&#?%X5AI`ONG>b56UzBRLbb>4uyvh8vm{u{ioerpmJ>uXr|!Fa65>iy&7Nb zdW)?LBbQ1}o{kjY?bFWK@iqh)$Z4EO!^}puO}tADb$CjwF}>xgmfB%_hZ72MD)^ez zjw%icXU(jkjp#LJ29jz^YJxZVyKBg7=f;uFXU>dVm@{J_6HT$!_|-5{z;P*sz1&qm zRFl`JahGcMr<$<@{c7WArTSHX`orZB+@h|H8#y2Xxgk7!9KBCc&pwply$b30ig z{O#iV@4=tbz2z%XdW8mHRgGLCboE($lqfFPp+n2ztFp`TYaEq3!LwN7# zV>%!tg|)XY!$@a{WAZ@&0!Davsb@D158v6~xYYDQ?#Q)P8BUisGp}&torV2WH~8)e zfwHfDR=_d_vnvOJ$EG_2V<{I1pV3%E2*F)4S~`rYp@O}CnJcIvZApLl!? z&Y0te8`imWQL-NS8DtuU%PaLgz2y<9fIOqJ&tWi5S9ESUV?m(;(Djy zO+^CpppvX6@)ez9wM%|q$)kL+L^dei zhX=?p#>G{m2NOao_rJ8owxOT;KASvB4G6&NKzAkwriCH?tEangU?AtkY#Qc|YWP-2 zHenqrr<9q3TUjfTPUSP?EM}o40)J@z_*i0Na zvpLM+^y6X_3H>BPq`18x&!4j6lQGVFkbbcF3l8iy{qS}A8KHl9+A(}+nzftK^Z%q9 zL|E5bUm7)P=(IDn#NsL#Z_bi0q9B4|a(%uUtKH%m7l-@MPmTsEb$hmB1EctIrTGvu z`9|toZ&<$V))v-N-Z43(29$=0P@^u%-B*idzWwWCCtvtIm04~6OTV)JM_rqVf$e|R zuQ!_ir(Z`A|7!aVdsEWVuY4a?h(H&I<#dMy4|NvcV;xIky~$U39tXosU+V6rXA{Mh zl4)Dmmh(da9PyjD<8m_gu5&dU-;t|A>WE4-3XfK9JqB(pd^Hr0R@~7C7d`~e<0$@` zJ3KylAk>1ILdcC;HsabgO{&)PNY?Dx{52~i8so$3qj7zIeV*D{>XIK(lx2t~Mw({& z$>Se$fe24*BL^Eqq)24IoKQzIAxk6!()fGV{giRztk((e-R8Z7W@>F7g)NybZ=#>) zzXyRIz^g*(InA+NA483Z@@rndUcJ1j78hv;ZXc4j3T#{L+gi45Rl&OMm9@=3{Q7Jo zn~!5Jd~~)M>GGaaKVNLB1eozgs~BQ1DQ>4rG?Ad|2P@gCen#Z+o23yNG$@tGsye3z z5xVFfA15Tp85S!T?sjxmTGRk8K+(T2_C-e#;*2z!t@OCQmQS|GdG{JE(QV&FC5@sr z7%^o{{b^3f8@H9;a;n=N3*^WZl99Q`LsUQiYMe=utoFxII z95KJyXul+#Cypri#f|l$CO9HWIiQWrqw}7O^@?9M(-Q7Cq58J1>tJA6N@tgXHa$C1 z8`d(t@@}_TuqqhMV%M4WWdh|b5E~^#S6wv#oMXuE!ZZz@S$~vSBZb z-E8$zNb#B|t*%WBVx!(Jbcg7;0{SQT!oU^zP$+kuy%$26(k1Q9)cxf{|H+9f($&7)0 zT8h;HB6vKIH_oKL^bO!ZD3l}Dibzd+6c|X&Td=%pXVL=ZPE~|QK?0(>(Hx{az@P1Q zfHNK^E1#{CTuoDvVivwtwXP%co%Gv;h!_8gxQlBZva*gAnqU4AUvDa}#iCo%m(Yo& z^352bDLuVR)mk|7 zPsM>j{i__V4m`?Y%~y$&K@%q&;J|6o4spIw0rDeBiga^7vXK8l)IH6D&L16NoefaZp3I!eLNu*{Ql8@I-DEO3tIr+i-R2sz} zud{RG91!zpmaAQRtc8I#b#{^S>6<`_R(nU{MUo+{{XLffvM zqQWz$%(ijp2BzW@GP*QnUx)z@#t{}x++*{L$nVv`qYTI*E{Z2a&b z&cc$Rg)LZgAxEASQQ6r72@#>#zWKeG0XBcXk2W7(+anP&s;eL%79W?mp9-eGP+=`s z%i6G1s09h~qmZU|28u-&_MDkTq-|7f+)uhf|9()n=ik>{mAsCF4L!>i!u*W|3(UFK z4UTFHYcS8wbeO5s*y?d#`*zCF0UeEMF=6~J1*>lQVL)@c_EiL%dT%{y7B)h_PJ)Ky zf*2XNe-cL@0YKl(0-_2DTJ9hegK(V^$~|Lzr%jQE(B1-r>u_W-Zl6NRNHT%Jpay|P z@qxI1Tk(VVp@hh^<>CV<7D&TW#N)!-P}6OBg_9W40vl`a5~|O$IbO9%eFpeapEX8De$b!ZFO^OQTFawXnZ}IIrQKdRf#QScoI3Vh~b^ON? zEs0&3?hNuB>$c-w@&tZ;z>8m`1D%FTjs&y2ps=Skj)>6bfh3J%#DckR))qE+uH&}n z*BlTnChtv`N)T-X5(Ew>FPUn(!mqJ!yg%)u;u{F%U{P91Mpl~Gh-ih%-O1y5_puT3Q@=Rn^PN;3$c-!HTTo5C$|?r~~b}(7l(T zEPcUCpQb|q*B^NNzE*qFl*dl5=hx%eYH~(lb_U{JZL>QG{NX79oF66gk! z=KH=szJIswhzX?C);RdtC4(xVvz#m7b4chkQu2L;1-9A!lkXjq58E_){m^!HIDiI$O4EB-KQ>5{m%^6nzo5AV}+2uBAt;u-vYIvKg! zrE1xSq)rT?r(-u(O1m0SecsXSxRdRQDM?QFb;B&Hh}u=r-BV)^->p8%*zP#^ zHI>@#^M+@ik`b-3fIQ!7yk(Q^x{6Qec+SVmWuzs=?dxW)0Zj13O93%isI=5xx=Cvo zFDlhjf1xG3ZZpNL(^7s_RYtbj!uhOZ!zJu50cp-hIM_$ze*HQVAeyzHQgU)oO-w7%uXHM7wQ^8`gDSFPdp8xAeAl&M;YkQ-s^<)l%nHcF!lJ zC)!-#W#H}L7t{cndcADzCHMaz=7fglm8w8^7LV8NH2zE;fXfIe<7O3Bw$HK8J*F_{ zL6^t)9CC(1l_{CT_bhMK=6ce|xXGMNDX2;|i#+|^=J)^n{X%f9pO4_`M2-5kjWC!7 zHHYeEMXRUCp3ai}bNF|biok^8d;6NA+ZiU{K)YHVt0%9}+f8Obgg>jKcI+c4x1Kq2dbmetC)?9JFLP)ZgC7sxmnyiBsd{q_G_c>IuDA0dxYbjc zbK^2d!tsXQHD*fvphTv#@i-xmheVT%x*>GBPp_53e#Db79E2Py=@yU)N1YBr z71z3rS#E24G2$DV)?VGKCDhngl(L(5u^%#YYcZng`W*qRwPime{+Z7-j@Mq0h#2`7 z^oOZnOO-V4qm$u#M^E)Nkut7^)2O0N^iP~57kbQ_&bA>Gx`wtDq0w}DU{VApzP~dq=e|Gd@yfRD=x$ ze-B}WH97oYvkgPTtCI=&(x=?IjL)mw)-?*}lIQX^6F8NiVz#@vSy7SIeA5@2On=Gf zLartg*tW}_n*7^UN~9blL%R@~t@4M{-tryeS%%%b+}tPA2J_4k@5geBmC#&N7wk%e z3=CIG99mThQzYJ}JbCmE^ZmM9kG0C`>727|bAB22AgW}V*u8L@tu+e}Mj7r7zc=i0 z^}w}R#vUI)9OIV7R+MW=?F6$jdzU^v6*6OPT76S|?4)8eT=*eN5^f;hK=Si(bSy7U z90bUA;5*avh`1L~VUiR8E@lY=JTg_B7F zvub%{MA;TjoUd3u=R$#Nz*+ggm>B70x}y4@K7Kybn0fWj(I`(>s=wnGH@sUoGcGbn1hk*DJ<7aS*_ zQFsh9simml@&1yd7)^5-_#JaXQ$d(5z}tFK)tXs*Rb1au*rk- zpmG+0A-4QWJ#ramf>o zX`N7t!ox4W_4)4p5Xv~V+0ZUB0QT$WBpAuLLe7wlV}Ul2rCpbQc(-!n#e-tOE-q)YY@-pyG2f&)XJWD?PUBFD*)=IU*W+z!FI(DBxMDo1JG zHKlS{t(BU1*4Us(Bh%Tec{1Frob!$&f$HSK(V&|G=0jysaRXb$1^4F(xgiw416$dG&sl z7pAcf`>OaF&v`S@)@*QQpreWczc@lTJ+r<1qb%kg^W?xLR+8dxw#yL^SeKj;w+P3? zuNC@p6SKeV0D^+O>JtQY`=$LzKx^vbt>C1;l!07?nzguc4w!>AT;=uqGFu&!e5ZGw ztyNFA$FMXZ#?DCaT4!$Gm$uk*sLg%3+wLpSm>DvlAOXhaWtbAeK|<6-W6h5jZE^Rf z^i)%DpkcG7xXMee-b%a%$$fd7D3c^gRCKPr>)1M^%bPp)?e~kkx)9v9(7>&Y@w+;` zpPL*;?1W)arHGl89iNJ-pHr^M=aI20e|r_OBNjFhA7MND*W1S zKC#I<5(x2J#biKHD!Bj>X~oPd4T>4>vIYPxx>mB3h4AQ_2tObAViT@UQ2omTA(5}! z2wk$y>)0`9(n4kJyUB)ItzwrMrg0Gy$4Znsf7gVn@~-vEZ4vjATD!{z9BLo=qJxSZ z-EkhSXICu^lojc(={oUs}Y<%PKVTxa|+Xi%~;(-fOU*E-Q@6 z16T(#*XIc08y6e^`@GAZ8;pk(F&7uE@xZ81#OZ;ZiXFnHA?+zUE_3x$N4TSC4n(!W zyiTvUE}%a5qobLJg5D1L!1v!U%r9C-NCj`<#bQTp3&FZ~x@KR4j;&tmw=O4)KD&_@ zNZUEfUZ9PzbmWHB$qLK#oOw7PH;EaR1u2AC(W(e@`1iu1M$7g!T&`AY?nF5p@tw82 za{ya@CwD^Ts&HL=lAU8mMGSEuS;z??asn_5dK11Ns0tEupn67is%y%^+t|Km(=YBe zBtL?OrjF1OwzuV8&>Cf=-ZWzm$N8bHhUzUtQ4pH>jS#kxK$i3OFN3msV*=@c3RKKpJCLeGP@nTyw+gtp&(e#azt}C9Y21z&5OootBxU4~1Jv4+!N@Tp83> zjrDng0++GyQY>5eNd8xof|qo9ZFmn|+SzJz+a5vSMNJr~!_(UgV3aZ{Bxw>Bul+V5 zp$(qT0-zHnvgpeMaFslK3$wL2w_4<;NoX|Yms%4LUP%5+wqZ<b`N(2;QRT&4>28e?zwvfa>x z(@1_isVF!S1-_e_6N3Xr|Jq8|Y_xqTl>&CLh;<97m4-n1ef|Bsc$B6z-lzSWQv0$G zK#_*c;YFhz>Pkzjv+CV7_M&Mhht+6(0UzPTrJ?aVV}8*i-Ue6KZ5vC073 z$dGcu6vWkhnts|pwl;tOX?5&{W%TeS!y6i_O{bS%N=y@c0v6p~GRB&`G$Jy{e;D{3 zzghU15eqIZNL)+7ksEDjAt1ry2k^8G1X1YMbFq7JVBza~^pY_Mj1V-}fRVkcCs)~M z`2tsw1&@&XuE*O0Zhd!xw+aZPcTl7g^bsblyGBW;r z=Y!+G?Hp~!RvYXT2^%IdL^gJj&naw{1ISG4`7Sw)xpu(Y`=#UP4x@ZWkg)g zefShM+NJc728AWeUdCbLwY~X6XdDfQYu(Z-&vQo5aJjb--FP*|u6UoMa9C=OfX*9)rv_;K(L9i1;LM7k7&r=gH(>w2^JxMvOdBd9ELKP-h+kRiyIqHNT^CQ zN1S=Tt7nRdC^Agg-RhO_N7lI?C6qi%WvB3Gt$11+Vzzv~E_k&_h9+uTc8sRGdx!#Q zT{5zrL62EZ_+>QXXI;2d{cgQ|ueW7E%%lNjglMxHr;X4&J%CLMgX8Bsl@}4@7K$1u z`LJZJga(r!)Fq+O1CgieXt-})b|gzn5w3ujfH5tJqW7A4T@2a36{#^bFfqi4%Xr(t zarA>oU6G5Byrn+66+2jh5^%d>6$+6F4wt;63g9psEBBsp%9>FhQ-D ztWU|~|3le3EeI1W+nQzDwr$(CZQHi1{<3Y`wr$(C*=wJ3(S5NlcE3W-$c*vL$QXnB z0V69+sLCdu{c^~YRGa55=5?yLc-^xe7LItHBLJ8j2iTSm;R;6yR%kp;hy#`!VoM%| ziGRiPzPW$s%yV5tfcf@Nc%BUkllq`cF(!;R>{ElCw8R=SWXUWlFe8fZ^vuhw68rTl~Bnv$6B04 zMQ>zj+r4ayY+SL@$o_cctRYCDevc2}vkIK<5^%=XJ;*0CUwsqz)9Bb+mY(+=c1rO2XU?{OLVGv9EQ}lSyVuM zIbi0o31tbzF@f&no(ImcNPpj}=Y0AWSOSu#37|i+fR}Xc5fGfTZC; zBdD&_iTHUvDwb{>wrPu(8JU(q9#n*q8BqS|1{H$apIe)tn4!ux)huWk=>2H)MP4sn znH0!IZya?tZvyh!k&K**!yq)RSs;tY01atJwcvbq*n}SSYy14h#-n_{UTfLVL?pjM z1|ZPLM%-xU38HgL15B#ab@4*i6uj*lM4(?io+b7{d}7 zRLY$gDJqoe0i)0-j0aJ^;x>j$C#5@Wk=dI3j^C1Tf#p6Qv&C_~3@U&^)9g1&-dFxm z>t0s8Y?co59Dx-r$^)!ZO{8$0F5H2Q@UVHDOo37DjgMES3>i;79^9`HipwXwQ>Lu{ zi-}~EcZ;BMoDfsZPuiavN2-=!E#W}db~gVJMPPx;aj*&KreuiFlzg&&O22)7ig;6o z^C}+(OkDA1aF^wPo1ZQigOW8KaI(%29Kejv6i4Nf+9#c>SG&0C{&=%3-GGuKGfxEeU*;S+Py-c#?uy@8*PNY8-El9K`85q ztty291H)Mbzs%`t zm;so|iI16SIet}vUq%(1i2^J9(r6^!+Z^lT67<)!9dL8bVc?50Q;=EGL78np^s>fv zc>_`lUs72RGHJ*j=1$KLUrNTba~ZA}M+ zF&$dV#xm0LDn!#s^vMv)xZYJXS!0iu9;MBR@+-TcvyWg+)1>Yh&>+!)dvEf#p4ILu z4o!_8L(Dq;{E(RvZSHIMNi%qzgxWwpY4&)Q^N4cruALj---uy+qzIDD3C8prc(+b$6ft>UNq2J55x2NZ zvmi%HPvAcof=F(IlmUan)0tUF|K`Vjy2T)|1EWMiq~7roL7)MR600c$qGfvFD%jnf z-2GrmBg#5oX_I15y><;dweysLJDhe>e~{hvoyd&>1`Pw!8;DHRUc;%myzce22Q2f zp`9NLMi{eprlviPWw&*Km0*ff$E?!b%62>GV75g^To3G9MF;so8eb&G5oeSXU;rN8 z!W{5cK-bEz=a3&hVp$f4IKCmVOM}7v8Z2P<U^tpfslI)fl6S=Sh$}-A`m@a(Wk*Tx~{t z!-zl+YP=qlB%qn5Vdwmg-0`77bjCE)B3t6!${=csp4^~;A0!=&8^DIa@E-QdVHZsf zNti>(4RQi>H#SKzPFPPo7g>e&P#f(H9{bLIpec`rnczBRj3UZ_kFrTfkU%_$Y)3== z5NH%oLNV$frj8QjkB>-96YWt=cJ_=?)@wBcM!Ca?8U^FQw7~j$Jf0$nQ%tNG0@@YV z>`!{M5rvFj98(a}{Gi#K_J|!|0|JL>yoN&#qSfw~s+aN1yk1DPZe(z?WVYJ}L1wr{ z7sW1&MTmaDD3vML#ze_#^o*Edn__kVS7ziKQsN#o=Gm^KfYXZYEl){`5{$8Kz>iSMjj?8oWFo$uIoUl|y)2FrBsC{m4G1Ttnv)h2 ze0Q=RF7FCcY(9ZgqePV**x!i2-#S)l9T6>{qahRnxCga4?jKuhLmfhRqT=Vatd&Ocjrl14H-svsm7L zuvw*(2cxgsqnmo$BWwE0g~@Gxa%5JogDu?Y=EUr_5R-n%^l0!>bsOW_|beUZ@;UepzaA+x;H%czV7zBFwuf`Sx9aDLc7z;QWsM{5V7Y=9j^P zq$JBpBtR5-BFbE=KSUh%tkeS@WkT~Q0Q>u1>ob(`NLFmRx_Fkolf387Ibdxg%WY{g zP56XyOz8YDcNl2LA`&B7-t{#ET;>V`^2td?fYIsQZwP+!O(8tQ7cOc1rc(`K1Xjdnv563TOc6U7Z;liP9BNDMQ_5q&}5>p|F)N368 zGaFB8(}P`F;Dw7xhgqqQ)VnO6B6DaXANP=j2h6~`ZEU0;H<4&vGpkSy%mxU^!I9&^ z-T1c(H+G0@AMOx^h+{HDk8@-A$ek45zn{|_K63|sfW7NbZ)+jV(uKEh&BX~lr334w z4UHpIMi9es4kL$EEndIB)Fj8|*EIv@gpv1;jCgs^3S1Y2IM40s65Tm}EZl7Y1#>iM z#EH+-yC=K3jqwDaoOm(+ELKzepiMJai<1H6)sq{xJ(rHWZ0haFjN`VLle^2K<)Z(~ zU^Peb8uEg|*Oy3i5r}8+{6gHpZr8=`(VL5X1on)q>(SDQ+sCWxghu*N>;Nh7S-?U? zX_N5V7l_@+u}B*(zjysH4!zIK-_NU0$M5~h;QnHX-1o)M$!lY_uFi$qpBw-iN9stuACY5>ihM#`Ul1=)S@2B@=fG>J~!7$HG~CrbpS6DfD!;`ymp&v zF+bW{!a8uOyP)*IodT>hau5dr6rmW?W^v8b->wfA?(EqRzi3FGubtT1lu~4_?wpvo zMBpm8?4o9%@hC-if;dY~rHA*bm~KG!i4k0=%# z7#@n-;Nhg?Dvn{(^!-==(SMFByH)$(VO9jvV%EihjZY30bDN9@%$bAdla)tJ<+;OM z*Rp>eQvl?XC}VS=RU$B^F>&d2UVB4rlltTd?CI*lp3pi!Ah}u41Q0~JZ5^=To41h% zla8zi+kpkg9|U!`xcJc*XlR-~yr|UP0gQlbk`la<&Xt(7PO@_<|1#{;;pA{~;1&@> zKkIp=^OFp*y=}Z#Q+ki4y(R(8`X{K%_!g7WQ@VI~h?sO)0`eEalm)a1lNEEIf0357 zzS%)u_SI)KJC95~Yx=o+Pc9rh(McJGqF?+qM;5+|CC$E^BV63Vunp z7Hg4@&)pj-kU_%u$B>d@Om^;Ie#qI%7T?NtF2&QyG`9h+U1?qe{Q5HAi{Oi^j9r$L zseJSYJ=ZF9up~zZbr}}yPp9knXM0Y(h?s&i7?NbEht6R6Y~d3>i!uayJ^$n-8(39p zaT_QUPKI9%PUwU3d#A{$nG-$KL*?Hq-sbzem={;2DG8qQD%dnYE%+^PhRiDGFg`W7 zs7DxW9Y>3_4vG+klg;iddT7sFrf0$I(m@xo#eg?0FJkl~86gBEh{cIG4V?`p2>{M0 zfcj)<0(EiecrHGHdi615NK9b%NzOAy)m~J$gW+$vKo^4wF9sRgxZ-q%kyn{ zDcHlC_X~vHKbuSGwa#pe@kE=xq!7{)CVYXTSh2NOz58KW7P{Ab#|E;6cDX`UUh=K3 zN5CrN&09o7F*y|ghI{~yfLS;0G$ifZSZlNk*wobGJ%E7ZAn;G}2kzuH5>WWDAKW^S zTT|}7OYAZ*1IQVvFa2F?)aTMKeJoyu?8J-naN4`50{X7tARKZ9W3P1qUNM)_X3U(( zx0qR(tOZR>r&=El)z>Vm{ZpwJ<$wDs#2jz-TS!;weJu1)xH~KD@4sd08d9Ru%JrG=_c( zIBus;6_L%i4>)qyBD#TG%vaTodKyPRH@#*%ew%ZRF9}{m-Jr!wozzq(B?BQm@rl6W znz}PK#u~bo~pgn$YIxZO@zBdPU}6 z_^SXt(vX{-+Q~No2sOjQQ=?%Xb8rG?&2;~~b-L<){eK%W{Igl|dXM{3Fxs$Q#RtHm z45C%!BCI(NWGOA3=Q!8w(Xaf8e&%BT+q8!9zgP}4G5+t}x=J)`?YB6Pes}c`z8X^; z5!I8++W_7Q=qGI9Cs@Zj&w(rrEl9c445hvku~!O2#Ey!}}3M;liIjrxkoo z2k`Ssc4^>%Qlm^#?e#saT08O<_Fwnv+Dn}S=UXWD==6TPFvFN{8oo5R*lOaZd1);9D8awm4{IDn=^x8P!a%`F^ z43jxLS5sU?L1cUGCZ$@RQ!N*TS~)GM%1s5WO<7lo5g4VB`uK5N4GF6m=|lau)umv~ zZEmLh){Gbm4&E_Jj_#QFsSumuk9)n1uPkEXZ707b%K>Md6%#V9z!9GwJn$IskhCAI z4~tqaJvrrp(r+@Wfy(@NgEcwK({`k_?(@z|DYMfnVa8I?(C zvbqc}IrY2ez17oH_0SqKzZ#YT%iy0xIHa@=T&@~PEt_Pumn_znB|dRq&s*$jRE65c zVr{r(B^BqZFU_)4J>@}?z?n$S5IM+J!;VR|fB1y609DCN3w#1KfzGhPSQJfk#Vm`q zn^T&@1J!Ug{=6_Dw~*-GG(koKuY)*q8ufYbkRK>GBUXtk+nDBFYlcJM7_cqoQ~e7d zLkP-_l9@o^YVG;vp-MRAQnbp)`M*is1p2j$Ktf6s0l_nZRHT+}5JRFAxt2K$syNFaTGqZsY}! zvX_#LT9f=KNdN?lqBMfVFxjLw$5(Ay6b`-(7b!!|l2n+KjU^@wyDC_GoL|w2MccBW zwuo|p!yTTwo5IE6p^?T(R}HQ`lxrcPBnf@v>atQ_v7{7MyrUgE8>5W?3G3S;cIuV!~!W z{$89{04d1jfo8a<$lM!1_D1VinYTZpB4wkV*}<=BK^^{F9yj41602h+7BSAt`KqS5 zCD>rnoT1PPS2m_9$0nKfKQA6MgBit!@L|Q&F^&fpK^Pvu3Xts8__Iciyh=WtQO8Z< zNvjoJ8dov8=oJ%LnNX{+7r0=S7d1IGZA1ooDe&*MuE!2$4g+(F&%tQ5<6Pn{ogh^v zx9WC5e6?+n{i2Y4KnA%H8W;{~;y-)xkc~Snm{JFSmuU{deJbGWhGj#>&adTHT1-wn zuyo{`qd`>CI4SmQ#G#d8wF?&y>`QYL4CWQuTDq3ZQ2O-ym&{sj3`@d&(R?`!p<1?gq5;-K$ z8)y;X>eUjfSY-;J8$anBC!-XaK*(78J=un^3>)B-LXLT9%@ke8nIHXS4D!+{x${Y$ z6=LDvhoYGPzepJ}Z4&^5y0YoY!)6JGmjyJ0`Nwx*==EFHSRB_$zVYL?QPms(GAVef zGLd04YFTfDMmx44;C;N4re$!87hW{cf{tlp1>wBN8Bb+3S{0iYFTdKdEw2pvKN@P+ ziA)RJeY5rr;{f6pYZP_|LA}<;ptYrEayme*SX`a!RwZA;hLiTfvA**G4D9>gJ`H{T z39aZIT(?9FV0F_YKzJL=XUdLFXSw=$Oktf}|L^D5OQVn5qnDYL5&YJ8)=EYsM9stA zrzYp4y|ha{r!u~iEWbnbEFZ`|nXNqOyfYeC2|R zugZ(H1kXAKc%ja}u*L!?1pt`mHJ5IBmGrp)@5mu?*`ra2g zyjs45j}eOv5`fToytY_MP@_6{{xJb&Yu}L7X=7yQ#ae_vD7U4F-+HFd%pfauzJcpPaOo zZ#LFy5u`5DQ!}%T)Ub&z1wlT`?Hr3Tk99n6HBLe`v17@R&$|>NPOUSE-`o+41sq_6A_*67psc0_Jf(U z#uHp#ido}~{SDr(Y2`>(1N+T)uvAN1A1v~==PKN>*#1aPt)H9>F{ij(d z>5%a zEWOiX+1w&qfTykBMVcU+(!?D!rLwwTnwQH1M?)ta+4n#1goVdNH$1cT3e8GFG&eba zn;BCzNIgwe_cYYojFLZPrk7)ikaPZBNgQf`0ZPT_dtQ=Pk6rXcbI^+rEY#-9ZfKvI zc$lfK{N<%WNaZ4u?d{AOutf~?zaMwm0_k*v(&VGDT>T%$e4J1&4_q-@ACfY$jfrD2 z3d9EJkU3>5z&Hf0I`9`LnP|k|^I@2sVh3GggH6CqI~QnRXx;EY3RYkfQ3}VEmJbet z#if+jZAhR{iPsUpuoGngB$@d1_6HRq)BW^ILH zuRU5Dy~qGAk9c)A?~txUvUC-TU`RF{hK!O}EQOrUtZfA@kb^T9hjBJcIGCfveu`pt zIy@F0eOG^`&)nNM%9p>-@Dt({&|Jf%AK^Uy`ZH_Ws?Z9mwo^uXNbCNJ+(63lOSv+( z9XTOTq`aV3!I+-p6U#I?$?1oV!LXBYwm`O`jrI$C;(C_fk$22@bmBqLQ6N1<&A{}m zt^G=;CtHOO2Tyy#0(8xuJ&nfhaW*p8K|_}5hvd?G6lEJ6=T@P@Ve*NoXm|S5vWbb2 zkF1jmeKnkk;=ZaWDRmAV9Q>>XVd#T_qYp=XI=U7uY9t}CtyiV`%!35dt6?T_xy|z@ zKyU6p2R?R9uaAp{eh_*jvd|T}TWOC4na^zHb4obf!~@=q&x5Q@Ud%fgrbRV)(&8fF z)-hbJ!(OjL1DVDhH&5OLRD?u zGSc&2*Y1B`E0W_e)s?+=1I^xk%tOrvk&+7OS@R=jt0mIhMwg)dIplZrbZPWAr}95} z^nW11VtdtAy9UOBnokp@A%n6ElmHd^D+OI&d0>g^uJGt$F%$p$-jF0i}wD5 z8OBmXaYb2&xAd|>lhtmed*GEnlHqhsvTJIdeEi#p zA^gIGpd9fJ&m^pBJe-)|oYX9oAkL5G&r<5|ho7tUqx3MwgqA}0Mr9QS&BbN(S?GzsE%%)n4$%qOrfc! zmDgD1=sG>P9Danx2%Mapp{r3ab20FAaxlbSJTVmcNTxz+gMQ#@I3;PN>J?tTh*Zt^q(Yu!VwO0+q}txhfBZjTC$eQ zhCh$?eD`6|e@A)>%}A%8-fd*@_@M}(H-HUXoTc+ch&^I{gGSn8ZNOywvPHkH_wV1l zC>X|)(1sK=Nh#-^FTvqp>75;Ievq(T5U>TH`g=@nMcu4ZoFyY2!SkSI%Lgn14TkWZ$< zBck`Hcf}WgLrm|q+x>OqBn8YaB<(oCd2u>&LwZ*GrrJq!eU~>0L}X6e56>Ly32Kc_ zU|-p|GjZy!-u?|nyKzG=t%Drdj#kXW4}eQ-bT$PsF7jqejw@)hYB|)T7~r&^IH-pe zWaZgNX}u9lBv}PE{v>>~{NZNFy&aoa1WZU5spPN-L@-tykZ(B3*9I0f=tpn?ZjKY@ z%fy2t7eo`Zo*{VG4~ePhvc0m3l3`&^YfSbyae&rQjI*;~ipy4a^hohYoX;nL;^9A6NBvZ4&rXjuRojJ$P;$gTlK6Ww?#)!l4Kvjrh0 z3L~R(Z(xYp&IRF1>G8eJTA(3xOjTRG+jN}o76k2t1fwF4GTk19waRRQul4fEsH+hu zOsQ|BDCg$4pHQN1QWb}h1W;ZvPu68 zr^{n1kpNMS`vw>xZF)D6#7ZLq=Hj^J!tqQQ@bpz!HinAOLdKIjWjiimx|xTJRT28mc8EhaWx__kurR9iw0$&@Glm~}MD?8iqcIq>Xr z9`j!!$~@2+Ha_Z_%10|$=+fEK8Bpz1*U64=?+n9Co;7Tv%z}}0(0Jbq-^*5V)TuIx zLnaK-60WGeE*s%J$3GE^uJS%xxkp0;(2<4S+Ko)4P<-JDIM^(WDa@p@WbsJsOFUoV z9$W2kRSR2hmUkT?9!k~ld02$5A*WPHb9x+)il45T0xeiVA_)LA7^u7e2U_fLo(|lm z77T}c<1>DfDq7>nvLKD9PLugsTduign1oY6-S(Z?;>N;X*y`>#Gt237hFx|ee83N@ zK?bl_C|Pk+^=zXcdsZzf5P9~8P&lKtrPDO*8oNIqhkg-uCokBA&k4E?`x13Hb|WGF zJ{0Dm``7+@7w^wY#`sZmM^(!P0A98-n@bYM9)*AF-)_+>hJOJSOTu4hQ>fC<$LR$} ziXT#}forT-euol8^ih4sC%{-F7f1~2tpJ@VnUeX>Pz7HQP~wU6-yzOGJ4TrEl5xV! z#xYpj{G7C?7so--y4hQ0$!g?J5SD~#;bqppGz}3)l*i7RTgMjHB^ss67hB-oPQ&#c zA%(0QsfQ7u#Rg?hON?!t*9=b{Ywq}H_=?g;5na@Bm$s2O>*;8(k?y@de`C>Yb+@&9 zdww2YmwSt{N4GGWY7vJgXb<^^kaQ_$o@Z^x+8Y2JHbN01AT@u%;4#7-tSwWNamCrsV zVUv0*Z8xJ(ik}&o<#VpP1oOejx4^X<3hj1jdrK%NB2~8UIz+XXq$e&5ysG2g|Ve*`hIo8JWf;#rT#6zkfmZSJBcQdPvCy$3b$_y6`x z2?UDHG0SbVU@HDJeFXp#+{L=#r?_w~ZWt68ml@7TQ-H1l;i$kwzrA=xv(CnLlt-5D zgDRw?q)AKRTC7DjwkJbXQvDths4<62PZs|4=t*%Trl2 zx&@W#@9w4aW>b}jx z@ohnScyqZvgaU!CjHmr<+jwijW7!HabDgZO$E-eR0j=K0SqCPF0a0Ni(cF;x{sbkY zLBs1wMQ}W&VY(wK_v%`%sWC~XKFm>`IW&n<2FD){$r1ZQmd*2y-^gJHJiME!JS$BV z2M;BS-u$Drd$9hS=>4yWnVgLOKbDR3otHU~{Lhr9vE^`AH5*MPzQAnOkE}E~AX?f| zwk9($$sZ0d!MA`-togrPt4y_DEz)6ADr0Ediq)$AzB@^KrS{|M9!*M?l1~<^SGU9? zZEfwN)9PMb^+&R-v~RiIb(Tf$n{A_+4GX=A zydBLJ%PreP|Gtu%G#n9kP}xZnoLW#stw4}7>v-_`2x9|3hZ9qSH${KQ6|-|j#HP*< zTQ4IB-$BFj`yRfiK@ag>o%*V(;!23KIN%ZhkN6c zZUjR~RTR1h6Tq>nTaoprm`E`vmBR1otnt5sLD=3JWsaNz4Pn9Jr#XDMB@4E66~v90 zJWDXuY~E5MwEK=YP7m}3`C1X1Nq>*_a$O=rYr$Ee50Be1UnmD*O9qMz!I{ydY~%y! zgjZ(=o2wV4^pPWu4_khfZld1svIfA8FBCQmAS3nKh4JdIiE2Nic5AT?*zX%xM_km9 zgQrBCN3UeQ8iO095JmD`dlPNQ5l5f*QeDBexPQT$Gro2-A=^0e-7lASOicf6Ycka< zJg;y!F7g!4o^-CeuMZ-ZZQR#Weg;L1b~JddJwFHNx~kA=MR#^?1YWGi`U?L$S?lVo zzyZx1oKojsly15DbhB@%FG5og&+|05-x_7=q|`o(y4A9x?5efwLcV1-w=7l1RFBEJ z=H4cM`OiTG-8%El6nx2uzkS4l#5*LSV0eP(X!1>YT#cqNy zVFyp1Q}3H<+hwhWrcH*D;4?o&2>p8&`iBVqj#Su_a3O^`6r)&nUs4py`-sr11M~S$ zfw(w8mTeE&YFBj&3JA1j+DlI3DuVfPac~N_VLc2`s!+}-*@*(?6W=ki0zh=1vpmCq zY6icWRrqfmn}DQ!ge5$GsD3#xmNJ~{PpkF~8Im&id5G2`NR>4Kqcr|s#zK;p1I9N% zq=SGUR;wtbg1IvlHg>sj98a<$Em#hrOf6$+7e|KJmG4$+v-S%wYs*RJhTY9>L8`qF zCX_s<^mINYhK=xLGB5#_^J0%E9U(sm6S~=Hm=yJc!6GpCSP4!!Elz_BdVWTEmCj~H zzyr3I^E)6+r=@h8tQfN;T5pH*tfy`u_B(J7fWY#(S08piKyNGqWj)-i<5Mtn$EFTA zX|gmJ7V9&I8Maab%6UqN3xvW^u*3r|8DipG;#=@(y2oivsB5`oJT0hEJxVnwFv%D`Q_5Jb*Ky(0Mhq9U zc~QKdBEsfi?cWV8*((j#4HU<%9X9XbzIUBipaAqL?{^3FBJ1HYGj?An%wT{E`3Zk@ zn<>hJjyoZ#WXaSRFh!T>j4a&^SVx3sX6Z96`3u51olQ%d&553ugQ-s1=-p9K569Q! zjsH|oV6{PC72q3~7g`N5o$nKoJn+%r*_E&Df-;7TK`qP{a4v~FK3uZy+xnG14PhRc z<}io>ayBThPVazicA^7gn(4&|q(p;lcDyDFy{yJO!4n}BK+XX;WRQ|fu(zrt7~V6A z1;+n5NjMrX*L=W5Z9Ls|1+nX0SXA&RsAUdYDh8h&Hf<}u%O%guCK2A@iYcEM6yn}c z%vRMk^ke5d7^`ZH)W{BWNNi*d6I(Nx;%hF+;CD1c-aH=0v=;>h%ttP-l3^r8ee0Z| zGb?6|b2=PU6yUT^0LkJF48&AY&T5yC#CPI#d1(R8i#G#)ZL1z(#PgW$HMk<`-hP0} z_KWk8O?Ey269F}Th14Kgwl4@T4hP|h=HXJ<24V%P4t&fh`LD~T44^!vxQ&Wgrf3<* zUV~U;0E(;y&R@)J&rEoY@T zeq5_zc>dhJE|0IzwyLzgZcl&2FgcAQY4T`-y$zcwy5Zntnmhr-2o%uMru`_Rrit+U z7~hv{?WRwtJX zT4H(kOTFs`G8@{|BXj%hYpUW0;$8Q^ee|=BjGWLBC|6pUrbCn?Q`Xh+Ww#)bQkWZ3 z1kC}DJF2XYM%qKOa>X=BMc5^@gyfxn3gEbUr8c#P*qz$Vs98Ci+L*JxAmmdbjDT+G zr%@d$mx2ZZu5o3*1Dne>NK?;GTZeF0e5vZW2uW%5?g$;1o%I0$MCk6!@1Xu-2i;szE#K>bT9;jEGR z^-_h0z~yE)dNwxzerupB9buWZvxIBc42w8`i1BzAG;hM@zNpU<7>Z)Jg~52(b%vG1 zlZoV2EK?ba@aiZ$#V?;>@Rr~~C!VE&G*L^DW^f)(3N~Do$w!K&c#!~9GKAVH%)Nb~ zP?4V?Ra1gvKV)W*mxTOJL!cJrwUNV?BGNUp(#_8`TYHGt;jy@^xHH}c@MS~OXX^ZY zzbEAAg#vf$M7G}#FJI>TdHTHmKbJFeXMb=PAb1V;jB4wZFF!lwg_NJn>I3F1(N_q< zSoy`wv*t&FAh|Xy+UjNjxNbNJ%^}Ha-=IZ7pj^L=jUk0s?`@Ui++yfJnf}8M&-GLKc5uKc`1!~^KhOQ^m42vZ{vIMyV|!9 zR3KJH4059?z2(0f4An9!Hf$>hP;eZR-&5EGIR;{&Zd85LX^N3~+r}((H5v`=+&JM~ z!b=1ABd8(<=5+Tgr9lG7VD@5Lq~34xK~kV}E=lk>m+Hu2ECqU%} zLKB=_eT8oV@`Xs?u@4jODa(!SWjj_8X;H!A4TYO1H)J@B18gJbqII>kSEc7241&ia zgx&wZejy)7f+p6-5;)!lU4@d;KJ6mt(;Ah<00~8%nbEOhIIR*;h_K+FFF>%gGOrAP z!powFLE1IJ;mZKTt(j|w!L%?KP#JkOB1l2wm@xgzae(z@#o*frq_q#4T5wpunI$@42e4@V$XS=;3F|GzDb#=Y(Y5bA)BOgmkEEg>K27mcJ1UD<2S4O9(?C z4cM76$JYS7zfleymK((Jgm9t-%^{R8ByW}kZx)1`ZxjS=++1!5VK51Uq97qtMgL_@ zG#Pi$4F99Sz8R6cBj|J>8!6YrxVn10Y8#tjf@su4@O5b>sdq_S-x?O{zNnf*m9jG+V2Wn4*%Ai4f%DCg%E`E_ya zw7O4MJISftuVUrFzK2iZP7f1~5xH5|bF94X98>;NaAMChQG^5o1HXnFZ1-^vOKS?_ zO}6v#M<%y`*E}+?h!@5c^3EL??`ZzTMjVbDf)&U0J}wygHl1Cl^1^^jf z=r~9{uNA_Ejnqhz7aT7?rT`Iw&I*`nO3Hi&H_LhP4gqS`rsWXbX`X7vJ3u+In9%iU5?lo9@M<9}+P4v6D6ayXE#jy1 z9lqMR>08`t9I9LkE70$F+fMd@92RBGvTti>?^BGl+cqFWD4V`8%1uioLl1(i1QJgT z^OG$*LLC`ua&Re@-Uw^dn)Xs}^Rl{mch;mL^Y&8j7CII}*){^?@nT1bS0O35jZTN_ zE9Ko=nSaFp;BeutgI%l#BcG+9t~H>V2(s z5u>bqx?u24o%-sGDHN53#JasY1giJ4vp}CSJuu|_3HZ!?0e!;fa#+cHg#c;o8`&05 zONsgeZyK89LDX9s0GA7sVem{xU!R6n5&)cYx&KX($;H5ytrU(!=rWz%YQ_3L~) z)8E5OsW8!5@wSD_n8$f~ur$s?Oo7bt6)ci@B39GyU2=Kg9ut21u*?tAdYVKt+a0Lr z{e^=s)Hc_!)8!jm*R*wZoZN1Fd@lzvnlMyltz(gz?o$FdNm52v1~>d5f(r%uL`V+6 zuq!G*4tD?M4}eU$jk?U>!TR+_j60g*ev3zy3A_tUvxRhx(8GyGwv}c6?zlE@Z)v&8 z+XEY6)D0h=>(`Dn7TLnmi4i2g`CNGiZuo;QhP3PP-{_o;;lGWfIRDopsS(X9=dE_c z|B2*Sq8Hzj)5xyg$j`Dfx55C)-@jKgXq*_~F+I{JG zo_wm1>JF`7<9WU1Sh_kuw2R$2%jHYK{*y(>pyW zW&7LAnArxvUwoS+ZJVL0>kzNW8EBfW6AJUOOjd`@T0=%-!pWUK zpjcw{yS@x7YdoYznsK;q5Yr+^D5gim3?Y&-<_NM-KPz~iMps_x7eFBEXLAkU&I}qm zG7qCnR<(!hwt0`QOtRZ*J~Ul{MI}hyak1E!En0QNxMsVL! zU8CbdQn8~yT7uZ&0L6%4NbwdbXui`?y}_0*dE2!6_o-b*1;7YAM048A3V?FWjpymTM;}gjOvx6;JCAL?Bz5hezbkHwtb4-)xOPITNNAyje2=N zJ$Igx0nP?<7^eSv)0Oc;RD;*AouoHtl4qQ~xl*16*DHCZv@>bbVbi;Nr1%zX>WojL zqb^$#5mdj^(AK!Fg;}{@tKs0Th==4(aL9r4IK@+#?00D9gNt$x3-NBXD2aM($v+>t z-S_n}bZ5`koijgnGPdz`#oi?C61tde+KJB0XGhfoqfaKc)fS|83je(asqIB{MY3rwuwwBvlf#Gtr4 z=97c2sTyB=O`4e)x0?XCWLux~zS~)SJr5kRLY4O<4(gQ`tbx;7vTxYzlGVHfMc@~S zP&?6>+&E{ zL=UW-0efrZvB*WYY2Z=L0Kf5_08Sfa5E2Q@Y0tL8l(qFjk+7N0c)P4fg|aV_Gl~Gq zVknO|nB9*78-oOa8~eOq(dEBMyf09EWGvxep(bC`Uu1PW|-uOP{3+dVhJ~&(SgzA!^ zM_?M?!yj-Y%YaA4TRmWk*+p+XqYV?mFTh;TUhW6lPRu@7IJ!G1{C1mUv34pofN&6z z(;91Yy+S^|M*&J9Ui~+TSeSxl38hE0Ek7J^cO8dB-#H!}bW*FU@dN%*XeV)tKO%eM zFiphG!X?KZtw$uXH8a)?@NPWwTCTPeC1MF}+!yQ}*PI}OssW7u| zqgv5CH@!880dwM5rV3%1#iPNp?W>Fzh;9ZSmzl-3y9g&TsK+aQyI?&iM)4BkG43E)MCc2q z$}stgs<1>LBFz1RIoc)WQ9|=$ec&s&k5<&M>uNM*4MZX*T*Et=C(7U$G zrdP6KpvTFOq;Gm~bt$u=+Bk3d{`frlZTHGc01>fLmyI#6)AX2W% zAtt%bk#PtD9UNf5s~qdzw9i`ls{s!xJ(H(ajkn^%xhx=pTT+W^{(n?ROU;s{sH(lq z(+tXNu?k4ryqk`c2(!s6q)5@A!bnkTSYgRMzi_(wbgg$wk0Nk)5r!YE!gxpyv4oEGW?( zt^#C}{sU-7C=G%`6r1B5Y5|bmh+t))5H37Rp&EH26n=awB*4h3COa;}b%O(#OIxCY zf*K-$yvf*EV`N0oiG~2`x0lT&jCXrdMBEe+ca#j)`gHcznvR*%nOQaNeQ1H>pv!Vd zLAg};t7pt07sOKFw3RPg7^H#On+XUU5HOHyK-Vj(i*QLCqoYAiuiW%~3cuCXlTkJB z&co0hnLEpdT;2@-fC5W)0%-u~O2HYlx|0x7Ll~p0AttWoV>F(VS}S_}fGVp6vJfPM z*>Qw5GhMYf4avyOMY;2uCVNisP*(WnJ{JRp$@4J-9shi$awL6=`H*FFL8P8;ul}vF zo}b#of%|yF8vuIr==eLouhO?poxrGS6As)`4k?>AlLUK@YVfODvR0|oP3YGI*fdze zbTTU%_zI!|L26T&IkXV*N$CIk!Tn=gsO`Qt?-pBL4M(&=L2+i7HTR#7dvpuBhS5q| zi9-`u4^7cD!tDSh!>z4<@h34A6$RJu%05d$adm7j5pBQ(_lm>~%opv7Uuin|f~2_l zJ4SHk)xil}zfi31rhPyUw}Odve7S=B<_%1v7o3zkgdu}hNFzT3p~V=ZSrQCvnq!{eB>_^5Vlcy?Zs)?0HUoUOZppx-mHN(zFn9v~T&;||k zb9CeKM(;=Dnm$IwCK*!lYVPz#TiScs3P+DG(6{GA1Tj35_-XXL-X$-Pahho6-zFUo znzU==>d`EGKkeTiB3J{79DsDKZ!1+N{Bp#UCqhgUD2d%1`mawGguM=e5+5F-k$psT z#$?T0l1l#*SQqfawwE(#(esY|W5agy!}_XM$A05VtG4F!<6V8^PVevg@k+Xo+?BRc z;0oU!di4Z9#oqT@&jT)H_XhcRkmxAe#4sw>lijKQ;dV8nUr-#YmF;XlA62+-RatbkwOOE-# zCmX<9L8#;|U$C zLW7oN)m0-W+SyL;&b~f^?s>D@g1ex*()?W89ZVUBl?p^1D0U^$@FQ>sMWn0hs>>4V z(>5B)D)JpUex2_9t&Y;Q5aZ)0Hb*+6xSZv4vYL3eO1RO-CCd%yEB_^*-1mp#qMIi| zWVVTc_2@kRCe+ z?|osiso~mSf6oA<9HeSiYP`gET~nB&t4~7@E{i>vO+u6KQybrH0t%c#)lx4-x>C4# z=8p%JxsI#j4>X<@N`ehZn=wn0Ek3v?;``5`2CI~5=t<5rs>mg!EkA0(!> z$CU*5NZo$#uRi<88bx^%**n?fA-jG*Vo`-ZcmL+gy)KR>Z;Vp9BV&3gx>lp*M1S?c z27lf@08^klx`wOJ9?%}?Qg8d^;?-@e2<^gTLlF+dMiC9%Ff6i1sne??L1KEymA*P*zdKuyheadL&YcWomI+ zNVfC<`d;l5HF!9^U`^EgmeCc~{EtqT-!H}C~vaY)Vi zT_w+HxaMRQi0r(H0}z`yeWj-wH_jK9BA{w6l(?6EOWW#)yf|dgL?+f}@!|YccHRvj zO^_vJV|;Xi+E?=YUrc5T3S@ZReFHbtg9;A8IKV(9Rt!M`$sS1jb0^4xM93JN-2Rqt z8UDXE2FjUO!A2R`cDrDm0iC2@ka;oDOgg`m#LrC9 z4KldN-LQHU`F#LPQ>wF7I7V@j&-F#y-LkO$ChN}OO2XT64z{}Ca4X@yx3&|gNV|&# zQWf^|{u}E?9}7_0JmKdA&C@j0-r-kD;0UF05lUZ>-;p!b2J*C+I8%(|F|eQj%mF>8 zElLsDe9Va#$mv|h8E@398gyUF?Dz$001FZv<51)GL%^+-z+Kih)XH5q++{Y{2+h~< z1p6#13bcAn%hF3UCq2yQrG_ZmGZz{}8AyI^Xt7-w1jdkIj75m?lU}~Z#rJVzgqZFl z%h3e%5{R)04|Gpu3CrQ}7yTT6JLvIuU8gPc4u8ByS6_e_;SDqYfag}1K0J!yc3Wpf z?6wBe#R`RD$#j$p$V;W{OJc{aqFA2C0EkkVuXf%fKcdQ(((#p zq{raX5#KfK+d)ezk#RxHvu$1nsV@Sjb=H%aS`Bb$%zSJk6*&$TG>`to38aER)p*@D z#Oa$SZ1v54xU&|3SF{5aypYR`j1(Qp?(o{9BKN5d$~RD~xh#f7rQk#LiTPX+w)uYdZrU+;;rlH(zcoRGP*g`S=9 zaWt7nLIf4b2!hPHxDDsAT#w_xU0F;ww3%uL7e@1=0z1AT2Ny&X+ar&UULPkV5R~uL zKbWPm_QkRvdqmaZ@wTN(u~D8~`F274QDX#uaQz}JnH30?#cgqgx{T&k`PpN~z>De# z+%qIIZ^zFEGktSsCCQllwhiLJv=?NZIiu!+ww?TaH21yv-*Tu)Q zs%+?Opdc!M@8Ur=jqg`SZtQ%I7$J!>6D-KkVK0E`t!OYaRZ~QJVz#IU^scmw_d?6I z{r-E3YxD$>qhf|T;)ds`4@F(%aHpUalY58AZ}PF9<6)&T;8`uPq9gkn&%=NC$||8P zB#6x>(ZTd1ColB&yFbsNp?LQ@S|xN*B$oQ)b#Sn*?-9M^k^tIxP~w5Y_lW0*e% zQI=@oU4^kadKpgG&SRPq)9SmeFckx&9ln1*G#Cv45STCPlo-O6;f{dY zbOn@muUp_&ae*){GS1j1i6eDNT<>x$F+ll+xEejts{io%T-MWQd3Y+D2Uck4$U6Jo!mw? z^N7|XiiWcK++!qk$_~i~hc<)FUQY0Iq35aEx2M(v+w{rFL!Wr%DaIc)UElyO>`p+s zWae?$CmFOT2Y2iH4d8eF6)(wb_aL!pWkpf~ebiFvL0W+&k%sA03!M2fE>ap;!;w$D zg8W&Bxmdoxw{DL1V+eLb=M-b1-d#1bbj2jX3?wi|A%vz<>I)))P6M@ODfZ55=FazS z{ubC?uK^B7ThD|RbXYoX7}GYbE4`3XBmIP5AI++Ws9iM7FVqz6L8`kb&p{}FUuLy> z#0ipU)IT`Vj5Lb8gO?hS!R;~UPo_j<@=*VD9q~Qo zpu4uwk)P{1uhm>`U+Z@!@lt4jEy93v<@+%_M*&0pcr!0X#qoj>4Dw`{#h4=%0?d$X z#z$7V9?TlVQv=Cjfe=Y2Rk-^RHUye{jMt~muc{h)EvMs(#<6Vpvq=rDO;y$33Zn3CslH64pC$`2WHsxtxBuDdRBdwL#FNr6FR2i3+TXAfwFlP& zFD!nU4F=`r&GOUG@BKkLwMXxz9vs7d|2Zsex}CRY0AhhSye{H^t-_8RZ}{6Ge`9?6H+eF;1=5uC(hK?Js5}XyK)*- zulIQgp2EML!#~#-+B+J70IdI^)Af~WUxxVZBJPxJht=`x_>1=N;_#i^7UA*PMB(vv z*(GS|2Jveus-x=YVOnSx?J8*7DtmN1ch@TY+%nic`(XYE!H^&4~t%=oJLw00Q0Jpyq zr};r5q&cvNjAy26s*uNSHfwzbO^oT;B$_!TZB@gd6ms`z0K1oU((8iD(vwJ#;};vG z(-GS8T_GU|lE|3$+9LaC&ylu+mIYwl+DF|X*F-5=1=g>y4IJ$uAHgj@yj z8>xy{qf|1eV_x-mPvlhfYA70v-{(!3ZU-Ea1$n~0gs|#v zFk|d^{ZH3ESxNBo#jD5_XB)*;_dopa;obFv{_nMwcV7bBUq3ou*WLu}I>y%G#x3U} zzom!PK(LreGFYbCf8+ONBzt)p zMC1u6B$F-D#HcK!5M0@_INR(TkRd*Uv^)9Uq?HukWI&m zifCp;FMY6)WDClf|5PN?g8+jJ0|*+_<0R1CK@7$5e=3|G#K(ea@W9S0w+sOm9Z^*D zpj-V-`CyHSwuN1|SZ8y&^ctRp0~Mt@C_q^-${lKqDueKjwHzeutDI<;_K%Rm*kG_V zLHIXk{9CHH9=j|~9Zo8)Vu)7+LBm<+dSpWsK}Ly}80MPx4s4&lW=w)b?X&Qi-`H@4 zm&Nsk+4#HZq?bHrsOvm=7rLSJ`uwGV>y|W+|3)k&o2ZF2OX)z@_Gu*(=Ro>yqjEo) zjr8m$%{nFuF@i&lPj=PJ{t~mLM-W0Bwkn)orXF+#K}|Z?XSUk-y9wdHtR`Yrv7`0XmKNfLgV^<+MnwK)*cy(}B!37f21!2;`+jI> zL}5fb3B<2v;9zK)r~x!t-D_^wQ+VSG+4cJ0XuLwjEh-&ff$Fj$W z%EncxIKUdVU_YW6XMeSby4tH5))L)5hq)Xt-7|&1aRI-lPDIcN{ zj8`?)crnXJg83gW&%GHJ3(oGm6e^{$rXIYI&DFiVmbw3(g%RdO%S;E+-p7*`Oe(=N z8Ddd;z1gGhGDwOcc{oxAkiFq4?jLu%VS@By5AbMIzCQan)p>-E8bAyoMjYklP|{GE z0$*-xI9DU8(Rj*21)9qs=I>yc{%Ejr`vl3~5TU$#MFGaen!jynnc*jve4utP_%K7k zNiTZX>Cr@uT!rH7Hy`+|9PTV$!n7O;g-?)_eCr5rlM%$&Gc;UMK>2|+cUa56vD!N} zmsZb5{mI-_#S#GYIukfca_*m5q0CaBo!)Nwe?QN_+t*?N5fphafYb$*Jry;KQWFVZ zb`T*5Pz7|$r_W>yIk+|71k=KuJMD5N#{}1MskjTimy%mIX%bRX7VxU$CK6z_=548B zO%CS$E$_%~cBAle8Vc+*QnNc(Jd`BBC4%R`AUbTQ_YE&#hz;CTWmjGwY+dASEyI!( zG{+$8*Si+a4Ww-=%OwNld)#j@VpI6i#It!=9&1sC=q(d4)}0NcEYf-Bz1)J$|23Jw zY8H`*A@k|qd5pMLbM7A9D~ij`?EE~ZYxOg#h9$X%CZVR~B)HblMS7~Zf>mpBggP*p zVYfgh)&!zd`3dA86XN8mVIJZL+y2;76C87dr7k+uYOFrez=(3)NZvtm#1;X}iT z2=L}-90vGwRE1Ym6(#7%wZ6Uf5fobYDVMll!QO@>2j$Jp_&rr{MP3rcGPbpT7&NrJ zx)v6KtD09LlU^#3?h2n8YVTF~S9YKgwomH* z^d!j`@2za3AQKcamjZbv1yMn|=FV|yezUCL!b3W;l;2WXH(6K;T5AaqyQl8D0-wP{ z*cEn0Ov*C5f7B48iKPw$JdR16;(hhS#^Oo`CU4E9ukL0xVd&sKTo)YLp3&7E3s6%> z-uc?U?(csozv{6q?W6k7krk-_L0P^otZGE}-O4eC<&p}KFMBA`x6o2BzqI5ZKsJE! zv0Qu)nhC*f_^jGWay@#oP{?|=nbIN*5J&BJVBh32_o(};h(#|K1EysFw1EIYKxB#> zNhVS@-4lbFj~CYE3mF)?&t1LffeD9Bf; z&V9ElATyMm-eS|Cr?va?(bR;L!NdnF9F!M8tTUj-ktkN7t(G^1RX9ihkWAApT2tHf zAdS5F58V^w2xD}LC|GZj+z?XnO_My1iWC20LbtRyvm9_g^DRKV4$}k}{JrHU+ zS~LY1u&?3pPLOR-mCb)wat}w|Hm|tyKh*U#MN^*jN(M{)Xybdz;?iS5l|I||JQKby zEs{)j?j&J`$1&~uuu>4Gyf+Rl^l9SM!);jASJGJ^>j=5uZXJZzkaSp%`vzReEbslW zn4l-WUz;y-Tx)L8&U&W?bnolYu3KEWs$?>v)Ov)5a z;-dl5Ww$|K0bx$GMfRz!pS_~NT+UQzfa;*>{6`iVX;hDx#;ri5B{uYI<&ryf? zy}-6THAIjvj#Yf4Ti(M=t+%h-+UH%uW~Dl{BPTozBi=Hk)Mv;ckPTVky%X zeYjRtAw54l&+asr$om#yBnX_&4xyf^kkW^tfqWk~TaFI7EerMKUaM3**U z*QyyqN;~ZsM{_K>a2RL4KM>qPrG|8hpSXcba_`NGvieli}gObY$Zf7byppp0itv^tx7ZhVS?#4u;bDz=_8<1UmLjq)3*2- zP}5!S)YA5pKmZ0Sw`sWRh&0UY$UtqF*pzU6O(a%a1u2plAlPGE<#=Oc|}x zd>d`XhFr|Ll+?7pwGnS#Zj?d%!`Bbd8vqTld_2Mb{k~&Qf=%^$MjzAJhc!^|n)B;F z3U@#4c1&3$VW>xy;ltHKQy-fkc1(KFSZFHBGKHK^a=TbfyTc zU`Ku=O?GOiaOZ?{%EbpykH&ckg&$!$=^7qDAQJ>dp8xKn;eFB_C(NmRLcQ%AgJv==klYNUJ8VP$e65_OfdNaylyF zfi2BlQh*_U^qpToH+cr(c+E*Qa>IJr+5zzizHqc-x91J=k*KHc2jJt6SbmJa^VO(x zpBI?k1b_BSj@p4siHwBdL3loM0(A)cc1TCs7;`6zFbMBKYijsQXfGG`Wyvs zU{(`^FRN&;6H<6Ie_u_5DaPcllTKbRyD|-*ZXRG^JjA(}J!kL$_2h{sgw#Fyg`3^? zea3IF??n}W^i7CAH|Tb0R{mrNC`ws!a>_*G;|*;_+#5f?1S2f-*B~9NGS&WPX5+E+6%Q2f4s zLEN372y{S`_V)VS-K$=s#HnJGc{{a36?W=Pan8had^^9sWXJ=D6k(b+S1&I&^ytu( zCp!OU^48vYv$`PUa}XB)n1Sm!tH~4n&q#-=?K?E#snRaaboI1r47%tvtsXabHk#G% z=;J7q;ptK$#W+d1V5f6XST_ZmO6>$R?`)@h_}}7FxKUftsqC&2VbNUUCVrG|uSIlE z9!8osj}DCi56i=ckv_{;wXV@us>Next<{uFI|v=-noIhh2p3ms*P(jxOk`D;PZF(T zu6U*X5#m9=s~QleImgV@l}4zKmP0#{!A_7h+0wB5EHV)uV~WL&>+jU#l4I3|+SpFi zq^as%)6Q*zRd}@}Sd7f6?5Uyo4dxT zgD$sKb6a#Mm;Gj^MyseQn}~9aIEm?R{kfc^?8ljpr;Y9(mdcmLt1?8DjcjflY-$su z;xLjVS+wQ3p(4~@dwr|*IuaHmRu4p29=mbuDATpDT^m^SzoZVM`i=BSeETr)p;l^t z2Fx)NfS(Dzf*WZTh}BV7X=c9sWlHH}44j8<)z{@Y97~=Gc5{O~G%ZR6skS`c%tk0u z0Besbk9z%`iF+;EFSfQs2wAnrBZ1uzrkJBxAz_8HKHO-oz2NFW7q!clHYNl52{{44 z;gHWTtb)@m7}?>w-TPPLW_FwTU&0#}~PSVorbw|zPT z!zr|NuqZRN+H$9QU)3d)x7E)=eIfA{Z;@XmVS~N$fl3x1_AwZo&>j2SF1p6J!3H)0 zvNH=worAvF_2C0u=p?2j2z%SrtJecKmsTw~O|l$@g(W}XrCM)Um#eL;6so{1)uF7B z3|jEi3{+3LZpn&Xx~KSUXZ0*E71u}#=6`Sj9% zem=N3|E{TAv@wb4$IrZ@30_ryBwhw*4iw-e01pAGUREjXal#=gVI45q3q(kQkN5*e za9)_hapkcrdU_O42Sg894nli(TRdScY6wh)r^#r|mMr&iTYzelRR}tkC#mN&2sp=O zt34tl?)-W^e{OHy*wyVzLy!PWii^v@?<$*MYxcWwYj?f5Z&t9OW}6Poq8H;RaoUN$ zNCrCNz7Lp&h$&LI!b@UuA~Mxdmi#JHRi#m?vQ_xSr2}|XC2{RyT`c0}_sAx`f7d@# zpxBRkpQ02j8%_TO2+{6{Wghu175)PdrRlem?Wbvr^ZJKTKO6{jQa4O5Vbe1_uvG}k z$iM0VcP++yT|m?7!^W6FQ_X{NlRE0}@%0Paf=c@SQN#}Gmk4R9rqr}7;4qL8D6wzt zx&f;XaztM2-8`<4YCau@QQJ(FnLv>$aLJU;iqrYjq=A5t3|p zy+32gEbpVD7DsY1LHqjV>mEIY(+FC)^kZV>KkojksOe{nm5!TUemSk5Z? zsKJtw1Q;@Z_^hW0&ZT1gDvZohvQ&*x?dm2;auiJRoJ$B>pPadBCjaNru(4&bzyKan zSizpvqDF0*3;%`XNw=b`C3=DAx2aMaHVm)$~0eD1w7j#?= z?0#BkEHI#N#bXHDA zLd})p`uCa4QY{Z{*)Qx6B~VFtq5|VIl{GI4J?hM=U@xt&EKwvC)b=CdIVlhMtczo4Xbu1OuXJii2GFT-5B)+l@dsu!CuLcYDA0k1cog zb64N(GYu=^MfJMvAxNaYP9M{rCzLFhfF!5{ehGlfT zMbkkKpo5|rXplOoK}mknu_OzuJNi;IBM1V8F$^Nt^%}2n}tZ{(9+)qQ0upx zc|uoCN*X9*oeh5CmJhPJ$TR%i->=KtSDdWHkifE6;051+gR49wLs6!1M=AS4P_JED zO9q{Sm~{%%#!HwWS(_nnU}fw@w2hxxSB+Kz=2iw=(3|I6fc&972Yt9ZEF4REWfZu1NjjIm{fEed2G4OdX z5P&p!WF|ZTWF9WBF%uuHm2CN{!J0}uTma{I#u&yjr8!8@I2MfsgYF$S-GBt`#X&rW z{QiEoAKE|>k)V+y7OkYVq^*$n&LqutoUXRM1>K&aP5twyTrAxiGpjjB_Xl=By|SBG z$2=e|vUZFIavi0G#2qj@x{4Rg*+8LTr93U%vepJ1n_%H?Tb_rm3h^5hibcLX+{g;g z^7D#a`59n^q_>FYDY8z^BZE*0AbKAoMnWJ1$-*!+<=BTHi6v$aL8gr{lA9w!@|xd= z*D~c4zW=~~1Zg*SD6F($gKelM2TcNzIAVL-t47+g1e=w+i|$qDrZTwMYp>;Ym~gUM zM*=HBL*aB!Ux0u(+#Uj7HljbUSYg-CkifS%Vc3kxx1-)UM{sSyJfz%eoAaU3U?jBb zXe2OnicIc~_WpL>dT!9Xd{pF3LOX_m22&#jvK^)(g9hH5*^CkMXHB>h(`%>YHm%}t zf&`ube|63GWCH(63VNpf7G7yBSB-i2F&gU(p4IcUQxg1XBQBTr`dJs8K zLF92#?0f(<_6Ym^@(NY|@z$gb)M5OKf=oCUYZWad>NJ zVY9Bbi~0d8N&p42mCI8ZQV`_VAK-iFam;@KOlAhA|FRav#=!8uUyHK+pS7spT>XLz z^d)vO833Ob8UACHu9tr|#gTT~Y!l@%AR{&;N`xiO+xmOD*NH@?6mE7-OA|66bO9r` zM*6v-ClmqxPRXD}BGw6^7Z$Bvh#FQumLkFI{=S5sIq=XwyOVk3^m6ot79_w4pcy!_ zXufJmALlvjy;E!0%J^Se*7Tg*uR{!vqaRM1$$1eTj*J~83x&0698f)1#uut%y;40L z71D*eIAsOuD_LCNK{6`Y9u<7Q3?C;WAH_)wN|zax`;%oZks@S8irHa8m+{Y$!wvXj zf$rYs3UnD>@M8pKEhBNmQ`W-Eo~n-)(48y<4eH4ZpCZFExO1njImE%>%eNpFQbDr@ z_)7k%_R|L9hc(lcmG}|w39Uhh0&*M(VtO{WWzn1IZ-OY*2mBLT z;gw}X3zA)3RJ!8tSZXDfERQ8<2IO5XH-~7EBCgXQwHO~%h*%N5L8cj{lM}u@ zbstteEacCw=GCSH@KIrus8s&)!`?X9neAoJnzNQswi(T>B1l)rSG~znBShykZX?oz zftn&%W;ao9g84c=7VEX0ZkQrwL=Z)8k(o*RtlQks>s})nOZQTuL{dx)K2$80XQ&sx@y#V^) zR|9ApdVM)x%s(3X!e4WxH7*1Yzd8#+dFN-DCphwZdcRjbTmwURkfdL^F;(VEBgw2y zy*`T< zJ`D*}P~hq|piW{T+O)|ZCDY{cjuxHfio$J3j>lG;@Z$0b5GPoQQxXQ^aB_4811 zGQx(_>KEFf9)A5iWX9@h_4RZ9jy? ze;Z>kOcJ2^k%|~$MA6LA*did#KuzuOlRy!KC2=I1KYnq6z_Qo)LxGGX*g{um-Cjvu5;}Pim z1+lB~oF;54=7A$yQd3lph~`G{E7#A3_$tlXYlcKZP=qg)ttH97UKw*R zIYDP1S(9yr2Z98d0}txvNPq@g0A;E}1Mwp1s;&?P;sXHjl3|QBaw0Gd2-J6^OxZIs z!3;?Pu1JhpAp^b()3lXg4^wMtEC%_oMbSsoM0A#M?xKiN8G%#IWWJGV68)@wL4~50 z^Rbd)>u&s&M(d;lFG!>=Xny`G4}N`P{iv$mV=zTfq$@&6F?V(q!RhSJy0jJpHLMAL ztGhq;HiOgNJ=2u!E}4!FgqnO%wF)H)UtyVev9)e5$X++hEnWo-n)7Zl1fQL?66YNU z-V>B&&8Nzrc&~V!7?0un1;JEq5$(FnA;%8H4g_vnbqROXjNc7fkXgi@9rzD8grnE8;90hH|+m z-R*$R@^;2Cq!LNL-1Ww}{UJ+T;~(|Hk0c~9%=sO6cik+OztX7(S1s&!*m}+DQM{$7 zFrhWf<{MBYgkDB^TdIHcoWP~LX1v~lmaLolitYf;XIh!wQYsx-D?6X_-n)zTp^YE3 zwu+s%QjY-{uBhr>!HQV~Ld`ief0;;EXk-w^6fpy=Zo$Ar_~~`S7l-+kW@Fx(MkV?g z66rYQIeUIq+PbvUTL{2d}{|-WG zxSpg3V?f*2hUTgNb_;zi)NuM}F|0;);%o6MB8|m0ZTH^dQV2c}nW?o#Ho*YyoXi?z z>8Fih>WoF}BLJ*huH7V+$gGz-l4;n?viup9V|%vV=-jtnD`6j})8QfH2SZHbSsNhJdHXfp?_uM3iannx2y zBO*4G(La77e@}!8^b>d5UdZlY)`%Ke`@Kb=l{4-p^hBVNgRYb)XR*0q_}!Xfryomt zVqZQ!JS!-b28-t_svRQ_-p>G~1{UyAO%4H!_j`v##sO(;#OtMxEo1M~)73=G{sp{X znDTl9zlnU4$KKNRlN#p)zRndns8wUpLd&yNvc3>?J_nQ|F=V->X~_B&`FZy6@?`e> zhEotGasu!t;rD{Z0F$Aoa#LsE)#AMeVw__aZ~l62_C+{{S=mKZE1~Zyd!#^?MEj?L z5DD>o*a@%M-RJy(Sx(Q&y2=DS;ES1s2F-asl8lA6L&n(_l@&0f$ zzU(@32U=V|bNaqvMucN5qA?Tz8H=MZZz(Wt%L@z#^f#7)P!Hr%2Jp^Q(70zjz=5h* z?H>awX1(i3gTFn`cy4>Yz%i)~t4CE>B-9{~A5+8v;pq(W;eq1{w zJnXK!$WchlXiRXon9gYiO)Vzc944BM8XfKnXnPl3YzjC5rtQ}iTre2Rd;p*QrGrC3 zLfHSjlLs;iz7!kA$9ubY0%_`QbI>^aU;}8n-z&?^(0T{Gb+UM;L@eCcdhJ3%zF^zg z{OrTq4N=TVF9awRS=u-Tsh!1ftFDGBe$G@2 zjFb?z(*rIi2^j6-e?f^hyv-K}s2;0F@<5&HOFhVsxyt(Cb3M~mb0+3X@49i#ZrUm-m`GMUOZv@jDbW%wMpfrtfBN)T(P6757~j z%8acixQ_?v&ZF_#8M>+OG*(|c(YYx!$@Fi_mXOxs1(smKb-}YP0m-ZFgFpqx;jACF z8TKr21a2AmYysd33H5FfaQ`F(m#RSlmMh4IjoErw3~Or)YZ8f<@i2SDGLsnqY4rPt z#12{r;(2z5j;?Oj-$@c8gL3r?D9F-!Nui3b%-Ma;>ks(I{SNZKradwIFVjgmng2fv z`yBu4(Z`Iotvz-J;_t2gK->+uvQNeVGy=|k^jvs;+MtBa^9dG8RJUB{q!LvP-Ner) z-w-M&XR3}kwKgY+UeuKCES!0+r`dQD8@Xw63nw*pP2;S{NljXq;xNg-VvZv}yD`dE2QWHp(m8jz~TzO|5ri1~l632*4-qaQ=;C@@}WF z!sf!krxQ)3TAtHv<=LzlPMpv2aSrnZBG1($I`=!{6CpbHV5dk^Hi)}_5n=YPsf~vw z3le~^YP*~tHgR<55XcChJ`j%tqu~mA2`TcTyt@>6nzvp`CjTNXG!v+m1^o)`bONx7 zB19w=n?+@|WpPYmt0{zWo&~2;O>nSB=u*rHi8wQYYm8!xC+& z4^;Z?FP^9bsF}dE_{N(w68a07s@ZzM?WGnaG?rro8#^sNkGVzMeCV(p_!yV33< z*^(s<;dVJ>`V~c?h#U}>;!9ixDkJ_(bd(rV=Fo;FL|x9AHWs5SB4g*#RUT>VBP|+` zr=S=b;*m}fjHPoxBuj86cd8p%jZhJox*9PUD`d`*pJt4pV2HbI*ftLAa$cBh2=6O$tD+L8lDg1CP;)P zX`6XZr4R<)QWGDns=IvH(SY@am~2OBvHwY=kMJVLh=0rAq%hX-KsFq^oi%&xq6gZN z3!10j9*;yP4XmWa{lm(ZEo*u;xp({MrS0>_l>c*PdUs^&vpc<12S#DIlLNEQRIKtF z>2e7(p(Cfo6U=rUtsHu4CWYZvrq?SU&}M!2bYoQxc76%Z<7=CF?(Fz2BV^7_o$^l` zy83uLDo()1Kbx`W#+WO8G}igmn?Akq;rJ=~JP1er-jY{oloWq>h;Q~lf))~qus&4d z++*oueH!ujEP&w3gYT0#^77e|5$zP^x2)IDP|Ml>yBE#bS7Wfj<-`%h$gg2D(ihvvaX{{=!oQ=bWn?EWOAkbDtS z0_5BHAs_|VZ2>IneH~g@l!BUOZ_l0+v&Sx%hozgNU*50$*sgSUS3huiFW|)N4$+ut z){Xc|ON%^2Z#wZ=rs+J_{M2J#J35GKn%j9KkOPRtRoi#s7+VUW?ZwtubqkD?CPDX< zBG6}D`0U=VUnV=R;s?5#g(c!f+9p24M-i6Xd{;L4!lUu_ja!bVA7{aG=koo9e}0pNmS2jt2$h9nt>04l|Z);Nb(8P*V(-6HMGb}?ef%TgRD z7}`PxP6vz_R3*d`5n3lWEQ(Mb;_s>sUG@raM?poTiEbVH>sw}M6|zrobcC;^<&PQG z27HB!-xbtYPq+zBo823eHt&O_XXl^q;N^1|6W{r9if$Wm;m^JPx$v7R^X~F5chDIU zDF3(44nvS=0Su1X4q|k}cw(bsuXuAHwOh`%zLvXbaCtSBqpQYrmb8@U$uDxQM^Aq9?veuq zOKy~4&MF$zvJ1E6*9%lzty>Y|A`=V2MAYOLF;UZf>;m(Zz6T?olQ)eJQYJfR0~=kF z6PPFfLQ@MuDr(qI05tlD_$bccb0ds0v^uPbh(er_z0dQxq!zi`>*d=^)`3v8Qx3kp z-JJL9%8kObo!2{HhXQQhR1$lTSv>?7t+HK6 z`Qn@-%oD|7f&nd@AApy87v&{!3~g7%Q&$>|Cc#l%SWWPF;VcpYSCQk0rxDKJDNqLm^$grqk!at@Q z%m9yVnkOCAP_P^?!}b4A_7B~{C`%ItxNY0EZQI7XZQHhO+qP}nwr#7w)~L_m_CKgW zu2oM|WkjSFAUIMI;>;4P3Gr#G1b0(=y(Lo2aN+N{rusZ9gHK|zJz0q znSy$oiJIlC+~m}OI`QirJ-2(y0(@V2$5_#!t$rxZjI@{P7r1q3Vc2X)%#v`c>o|jQ zk$hcygje%DHjg)!ojN-4Xlgx;*bqh=GTN~PMxZ582y zJ$itnx~lN8BN*EK3wOpxE8N0I6AB4w9}R&=jrU`d5Yw z1xa3PPq4@69{>fJCUfwGr0l9SGQyLnBaaLE4CwgystV)$>8mZp%};+O-O*clzo(}+ z&Rmn7kC@>YECctv%vXmaz^pSHr2zr_mQvlO@|h!izTuK?#KCD}R>s<^ZJ>e1zHj_^ zB!6`AQg~OZJue718qlS=&VvaabU2tf1J~tunCYL!6_L#lK;gJqB_dD^XAl;7N%a$2 zX7&V2ZO87?g7N1IfYfC84ky{3ZR-_&a!08K>Gi;9Cf$pL5+6KX5pB1PxxN0#@k}Sa ziG-&dcaL%PDpVanw<3^sSu@<@hI;Ie9O441m#;Rv%BwQq$24A#^t_+ycr7Gh$+ADK z5vvO%*jnafMr_`hdbj0=KKIR{tL>JRVzwjZxzok-k0%lNpJO&cdnV{%esz7(Zs+cD zUt3n+oFFd=qGS9Tn2mQBD%>!OGKZ4G3Sf&8WgiFaS#HTWBJ*2X>ASZl41+goc(;c& zSC7?PlOI@4TQ>B#s~?R-3VfMVkaEdD$E|xQ6mrMng*9B$*|@}bbjyxzJ5C&!^z!(ysAC9i_JsK{86edKX zYcg@JDA}B%*-)hM6q|Eo;`P+%5tS4a@#-WYch$)_HzF}ScVVHm*zAx(EHl^8^MrJN z=wbH?B_5Q;lM!6z|D85I1Tp>sTRzVwmD<&@X}4^#+u@C19lMDiwLbj# zhV03(vc&>O#5>0J?T1hj`E&t66??!Nl1qKoM(MRryxl_U|7y z7K+%JjRx-_O@I+L-Z`n5NU{G%G5XKYn46zwp)Sx+LYSwZ)YUA@r?c@ZsGSK}`aXdz z9cCQlwVqmPzff|iU;t3eA`Qp#vrXP)XzT0vC3H*|ScEP?vh)B_|Fr}~mZ$pltBDK7 zJ~;?Ert~6Sw@Vt{evZ3}MW^-Sdb^I=xJFf+M*+5GBa)~-0&mUs(isR5?Hd_8Jqh4` z?ntbkTpM0jrMa|wK51xSaLD44TQ&WCy|g2E0~zl>U0gK$1g#A(?U4%GXQIY%$ra)* zLToQzDrj$i^321cefBYV5IbP)Ru)?Yg}BWD)#sdX1oT&(D+DcAwmf!53I=lu;zT3@ z$wmZop+o^)MCl}yV|2z8V-d|k6y&U}e-QvYfZ~N56tkEJlw+ph^Uw zcKEX#ryQj-MGxY;c8%l89RwKm+Bmn*a{G2%{0TS1MDBD0p8CTzdY!iBFS&d%#Gq|2 zb+ZHk$&cG{7ER7)j-S`kZN9ZN7DJ1q^i@V~LSy|&`vs3xrL%F)9b29ik4_rLWlK?7{5h7?tweS&0jswW(DI|hz2TPe>5(S&Es^bl zzCq$Ui}}{rSlP}m>wG);Yp~#Zk=$m*omSfc2|@lDFVF?oKY@Z{0@5{Ik=sJ&5IOu& z$N4)!6MzF{sNC`zg{MNU$Av3j+!Gt4iIjw8g93ta!)MjY8-{a?a$vCwmGEpV{t1Lf z47DsZUS7Emv0AS-Cs0#D!w6Jhy3xANqCkTN>7M0Xq%v(pGMJ&s(Ipx}{yIg1R1M() zblyK;*=aeuI~^w;`t_r{<$O3!)%$p7G?8YSAqa7s3Icxb%`JdChj_{OX3yymt1txa z4ZIiSAh2tDy2$4(^04Qd8ub8a0lSB+BXy0?VV}~zm(R%`qnJ}bo-tC*qr=B)cG^3; z%ecn~w{YGPBu9^4(?t7FRaM!K{L_~w)c<GXk1iFbUmR%1bQQuj ze9$+)R(tqHhf~JG($y>Y7CnLuRCky%(Ym@VE(?bhR<=e2{w=NEep=bc+#HLnZ6yPi ziHyDgb*VuaU4q*=X%M3jSCrkfJKY({x073KzmX6B!v1-{A{to-6a)S&qk7k*cvsq} zAeA3`bd?9kH<9~9ELR6h75pP9DnPjBz;%p#<_L|x z9Qma2>3{2K?@tWBnueiZFGt0reSd&Crs6J!lJ8L9#-W%EqEnPc8sBdf5dlJ>`iLaZ z+(#M&BEkUym@(4TRXQc_H(DA3LG?Tk>oS4FIF(&(1a_A5-UudQir3XtdRB_+90Fp9 z&B1`xjAC{aNCi7S$kW&oNGR+1qBX&Vh6%?h9Y!`O&_h1`#qX2La~Yy0I?KHWkWE^*Kfe zsTwyJ{^F*0Z9|Ql&SFS}RL9ML#Ld9;?y%|ekxy+?fBD(hqF1ejD)7=FMvElyS=5J; z)>CpY>bWFJQuLd}Yj$Pi_&ex|;}eD&Bq_^)F8oLZpUGzZJTzpg*V?*emd1#=d3GF; zrc^#aV!Z^`Pz951;OqWnJ*l?jsbjI3esa|w))}qUA*`5-Ykd)an&M@xUEI#0iD6jo z2x}T>XLF_jmviR4=mCa*(ADMKY{rto_(>)3fFjH9kOP|g$pS_$Kw!UP32v4Zw*45o z1h!NI%?TAAP3~qmjP$OPRRg(2FghHquSO#-P&x~~baA!JDh@=*rRIaoV>d7&q*flm zmBrPsL+mObPY_AG!d4&Sk0V}d1^NNWp}|)dC`d?hb$oL;+s+=6G z|0~z@{FAmjZb$5$t2^JS1Y{>pOr(IV57QxUg0}`6C=Mc!K!epZ+!9(g6jzEn`u

eDytOx9wL;IU=MnnQJ5aGY2$$K7f!Am)7YezjOcdZY@>omY6(Q?Pj zjBPc6|8hZd#B$t-)3Fzkp;|y05;b2wy-w;s>>w{Ytlxh_p9Bi=D*E20F@pQ?SFEGT;HH_)DY9E}u+rdpnCTt1t z(#w!(ucfKJCwm3B`8j^eLt`K91AFDW!0qucUbj}aw8LZVjUu?z?|EJyxI{g~hWo9B~>Y72`k>q;@+=8Z@D zg!*@r&=)gmVMQV%{>9&idgKZ+c;rW6MM3aI_5Ie6(BLOj@Spr3aFR&q&iG#ONVa{X zo3J>&k@N~SAnO9dPol>ASKaQ9>58iG$qcU+frBIhaCoY{$(GEW8B1R!gI!rcI?pep z26+BR+QSmJJgXzjRPCHO<#26lPNSD#NrPeV3_>EypS#t~m;hS~D>?`kB~|6H0VM8&7I;EP1yg_L74@IJ`S*r9CwN?yV4-#;5{zoc^*gEXLIzeQDL zYchm&wCGU-C;fR=Asna96NmgRhpYpZ@1F3GItw?xT zEjn~Y{_(AbbOY-JE8NV%GO-=rG0fPb+^NcuLvCe}k6#mRw=5i{Y-g~uopi99(uerX zANazs*f%PkPneWjaVb?mp;@D8ez1K0g|%nHU~6nXzQ*2I6V%n55a=oLE23rTom%jv z#>afc*!VvH-pA!}3iHL?-R!IYxjfzmKjEo0sY0zUg-3G#)3geYEdQq!O3f=2@&IAJ zKpty{rjav;_B2*7O=ZGR42FFWyMf1enB0Orx++j6%UDSfV>-hpga7WlICxKK^ z%a%-)@wu78U>VuI;EDJvXHl>g1HDZLCAnP@1P>7wT>2wl7;@wzOIwXguZ@5=?|zD^ zyYBD{@qk|zYFvu}_*)GJ?x9TF?PiF2dsw$kY z#1Oyz(HLh*=a06j>*A~%NY;e6;laM7%|0$ok`tEsr^lE%0woMgp79rI`!eIwcZ<1= z0%O=`84pieKsT{Wm_z$*bA7LA%Tiokaq{Xk!wLE&JbiKD(-JB%{@6=Wy@`u?q7EJ3 z+Y`V^-OA%4NSj+%n*d*u+QGp-VziLCUKrZet|h$N9y#(tG_uTeLBZx_(h=u*Elq5? z!<-y&Of#@X;g;em!JyLtd7!X za&(~!;R35O5gG~{bfuCQeu`Y({U6mRJcGSyL^OkXvCUsk**!1zBlI7RgIJ3^^M=`7 ze<WaHJOp-{hb z48O>9mEOaxl3DAO7~wkBD2G4C;b@*GRspVuuLYi;%!iHPS^88O`v3TFs==;KtxqI^ zG@t#L8eeAP=thm(#3l>deC3JE29dRu6+L->E)fZh{}mp)o=0pqiP*+_9t@>e`%JRH zfR_H>)4t_q3mR zC2b!LZ*4OW7ZzxOWc?`@WlM>Mn)YtL`Qxb!cqx5eaHYFiv^m;EHSoh@+5;$bB*EWS zt>^Ta+@xb-j03mEWDjalzdC77A065Z8ZyGmb9->I)MzIc`6*_}PW4d7S`dL(w*WzQ zzcxMRF`k`_LFzFl{prmb*IDPaZn(b#7!22zcJVd(bNk;W0yz;o$b3oU?IHjHJ<`5| zoY!(1{T$w-w#)tU_Sfp)ZB(=XSV+3+ge0?wb}{&gjM6hCi}zWV_V%CrMe$?->Kbx(u0!fC zCCAWbXy;Zr)*y8Qxf?(-r|b$mmwUS|!#DbX>uSn3PGO(9_Fh4=YvVeKEOhaO8D1IU zqc3c8#f>~EakPY;^UjddgP|yOTxYVSW{|oM0(jXIz=rR7IF?@tcd6cmdQfI8K9#!N zZ-hq5Ls}$r0UKpbl_Od6-`fkVd2EO$k51tb{m8}y-PS=oJ4jCPM^ts=gVG+}12mV^ z2jZjBk&;J;I3g^z8(|C4@rbV)TQWrHG!kya*FU0m2Nz{*Oa!c^wiEJv0i&~AU75Rc z?84?ksIL2T5yrK9eGIuJKCgE;fKrkjo(IGwAqbi8TUcdY;Ut*q zg3^E=|72j(AM|7l;7fzWrQKFSKZ~)6(k;XXcScN>bvgn{@$B)wM^_yo>O7p(nXbkC zZ%%u^PEz&6amCxtAsBIBV~>wM7RVcp(l9b750E6U?fe-z23E&6Ps-Z8<{6QvAUFK<-%Hf&zK^!{i?NsFp*UEw2v=-1WiA#%kZ|L)EK8@xN8~gczcjBt&(6 zcdkYGAb68t=H+~G)hpD+D%z&DhNnNNA=f;%`Qs1&uQTTpd(O4rsRu7qjWdB$z0%#= zyddb9W^Y+`Q;;!@k!T0&N0L1*sH(;!w<-|-)MBXQ@w%zFopj-qONhoXWy#T`Na1A? zN<4>|=f)QN5+LCG>GR`CFml`Pa>oOGzNpT<5oRjeLtD#BVOL-1w28CZqq8(eRy`2g zv1L)HhK`{p;80o4o76zb^#xrZY-m;mRP6@Bc+U$gEstcloKhC$ORflD7i$BE7GA!c zuOy5f3*PKkq0-@(;_JvG_ex$YB(##qaUT}lR!-Lti!C zx_s%NFTlBMOJnxiR2N^6;7;;Fj2>;0RXu6^(Dd#l&ZU&`JoGx<^d{vK^k#yc$Zsy`pIPK=?Jld|5kc|TU#5@&q$ zaUq+-Tq5&(sAXRl@5H;i;Qm6bN5UPim>$(g+ug4bxm(k?J34U|0>01}p1TiUcgT2h zez%Nme0}ywVG7<5n&!o6aixF`{*4Ml%F1JAStOxS5+Wz6OOiQR)Rt3(o@qlE~jYbtArpohO`}jUs$b3J5g~Krjp|G zO^&F4m;~}AAhGhZoj3j(L}YN*vi^L9>r1_igen!%O?LH{s_Qv=ib7N8GntnKtGIC; zPw}f+Modn%RDgxpebaz2`nM|gP5E!ZD%T85=wsw*2(Bp*w_}C8!vkq@ru{xfq@cW^U^KK_!8~2^T^Tz(wNwH$e?}rl%7GZOEKx zBb}vs4O-jqEzD2Cb2^7@)H21h_P6H|LvH;NEC#TxgXOaN>+(J=hUOVhUmC4nj$j~h zamHiq;slW6E+wju!SsE!cW!i{t^WJLt)`uWdKA{Ltr`^BM?$CD|CFl3`QD`KI{T9} zzc+DIyhN{Ucp-ZMCyR>Xp(p(2eYn|4$o~uPn{l+{|qLDr=A1gz&h3Rb|M^ecTRo@&2Wj7~Mi~q6HzZ_?La#42wnM1uQ0J}Z zjzo{+*45NRsTU|S?4M}jBPK{!yG7pz>6oH|N1Drwz^hcDwvb6{u{5Hz*WalXExXr)M>M2urtJC2)U?Px4@WLQ!SnkRTz-KbBf4_ibC~I z{#mjvRE@9vMYx*gfAWIjF8Y}mVep5dI|P*S8Nn$F~?jA+i}#{5x@;(d74H*``tCzRI2-e=2Ro zr~6lgvBAp|1;Je^q0M>=k98mN?m@2Zq&Ua$6M@I2jufx|n`k_tN)YN}6~1Qn4!Yj3 zvn#gvf5!H_eN>iyEnde>8X4F4|K;>x7}n`nzPG3R|6_Wn7lCxno|!P zzN0x^k7%6;aD9ne+b6X#UBvn8Xm-9G(gH1Uz7UwiU*8XOxoCDGYvqS7oLNIBOyO^k7B6CK$MJY zzg%{Ntx4lc@pz%h$s$@}bWOdM162;wbMa+CRCPRa@#nWGnF|(if?1D>e`Vge>`Iz6 ze#~|(o5j=Eym4;OS0BvZ_bLt<9t|U4*y=PTSGAJ&1NVM$;FHyE;;ORJPIb4k7?hnD z65}y7!(%xFr9r=;xhAu?zplWbuw@m&2Xz~P^M%fuhL-a9EY7K1v((4$b>aHUS7*@C(7AMjk@wXv0-$A!8x24oB0*Px7U6HOCu#qag3 zlWfIv^#=ouo&S*3=fSp#P%eA5`YpD%CjSsExx^m+S&J#4k|2-x60V>Ii??xN7^tts z^4v7`eOYj(YKHNpw1t6x@J4?SAUp7u5ON3EGlov>>>nvn5}j=|+M+$p@9^pD#F|D zt<%u&<8DU(nn{(v?G4T+K4&BV*@d~pU-a{Di>}iLUVQw5YzEHUASu5=^be7prks$~ zN1!0t*bS2R38{>foJCIlrz<)1^v|I22YttHBJiCK5jez70gnAgCc5B!wm&enzxEB= z6&qe|&T3cfN;FS$&#p}POf9{VTthuS%-!2c@tvoJHd(dNEb?FokCG=~pk zOYUffB3g4i274jPHO#hGnoEts2U<=+@=tx@ezb&$M_sMTvc&Z(wxSW|PzE-m!m^8J~G`-=k`5&dm4k<&vs6}x&g^Rz6iWrgVSSBhO zFMX|i7v@d8D}0X2sY!S9%H{CKYrBxCYX*iJ3hC6t06ftkt_BHmwIJUdR`d!Lww)?9 zjzad|BdsFky@J&$>!e5K7EUkv2Jk49bUbeUR+xzz$OAh>@Xevke{x3~(!X$fI(OE6 z8dN2st4yb5pCwq3zQZc8UiFA;#`$m-vC8>{`q$!?08TQ-p{C4f)!AD)hI;fXv}(=S zGEGs2)ByVG+b{ZTxpRVXh7X$!8gGW_C*MLBNS?HGRz!+C$SFNAKXhrR!y+7BUQg5| zef*;N>}z3R(3Op#Q~yEAo=K2%Kh-aPL|ni=&6Y8;{Xy!Ns4V5r)*nf#Z=`c>axh;^ zF5F8O5{X8wMTM{>RK@P{SazKC_Ma_tE1 zR3bLewy0+ojB$=e7l^5|u@=KL(cNp6UIx+IlV9zMst9SmTGCVdQZF`e9QLguTm4%Y z6-!P&C~Se$WRef8E?>i5@MXJ6WX3`k;AF`kTg^bK2Qs+`ashqz_SZm*-14ZvvZ~l5 zedY*W>QcAV$V;3&rU<^kcU@#OSYYQ!5K+RBeWBeuZlf87c&GVr5z{+lL^meMz#R#7 zFPrUJ%ntvh)@>j$n(TD){AYGQsU@WeCEq zvV;>;b0f2VMwkav<9F9}Sb6-1xN~EZXECT(($w#N_-f|gggw>Wx<~$~y4ok|i~RV} zsLOI_CPoZM!Qs;uehSt3nwGXZo|v=vcYb|{D(;(J7Ds6%l#WOsaVd1yAk0xYE-5rK zn6g@7RYBQ-jjiPadvY0;y_ZYm;UDjKI{T#Q(6u?Q-nZGQ6I%OipO2OiiQo#UZ(?Ls zkfK|IhWt^$ucR?_he<>;8f z5Pc)#G8@fnT-s-JK-98tvu_gN;c?Dh2DATpM&>PKQx0Q!Gvpw*UT#R253jMuqD^sb9zsffj%wz}LO7WO73~jTtV;Ly>6;mL}Y99`U zgHMLjuSB!ItItM<4Y?^Q3T9#Ys8S7I-L=j+acx^XALKTURC zF?y|9b&g7#Pwclja0e>_!tSQT`nxTGjC3*!-^RdtBsKv@Y2l4)|4>SFzfAMak=PHt z+b%)5bDbb(BXv!n$D@hXPEb6j~a*Q^TpWg)C9q3uhpn27`&)Q!tVf^Z}7hqRb zgTMO0|4nXRFm7^nqmJR%kyxcNN}Ovd82Utuew3B zCb~TgQYw5E{nW-{MLbBwsdua;oz1fHl%A#sO0>Pi{Fk=u?yFB})Cobba)D!vL&`Df z%G6w!Dif%Q)L}y3NW{SmR@Rh@?_q1>8z0u`vLX@^6%K|Nt!z)NZe1Zqy`OPY56WgE zP=|m4_Rj}wpI2`DYD=P7Qz|1GeySH0@S$xHy%xk!8%y-IX$vB*w)vXX$SV$ZBhS~b z@m$-!PkOiT8Ks8DMbT0l#&|iZ`aV!7<`1r5zK*BG=uR*oU-58)rt}rBW9Fi}4cZPL z5~DS3AidcpLyPaTzfDPIbC%9Zme37Oe<4(iERwYAH=p}{F*l5t22p&EcS-9uAjOHf zCFvXfKR#UUYh)%A_-xPpBzVNQ)8#$8*|p1oX2Ww7yY-TXa9`=wmDz+=0y-e(VLJeI z{(#K(xZ}LM>U!JVql8&AuV3ZWrJ0d+YK)Zrt*kNA@Y@%T4H%y&V`x8T)}cH}k+$us zMv>t95LgRaOK72MP?H^1URXg7)I1`uw*yW($wNuqYiVcu)^jHM)?r!px`?>j6{Th? z1>IV=`eP5DW+UYM;&F)1ZsW9sVme$;2&cPNx<*onQ)ZRs9XcFcWp zs0G^4b%COKcP@M8Wi`?bCD9YvMp-4hl}xm8ZZpy$JA13KDbxZ)qmpfQ^@v8s(mMnZ zl?=di)LKTJ{G5nN*((|^kV$yAz}1nNArf!&cP`a7`HNcJ#z!^?mVKkug7EnklL_sKPZ z<0RqkLlJ=rC>x{8mqAD4Pv@*%e(ehjG}!ItXGv?^O^MSVn)OoMMGUHak9ulK618r9 zUaHLD_U%^|YqH(yOsmo=lWDm%**k?Cq)ZF|Cdlv9M2v$7T}|w{p)EotV<#F&+biUZ zU@Fq@&(DL19bh{z6se4mOhHcWBLAyPaQ~owCEmq1E-rydx63e!6yLxmB2PflB)-f~ z#Dqg4ULr}lZa4vtmYBi=2GiptF^pu>fVmWX*4k0O|^oUQzf8P9LReSl%LNkiV^A*#P6$%%~#+d@!oAiai8ceY$ znwvW%CuQ5DrK^_I;;3#P(Qh)IBFnIP$rD@2^}X3W{)9tcXGQ=NdCvV(5NMhRvq|xoJcVOm)gVrAy=+m z^jG6@GJ+IYHBQ`*ODtrnomOj#D*w+GyocV3P-S~b20rH25LefB;D&2%&|$TZ^f|X# zD6QPR!A?O4zcuq89l>3)tTfpq80&~xdh6N$Eg35CCO*)3$jC`rhl7FFK0|c*^;E3X z@RCXzEvH%~%afRe`+c=Sal2D#g^r4U&{jV`5e0_XA~Ts>m&z6QGVI&-r_!xA%8V-< z1F@b;+%EJ1t&QD`7GhhDHX>V&hgRyeNR~xaL0#b3OiuKNukRq&AbkjUzM7ZIF}-CQ zeUZqk_s0wD+kWW#*Mbs&f9SA5m2)P}bg^%41h1wbg{|LvJMX$TXNX%iYFaPPV)Y?E zT0Odm1t)2UqRklHkNt`6r{!G$M#LAto#p=J?UVX)9~!zo+S%pGJ-HsOmd8H{MI<0n z=nXdunR$pjnHS?t#22t=27j2)))SxdQtxB`C~d~DR`yfkRP~@s?4c%T~?ZK8&bU2yVMHEKwWMsz9Y+ zVY+&I!5O$`q>!dubyVL-4|^w;F7UnNvuO5YDK(zIeI)0j?}P!%+&|~s>ZzXr%4vP< zDJZu>YVXV>Bg5o}du#D}tqm9UdDj;mC@7FaJVx`gXU%qp@7*RTRYh5s)VEK)xJ<&d z*wZV?Wm#|00TgCow!!o0inudp|Jp%R$1;KoFOK-S_-9&L>k$7Iz9`&DRt2eJ3C5K4DpAyg8gJHCv#`Y}lB%eRo1q_^be+{DQ@(us)0cv<=nv9t1CE9P_C?mp=jbVwej+*<`)A*$4- z3vO8+K@zgSh2IC0zUIIRiV?336R@9T#k{QNr8~Zom{Lx*Og>uzfu~yKC>z(#2Qf*4 zUnMw$%G%_-hBjmFL9yaSy)Jg!3HmZXg9IaAieobY&w#PPn#AR$TW+d$2}iTVzYZsl zt?`DmE%nDg;scD90ingmV~Cu5q%Vi(BdkLHeQoCC-#p|+E5jr(_;143li;VFT`LIq zdIm|`2%XO7j>9JCIaKfTvfX?XIbxhDpu9b1>GEwogdJu4x9F+Rvw zk{Bh9z>cP`peqY5{5jEMp6k^V6u6|io*6I80s9-ih*|0D44M}+_dv-;B;;usj*Pwo ziYHlO1kpMoVC!C)NYDe9ow$B7W`cP z9}*l1ul@L3e&auj(Nog(2JCtg`Pt<^W%iNwkI2kxq+c%5>P}K}3;sMDz#$m&ehN9c z4Mc?9BbQM&pG&OudbJ`a_mPt=$aY?|?nEJ^(uOor@IOW2T;ruk0v`m|*a^_`8fo`j z35HDMMW!JEzwb#(<>2s1RPRc0WPnpC680SdAE$d#rhhYE&~NKJ@A^+x(0L^k(Io9J zMaBzsOQ(D?YIk!Hw9fPL{om5(?a*pVnid0m(vIBYzk>_ggqiO?6fw?jhZTn~q8*x2 zbBf$o7rHGTd)A14jm=ruY~$^ZGAx!L;9}g4r1(6rud5ZuIDpCHPKr)G`(m`IFqH21 z5}4e%;#vD_KH4+&z1qaidBgTd#Q(ESEqFlgHalaw>II}kaNC0_y6b4+t;QVJGqC4O z+jfd8U6TGpn+fD@P@a$a`ZBqK8NE%tZh`+(wq+i-wa6wCYePg&zjoVmi#bx|@3JXB zEf1+_Z8vsQr_`OqoF=|p)evi-9kX;`Q?8zwyY?{;XL7yux*ZfH^vS8u#4i8ocAt!l z4EeJl_}hEQS6`Qc81YlL4r(~NhGB~K_C-Iz>;gYYB%+u-;@jzR*z+ds#cH%CUz_-P z&)T}%8vb6iH_}|&A*hIG_sBh4q z_V%Y83pxs49j5ytZFAM2`KtSAjc7=^_4Oy;lS(pnqgn*FCgL@r?cjB;* zxRl%iJ4Kn|1`XfPhcUdCZa#X$o(QQfny9Rn$lV>6C_kE~+-3=xezNd(?}&U$x|x+r zJY~xc^QitS!as_>dbq`7>d5I*uvMab`Uvmf6$2lv|0`opKlx-c-+A!aov0`r+m@M$d)s&T%%W=6Dz^KNhhIgcJb#=n{i|# zrT#FX<7fCpm!61$(VFhMu{?IVl%om#kHE$m4^fY-2qf;TequGc!uz*2BFxUHL5tdp z#+5#!Oh-<%iGq`AZ1R8gF<{8fhribupM)f9>Sm{0Z#S7?xcj=rSt$0{%_R8*T$79G zgl-hrY#SDN;SnI`(>f{w6(4W+I+w-{vLBhHB1YmXB2{vXD=U&UoabjFc7nf>YJa|7 z#--})q|=wJ`N5R%6LNGa{EBnf@{S5r)uA{|?l{c_I^E zdbk!fedjWlMqD?+x$_m&(tUU##L_Aw#A<)r}>S`~y@s&Uw&4aC4FwtG>*QmtlU_#)=dCk1rp4@cZyYj0JZ*J@t3Fqs%0%g$%m(i*nC5GJ*m&U_|-6 zar}Ya_`<1Z<8<8LmtvG0-+74ZwzDTmB?ZTNT9UoHdzlMADC!6*{ihM6)j6iuIX-XG z>fUmitg)Jimxgs^msMzj7I3)ib}^-d;Z+A^j)2=Yu(4#RHj&!5c^c`~>HbkzIcJ0v zrdE?ZBc2vb*eNOVOA|s?4HF;6G(!m{Gtvcebk{{C#m^HoXwH`VphO*p+YaGey}L~# zk5|Kv^UCRFhoqzt_UDK3H~QqO#QZ~>r2=i{cKGS1N&c`Y*5xgqD00q4I?_r*vlji^ z!2uBd)kfI~G1JNLBYH>lm)8jVubWCr1`V4+-4x-d6W1kz41~=Xf$eguot7124tlxO=Qj8=TT>g3GQOjWx(>`6|S zO0-jK{&VYlzy%eiOt%SA*BVr9bDrcNJLKU(qSH`B6AO%|x4aCi0;0~WZPER0-jUXm zbgl4B!t`#}d=zf>(=0yNf&_?DxQmP6rKzYKvJX4gtBS;ONKa21b!rG3>ER@!?uir5_5{|B+bOKbjqSc z7EqFCO9~jn!02Mx?Pf$EXF_bAQM;3(xNe>*{&F}`P1rF8JLCtc=1t)FEpS6}=xR?* zfgx~MAou|o-@~=d(eIkheNY_n0%kU-ZOx1=(Kn0o$ zX7E=rhOHj{nd9(rVN-3o-=(isIu}soVARcywgwV->Urw}NtHF9MylqB%c@^m;Cz99 zGln$U#w&5EIT?yR85Q%_YJ46SeQOH}AHf+qy1^J<2(sf2JiL_$f8}_saZb>wSCPq}Kl*WdTwwI#wLN?k2j zJq3eO9UvvYESGr)n@&Cf=@P5TbTMRuk}hQF?eXL*K_*DYDdT`Clv4^eU%Tlo z%C}!Vn%*&3J6!C}>Bq0E)uG{G9L4#pm%V(Z1Hf`wzmbyA_gAl}vn|6F+62bPp+%;&P zlx_VZh&7+`;g#EWgBs%xQ}jty{=bL|uiln2B1*}BZ#!aECOizMHyb_#*Itlylso2W zY4L9!CqvQG`;M*%i8e7f6K%sQsjI1}L%UuNZ{4%=Phvxbyf(en#ehTXcv8=z!DRT_5^-(&R;xzw!Cx=W>t0U7Eae`_o#wd4DvU zrOS|Ndzhwbx|)*nX7717_`)5Nja#CR>(0`P>`umi0NCL5m-bGzLLXl8FutCDLQ`XZ zx})?gcK)urCMNWEVH@0^6L2e6T3#VorJNRDjNOcmFrGYTvwyvf18+*z<&x?jXS^eT zRj=3@HqNz;fhVqOLGgJXf@qZ}6!tYZk*J^-NmcBNCAPUgxUmi+5oWDPr_0O#3VrT(JcgXBRyp9-_|^RPP4Z?(A5kolCd)ea!jnPoBgd(9*5oSb-cCIu6FTeQcM+ z8`0l}o;BW;qkio{2XW%X1>}2m4PdV?UG^Qu?z-2gMrQEeuge6(jalCFVP2@R5celu zrxBC4W5{bt&2xFQJ?)7XYiI)>g zaBGvR3Ip{YaPpL3(vc5xyWoJ@N&|oS~XUVD?hZ;--PZ1^7xq@;KIPN>( zXiG=r-m^X6M0pTLfvi2+H|Smwi@yIzEci()GZr(2=1UQ+aP=rrXm-Ogt%8Wp!0f;E zTX|MN3HE6H(NA3#k{SKM1swyCCCZ(%#0~>M4wnG(=}?y^o$A$cym@^DvrT-CsEP@} zRX~CHLFJr*Y%vR5_p61jMuBboN%F(+2HxWnp%2&d)!~BWBTb#oM6d7=dLu!lx4DK9 zD|zxAsK@d(x6k~#Ih2Zu;}4$+Nix6#t6i%9GFUuHhTj***R&ToKYM)!r#^BWe)!o4 zJK{$e(EI8l^dvYeQqg^*k-dU?kd9vk z8c(Tkf#^>JZb8Jy;644@##BNk4BL(=E4ef~5(?it(PYI7L2V&7k7Bk}Z*Cs)A9BM% zUmA|>j^}5Su583eb`&P@&wLP-sr7O*(HJMS!Fuq+JnBLQxo;I=j0%a zQ-=>kMag1kdoACm`ZnjAHMBB&p6v>;cplkom)6~0dOVy`3--J*)w3wi@c3k^(>`HN z3XQIFg=fRvb(Dg(?FkV8WNLKdt~W;w--*-S0W~MI<6=T+pXP@E;~_euNuEUIHc?E2 zo**;e5kRM(O>8<(_9M&4dH5)|4#n(z3SIrxYv3VYcJs>HlSI?iD_@h~YPV3*)oM(t z$W?SAti@|ami3pS)48u5UEcGiS`~I~8VseotFGpcE6jp~Q=>blWJyj3aai{R-+`Xr zABDN`nV3t7vxnt)srJJ*-sTuu64ugUe6YtX_qzIfOdk4^9EQ16c@|OSB`b)iJp%#a z7}_AEXZ*`U*=cL7r1FIt`g}MzBpo|)E|VGk*8EL&2AtVCOXa%Pikm{i{!nwjykQ2< zF}n|gH*(7}bvf6rx4TP?zlXl`k&f}0qvh@80CIi9EOo=5+vBlW03_nU8%7y_{f;Cj@sd>3zDpW z@em&XXc%6r+px)Y^_X1^cx3HZ0l0NHgZG0Rfa55uh#1u7Cw>fjm>vGooi=sdX|0g) z>NKhVXi4V;Jh55n=^$kKA#+~Sf`X;Fl|7ec`Y6_r@2=vcs~@3j1|(SC@Q?={K)GV) zb0mEIf;fI$!;y@xHSrC-D*F;t`=%X2Cy|xae`>hS-%_FN50af^-XM*H{xzmN8ToEu zQbAifyZV-^*=wJpq&R7vIOBT?G9cBgqZlV8nImGB)R za{cvTv50^VKI^xJlkt_Hq6!=9`x8B?c;OhJKPPM(W_gKZ9dkB*e``dii0z_T%xCh z2z7P-j;*4!Md%e_yO1Oh5zF4n$K>}U*CsP5JRl)F9NOX#911P&F2&uQV8vaFTPg0YDehX_9g2H^0Q<>({~r6FbDlHj z%v^7hNv>okJ2Oc>>${fxuP#_UwLr2?e>h=U|Jx^id1yR^PN5LJz)OsKfrZP8VeP7= z25y6LsTu9)2WL3Xmal z&@ID%GbXgC9MZ7^ADst|0Ug%>?}m{L`l$rAAGCk?Iyvu;W==-uhdwNWOCAP)J?hES z=|64fL;`mZcy#{hCKcTIkoxqX0G~AcJ8mf!BQ#U`HiD#%gv`U14C_e z=EicG<=~&b{TRGF49Fo>e!e${pbUFW;spjt^RD@jD`h8M5D;jF$JJdNUrs6m=5Ug^ zA_&?IgIJbw_bRRVv@td&@9BJE{HezEKSLNs&*6s{tz?+xeFj9yu+(W%+|CIZcp2Ls zsv*J6yFYvw1x2LlF8iP?WRVX}1Q9J{uw#?5&5vwVu&?{45LBGlaeFW?q*G~KJ^4eK z^l@#?5G@jBS<_XHJ^3`h*(M23d6s=lH>ONLUIt3DB!=%ojv|j5+pN7wQdp&>ml`Ia zJgw2<<_8{5%5WJwpXl-!Vi%@?RS8Ddi$2<6!y)P(VvAjJ8E}cZf3q+o1t-x*=ApD& zVJK&kwTk>fqQnrXu;d&`wGlF6UzXF{cDP>3xtB8iil&qJA!3IjQFK{;Pjh}DfN+Rp~E9Zt&tmDI5OQTp{m3RWtR7`@broGL7gBKSM z3jYKzyiF>CWE}ntUTk89vPt^qqWEc`O>tY@AXs5?OJbLR7c_UGXFjRyVC_KN_ZUQwjZTo0HfCOlCpBA+jCAySd|VS>kUP@gGOIY-L^mXh z$dxhb1wVp+-r?bV%&Ds;+l;IB$fsFH<;9PaEUiD}WiEDurQTL9^;>>I{FPb$7D}!U zpM{GhRh{W`@*8~7ad*KVbem93)&Mh3?*2ED@uJ{Akqnku!V2X0{~5_Ri7Ngdkqnlh z|Hnv11(%?SzCa$|$6JT6K}&3A20K3zJW6#W>!kDvdOhr#u);Blb7Q}6Tnm-8LTUnH zuyD7;6UipE+h#NY1iO;Qa;l6Bn}e7d%37At3{)7UzQD?EjKS}7P~6vVo9*9<&OLX6 zt+>|6c-ZE2V*=8?Gm5(p?9{3HEoC;v@RoIr;@1(HGeu%Qm7`al*2y1Cf}!-{{@$Ny75UxeKmSaoCw$x=o6HQ{bKt;Mpv^e+iYPIez$Y8y zyb6tZ9$YjU3l6g>_09{-H!kOHCvXT2?Mx|<8N)c*NaMuh55HN42Q!|fwU31|kZxg% zq*?5*UOdj5cPAu+%)!3>PH`;LSlb$b=+DRZ>=Oi}f^@WF@U(hn&v2t=Lon>_e-8oZ z50k-YJ~`TQPl3kt;+kebWf{Npgw>W2Gz!4rKyYP)E& zq(>g7d^NOyh2q_zf9bMCL;41!qZzE|iSw*o^#K^aTMxmy%OM9$2!Jc|ULdCn0DfFR zI;9^c;2MO!4IYF0O&APt4+n%Ifs3mXpzb^ewDXA5Iq;a%_YeJm|1qJhM}X}DWPSno zb>4#_fqTR;@OQCuwO>+Oj}xI=!0shnlIljmpW@7%0n{|0`{~(QKKkc<4vyh-9f0qY zoiS2(f3}P9Z1W5dgZ+@+W>Okd-3N_X84^$7NT3(i~4x8PSnMNLQx^$tzV zR(z-Vq~}yjNOG@_k5fLD6Nj{lV06wtkNrUq_ixu7-`3>G03Bkg7#la#fchJ!p7v=XeJ>GYy2*)xcxs-iqOy^rp=cv zFl1%kK?eEJ7IbqD&pz%FcrHRL!wUvwY{%St)M1qv$VQe~brpwuU7u&Q)_{#nR!VZ# zGY!z_$Q$t^$KWaD-2b%M=^@o}2^)7>-&#M^U3U?v?wLmk(zd@wLJjE{o;sx8Zf>t_ zz_<|9ESzsDg(YvBm_Ka{YMI^Rq{f!&lrgl8NRMw0O>K5LepibzES$)%`@b*1Tf!U% zRTKx=CRR#424O2(Qa(pg9&nG$6pjQvB4326jlN)hX|-2e>($*Dtb*y^(Dhw!1Bb`r z)9HdtyFL1Z{AIcC#~ZobpCtwXkp+HYMUqcp!Vyw#J=O{IGuVmof2Y*AGS?omPbi4T z5#)p7|JsMVE)lmsR-eW+%*PG9Cl6{lSE0492j_c1H88}>P;qnWy@-^cU$}fm_xS{m z-sk9MvF)%}HTrw;?+<(;9=*OFnG72bL6iDSN8DVyeUeMC7u_YFZ}w^eUl!0NytPdc z_~MLXwHZGe(#zs=_MfF_BhA2U^L^`$?Blp!*6&UqFE{IgaiIfR&&Zm~{f}mJ-HA2y zq#_@%_kpwd)Ubsc>sx#ou062pzQMsan;%!IKlWzXuaXuj(6_eOtKO#KMn0^{(EHp( zqM&Z0Q?Mx!mu<3YX|0<7tn%PPUn8NhZs+vhNKB5$BU*(}RfxVq@DkGTF$-(UPY^9t z1GK@UBXkEy{^u#9nTw(K_v3^tL8Km$y=XpY?VR0j*yr|SzPPQ6QqLHkZh%Xv^Q0{*y^pj-8Ore6U8 z5UIO$t@E|2*X_`wzLTu)$4`;pkF&lnKOKcGKWR^;1y?XJtCVpb;$-V%k_)Sz*Zd*j zH`E`2^#8(z35vKvrRcy1_|46z9}ded0Fb!HutwPIj=Y@EwvW)L${uYRX^+mWAqlN zgYIE{rPJCzKQp*|f66N_7i@UyN3)GN_>M6HSJ%sPni?rA7%9=;xarIse3ZE)KU+bn zSYw-Y9hL5VIMbQMf28K^F>%>cg?l&VsK8rE*wkOlY18B_w&)bWBko|cxY+I4(1ZH$ z;CH^^PQqj%I)FBPsf_kEDKV*bJE=cCehc4iKLJt0cp+RW6F;wR2aU9sc+5uDi1;%; zC~qx1?NpOm^|Tmi;;ryGBa@ShB7-6Vyha|;Ra#xyGP^|#wN=;gG@BI~hp6?mUMo;E5*n^QcOlvbBp6}*4c7yc)BXZ{r- z>N{P0@(N|q7eL)xBGTbb?O>!?9ck(Ka2CDJI{uYo zKf;D#Mi1x;B6QqAW#oMN6ZTse&uCx7(Aq6vfZf~hn_KU8dhikK*XF|@jV)fo*^%@K zO^*=z8qa@S?s8qQUj!>>70a|3Lq|y&g0B;Tj&bWyYgHpYyFK3w&LtHj#P?8eYtcd6ivdU&92Q|kbhI^!`ty&1=1W^oQ_A$x9#xmXxft>x<5cF z6OkIKA;%;RZu0ca{1!js<@b)539F_udS~igZk%6yh(=4xR*BBZH*{geAK|L12GPry zQ4GCiR-xe&H^ZC0Wsl5Evxn09@BO>XL=nEy;L-a=tT9sUMd#}uDuaZ^3(Ffhe$rXi zGS||5c0+0YC|^7g=KPm;Q<#0FuppOIvcqKuwzH8M!&Mm>@OSuYb&Jsnw1Bkr-?jC+xl7&t zspA%@OA$338@tUGsWat&UY|SJ)XOEz6Q4Wj!Yeg9(r`Sqh)xo|IU}``5uQxf-n!VN zc0ZXQH(d+UOwuun_O-Ta<&J#L9IQG7Dm?F>yG~lAFs6Cgt^v%`>7M|Uu{aPg2gw6D zgbI%k-?n?6c4t3R00>uj1W-4C9M<4)0CF}6fOI(LLxGH7;6COSG?nqR^b8az_5tX4 z%?yuWPxiF{zytu(*!!pT-1MxegY@8^P>;{)SRTloK={?2wNl}sdx`T-1#73KW%Ywx zp+2QW2a5Lb3EOF90kY8DTf=*j^4D0q0qx5y0j#7Ks3vI>ZBCzBzap+P=IJsuc!y>c zD3@G=I)SfeGY0q1IL9zhsr)1GECPk-%e;BH(Y6d2onzfXK;Zza=LB%T1E8=);2q|l zc_@H$0f<=xp+;Pb@EV?HLJZ5=3y8*Z4)FC9KnKo3w}Jaa7~s7E4DoCN42e%b!3prK z_6afog#cgg!0;=2I)EqmExp?T2o?Z8RB$s4+zr6kpy2bb2mkJ|3?!ZazNdh_C;;31 z1^^B)uowVNJp=5;01XBh5b6ymp!uI&JVO)htAU`QXJGRb41R}jM*#)jvaSJB|K10b zVFR2cJS)&YfD)g;q}RaCGvId%LT_*&)hX}*>hvfXZs9u&JprkYP=(n3nMv#uoXTEH zhb8zw2B0maAK^-jcM6)5jszU)r!PIsG!JtOusA}_uay_CtQ(5)RG%hw$m1=28U4|Q2{~Ryw?1!2V&wxl~AXS z&c+S{C_$6HH#?!bJ7LpdmAMdwMVB>%(x}<=U|D8Vt?AxQpPRf}z@X7nFRSj#4t49z zN7NuQdl%$2PHqji)H%)Y$k=%vs^IrW*N0xd)~5CoI;(3p1X|BoeX9=-)6e}|l}&Y! zwz`g{Zhq%s z;rJ#;z80vZT~Xis_#$_aMDJr;`CF}OqO}iN0ZNaQJx1OH@9@XQ$Hshr&i*cq#}80p zor`mpA&z0gE-qv7tP2lW%dzfaY){GKU<Xb#6cH7x_yW{4&aMnPG@!ZKvKLybutyUpQ{4X^>vsyEva(Z5swr zDQLWw94to*sUAWJWFTtMYgk_gqLE8e5vhW#kx&q|_h6xG* z`}k{PDQA8kD&34D=I6c59bHZIrw2M`A(AoRVxPU%N?Cfe)icj zDAWor1Sy*kXqMKfanlv=vPtBs8-AND;qutF%K*W$EBa}YZr~t7F;yYZPegx7K<~JE$OZzAbo|^uk zW?}77LuB&@?mX?k_BUpw!93iTqHc6L5n<)7GGa!<3(J$5=*-^9DH?oN3z0=h(DXx* zUz$vK?%1FCzpBM=H9*xYBwBuUD;uW^XqvXvH*~bMG*3-l^iqnc8ee&PSJ@#*WIwSA zq#_6S(1(R)29Nd0VBsC&njD52QBo@NoV(yLp!MK>ATrDf!A6)mTa+Sf;MI z=aw%nh;B3VA>LdtUXGtbx3cA(-SUc-s#CDzNM4R44wW5yfuL55Pm@F~+L2D!W#^Pt z&DXo^lU7IG4TNgy!4*+N`yY-6c=4eL9)J$@1Ar!De0hnndHjQZu0 zymO)~Zak>!y&H~Vw+V}%$N7Tv!QJ8)%DcAeVs%lMd;TNJc1w7(tB1L2S6F{DaSpl< ziFkY(T6y1IlUjBTJ9WL{OU7;sBP#Ki8LWaFIv#P>n*od6h-KeV)iH1`Sp}=LJrpOq z6>U{Mm6~GUCPkAeu}N#*-buK^tbS>J!kC`Ik0q0J?rq^((4W{Qw9PshP|!#@^llN` z+F~uKE4Hwj&rOkw%!nq8K9x~(9ug+OK+xL|5A^rByc|B zM|`h_iNXHTN@VEnF_duv30)fT$ZlH6eyL#Xqg031$HT9}hZqlUnB&5ZbmT~3BOdJ< zbNd9mh=!Beh6Z!2%6L1k)tS0++Wr>#%owFezq}*eP7qx%NTzXv*_>7{qsZxL2fow# zbK47%dNU$}c(lGTVrMRmiez*@%b+mZwH}<<7R_G~v#NM=a)K3rRYsQ2ACo>1o07u& z#c-1Ui(=u+co4;Bw){opUf`$xB%1@*?^z5R7VG@%r$RbwM-CBTJ_xU7U=6)iUdyK; z2ZufuR$G=4EhgJ?d!e>n&SN*PBF%?>r>Vyh&P7f2&xhv7ThqfeufHY>EohEM;~=&u z>YDT>lq(tc?MsClZSpFa2hGO`nLeZB^V!L=T+B733wZ?aAPI$K_hVJkA5A@DdvkOr z+Ph}#uFRH)t>tt)=jbe(`rW;c>3OQpub%PE&6k;*;-Q6e>}Dc@ZPbwbSla z=h}V0d-4HZ-_l^7T)cn2)sB&n&Hajjs%)N;tPxdL))6vKxmu)5aX=IjeoUt4*g^=+ zy1&#~Y(rfIw_kqq9f9>6-FOp`B++T?cf~igBr=SXyw@mFrEw~@)CdDm~``&j+biKsxHaM z8R2w{bLkT%Ss1g~eJ=OJ(mPNpG&9d3Hfysdk-oRuE<3>R3#<07QC6~3a6)52!7T!v zdL{#B@ceQvI(7fP?DjiwM6!VJk3xp+>gUrKF3aHb4?SNZszbm`9OqKM+9Y4yyah!>8LPLUE|ZP88$Sp6Y`Ga-n$8 zqvdn`Ui*s-@!4%>QSimvjafO~R0b;%;zk1!mdkxMs6J2>e&Ny*3Q)mI4xqAe)3iHa5Sb!>FDUyKeREPv__P z6d%ndpT@EVj&#s=K!mc)a@NaOWUS9}B8_h)wr22y8!UH+PG7~q%U;&2)EC}KAUta` zR{VPJQwv_O|D;}K{8QcZSuGo!tan8A!jC2C8<)bYPdD;~N*Aq;E4+kNbxc;TT7*QJ zQZxz{D|Hub&JX%{zF(Q9 z7jFy&mdUE?#yT5G$a0?AelN0@cD9x}IxDeoKE7C=P~V{1qMq9QiD7;ykA4;euW_wn6Abj_1WJtxdfnZ7eQ_rX8xAxHkzcQZCr<8WfE? z0zP3g{1H6iJfKH~|ST{z060Y+g5zAol5<=xngDzC_4`Edp7X(h{uqs8C}yo=1~ zD-gU9CTvXyUB+aHL9VRswH=FHIVev~7zg=_TlG1-5oTU*8?ARSgh2M&^Gy3EoRGs4 zEcEM)BBx==U+??SZ!84*=TSk4i)SB=TeUa{EtyPYDo3zlBu*65bAfWm<>eNyJ^KSqGAW3lx6G6(?|46u>JI%a zh(H!KE1QV<**ajPEi5x~1d_fg?_8YwsPd~}oZaOWEbd%*Xi{TA7o|Yuu1O}@R>`@P zt`cL5A@rYOmw-rxl(|&r2{5Zjy&!s*0R~;%PwoYigW@X+gWnH{ayRuKaZG(mj~?WH zhQ*Amzg(Ih^bIc&_$o}up_*fndDo)IMLUS`VEqCS`kv!im&!>4I|aT8oss?q1UKJw z7~>(b(4R(OZoB5Bd3qqkCj7rHq}`m@_;BpSzMfLU)P=P+kNZJD&qVJak17{o)rX zMqqU}((~4RTc}-r)21pxi@pjidxg24t_X!XjEqDZsNe({rOFQ0TFsC%ikjp|-I7eO0em$gzTB&t02ieEqp zFKb%XR7JVS=2e;z)J3JQ`65KNAFKK>)|)VU*$HXUS%o&cO)m~j$+vD=*7@#mVQrlz zV0MFrk>THA3O7MJtDqt;bD zTQ|)h>Wn~RIXDL!-O&Ip_G;);-3e4;F)qKGdGl}oN`rgte%OZb@ z;S0$u>f3MnJ$c^pOIyeNVC2v>xwyOZN-limvpR=s=*zg*Co6?i9~-E&9%58GBebkT zG7G?Vj@QV4o_+K$cV^>JUd=&6z|ZUK0Ca=L?f97wy5G+8cop#2%YJ(nWCVGUCHYhh zIwPhNNm>|2W-?RwE5G)A&amnkcYv;5^!ogiGL9)$9rfI#MAac2L`H*~bVy*L_=S$s zb9)_AC+us>w|Y#jrV4Yh9@Fv^$@`J?QMKRAac7)T?F{h&-$x(wB2In5r>7tH?~^~z zco41?dm_~Db#Kuh(XTV1$oUIj>{Iw-QZyf%x|*H1z>?6mOEXbTHh@CM$yt@aj6HSN=RJyHQO;Q-o2#p%$%F-mMx){N6y(fPHymEb z(!7se2$k;W9EkL8Z@#v%H*vJL-9*{Fx)oH$5}#$F<_pEiE7x#K66);uv0~Encpu0) z_l?XkAA8NGq2wXUG%4Y}78MZ+`*vz)a;l4nk+|3~)TlC?yl%JcYVUsgd+zc~z}Kby z?_PmK;{iHd_99VoW_S>deM~?IMLT*(;q=3$_(Wa^ou{CrmF}+R*>Sz|Ad`-PnF38^ zrP|Bg;!ui5tV}V*v@L_e1b?BVh=5yxfhm6@@12f;`MJ;DlYZB*`?j8Sbg1Q*5u)+) zpUxk<4IAmkT|fmRo|m?@g`*USa4*igBKt>dkDJsC5!n zNoY;1wgJ~n1A}F6%x3R!@zqjyaZ0;wUdp_=VNUsEyct7cF|?^-`?Pggkf6dUO3EY+H8R%&Qrf5w=n!H@L(N& zzZ1Nsq&p)JLH#gN1rfeG>4X+R*Fzu87ZKAoXd>i1GJi-BMc@t5ut?~#$(xRqi0OSD z7U&QkmX2C^MQGuk_vx*4x!Mld(>}=amLq1Hj7N@&3{`jjuvg+n-Ysd9#Z$rU9^_rc zv$%fH5J+hfmzDgWSnTO^vp1a-_dUPwzF=JqyrcO1enAt*@80$_6=?H@&KsNow;LL_ z>k2qAXXyQ^z={@%mMRaEbS2s<|Bz_NudCTEPlw{$qi;Q;5kuiYR?Ifo>{g}_B`u5JZXpp6Qj^y z)w@7dH^@lqtU|lqjr}Jg6^!{$QZs2~k}32diGEY`TUvLMxiX8NqrHM0WRK_!X0YWr zNh+<2{G7EaLfWe$9Mit=sy-BR%`D5j?N^X(2m?~0J4|NRG#9-t&^TY5%izGs3pAqE z;Ju)(BW5k%x1>GKeG3jG#;b2f?|d)n{Bz{xUb{5?#d(p2DhKB_rHWvm@maqas!&@4 zDt;Sc_chknu-`N!3tD+24N7gOl|38EGmBH!i+ypgYq)3xTosvSD3mF!&BvJSC;hyq zi0hMKA3frXpG8S616u_4&eMv5r#>AabP01T5w`_?tGlB!%JB`X9O zltz}J`TNcI@iF13(Z>v99Q4b{UUHJ+!_v{SAEEkoIIA9fyiVyO!^}%LCBOZ+U=fvs{Z#QC!(O4$yB4vd2T>f5|`709^iwc^jdvGVe; zu8DK*0(aCi{-`J$ub#5aV&A>IPy>6CgQ$+OO^jG29GjKU0xrDQs2g-mvv!n$9k(lU zx5LcU6JER*LeG59K;q}eiEsc|J_kUK0N~pXJkVc&;G8i4A6*#^+zYJ%>$K1AabIqM zST{hS8|;?~13l1R1GLW*I88tSoH;0<08cnTEWZUj!A%4YxDr?bhQD^5*hJUBKrt0h zl)q--w-UXDXv-va03F9*v?S<;dXrRKt&n~_VAMAFM2T#JaW9J74@^YDADMIw|lM)IX@h2s2>$In)p6--Dl@sBRB*8d5l}27vT~16G#kyp7;i= zqdbA&`{g`U9RvIwItwIy@V6(QgBrFj4TFROsgOMg*y~$%hl%T3GTrb$8}%pm&hV@Y z)`K}k4LUMp6r;lLtk~Iy(}IV;<0|sCmyiBG_QXHHKx6M!a(v&Qt%_dicTj=7bi8v= zcQZ#;-!c0vd4_8OKi7^r=Exo*LM-s=`Hrv9oUkO>FnyFYahW%pofj#*2!*b($Gl#| zd-02(3t_SS(kVC9uXDf41&M%;g2w*^D5*M@qqgybUK8|ld%$=n>jpkt;8U!Lr~67^o7&ANBbF90DTY!fL8n2F6CZ&#~^yOzPbn{@#zn?yyFvH@&H;e~RICBNMtwntT zBB_^IvT$sKD(4K0@7@sq{yA?)S&KZAEs!0gpH(euIJtyK^ijPRKDMiNw|~wF7FN-W zow0H{%X0d=rw3cdx#Lz~Rjvlj&_9%;+h#b_)|zAS(`x%cj3I4IJF~^RvYX}#E-_&( zDxIYc=HkHQsk53C1mQ9wf@sYQ6fKeQFn8SVXp^Xfyx0GKsfq(H8anu9^O8W8hzb5Z z;#BYBxuVz4K)bbVqwiE!Uri7(gU?C~jrd(ncKe2_%t;|m~;Y&kj!S*Szq@eh-D}?1Gb`0|)HOc_-^+JRN4$9LD9|P{T ztR8_ zSJItr|3|#)L(HquRuI^a{@1TWH^NbLHnQv})p_i%Df5F1PHPG*F}*^$dvn^r(9BDul>`SU`h0+e`D(2>uG%~ZUV7&LX8Wy8a2yqHLHU1?lv`g z8Z~;_HoK`k$-8yy!+qZ$FYEPxlxwJMBCT{-+t|-hv}oi}of%HrW%CaQ@%lcdYQkgc z25%mI3Xth`y?7eT;4bx?$sid-{x zmrBWU%)$n*{pyx^6+&Ib5%3el+HSWmvUQ$w?}DZ&?$FE7x83DI+&#^u`zdxo>S=qw zqoF@Cd9~x_q#~^)*1d?6WNGbHK?uRoa@(#z^@MgP9iES!XH6#~3A2&l-EG={zF?ux z4}Mgxz9pR{z4el|xNk}P7sn`==z&s6ayB=&A;)j|dOnH6UHIKcnRy6)N5*E1Workn0L?XAG zk+H0^5PH-ed5*AdLLM2%k$Y_vKrYQ!G-Ozm4)$qWDSy{f0H6%4f%9xK1VS zI+d07PQxgL#NGF%&bONR7{|Y)@5wv?52!uDNbD{Ixof@7V+0`685*sx9VVZX)L8m` z8|y|F4m3mcZFZ*@-$&af3$S9#y(^{RV=0%JU-;FMs4U$26I!hL_Dup^n!Nj|{J!r+ zQl!u+M`quysrsvHfFB}wa2z^oRE%Rx_VG|*^h0^1p!nQIS{}n_dv4@LTK?yW8P(e_ zeROGh_q9;WiMj08`~4r<*V46WSbr%8n_tQZ{V@$x`|ypBdp6stGF*HK>mG`#rsH_|sYZ5{Phc;0d0mYC1S0YpW--(Ri&Fo28n(-_P zqk=~C!|C(z%Q3wDS4PXL@p%qV8<1aXt!n7lke7{lCRb$4z_D5ZS@s$Kij$>d-9`Qs zd5N%YZEXKb5yCr7YO0*}_S)8Fh!W3KDQ1;2acx@>&$OcEa?VGppsT%u;4Hp{Msj6n z%xrCz6dUJyCArOIk^DR`QjRfjT*YBh}7Pz}w=_y(2e*jKpb(YpdTq z1B15%TzURB^PD)^lWecCkU;4vp~z3+_%gjW6@}4Hrh+i$BWH|EAr1@HYWAau_vl;U zuw)&b#RWz}MGZwXSadtLREI7(f-{`WFn0bsn|-o9tu90RuWUvQXS2U>Hj~Kgr>g*Y zmOjK$oO2)6^SgP^HZ}1eahE&0&5F&8OUucT(Q{ak(-$lAnJ{0)?{KE;i99MCBA>i0 zdac{>yT6wHaM3`!mH-uTC-EvWh>plQ0Y6$UUOa zo`rBMha@rDH2J5W`a}7YlZ}LmDGqmv^LCF2+uM1f8d~cl&5IT#V@+Q98H`O=TBS5l zyhRGBigLSeg&B_i0hTD6aj|;P(a=LZq=zEuoK|<$jL-d3Sw7Uf3fP}>OQQrw&^SVl zzmnD%Fyo7YQagZZJ-_>0_o)-FF0fzzm(MoX8F$;aMnQFpc>G+@?1?DA4`)DeN^1%Lp8? z?UrfUX6wJjGDCiJwnx<-XrXGs^XB^Dk+61Z?`WcFc;4K2(%5lsY|+<7Lw)Bo*onn ziG&mEYhi9W@)&C3J|-Jr=eqivSXB`bVIK4pc>6FieQfn*qIBQSK1OdX zSEjZck$D2l0+MzaR?(QN40X2b4_~XbV{OjB&28$xnp@{T=7#;>&CNrVVdX#OM)-d< zx6J>T+p^2Q=C%trHy*Z54@sR0c!+hx9L?+ACNJ21rF$Ch(HQ4o>|_@o8Uvtzv0f9T6eL@KF_01a}YKTPjqv1IUS_4U2m)-W_!yMPI zbgJJ*JIDfyjfa9-eyj*x-*4b)b7ax2d!9$*xM-~AH?MoaTnlSQV^0tKs1fU!t&o;0 z4_}Oc$9*wNQ%l>nfPy|S`d~_+OlE6fHFt&JqF&e3Z^~oX>?@sMwBK;_nf>@(;h&^= zzm;0lOz9|O_^PTlGK=PS?DvE(dnM_y%~XC&KfblGP1}= zFpbD)GE$#ZSJz-dRN+(RP;|hf`qE_m;CILO&+q|+aSjOzUlIq&RK{!X(5tg-u@@H2 z40Nz!CZ6>+R*2OM^k$n|7*mLz{m;yq9pW5t0j$Z2n^}CftwDY)1UYbj3WabUL9YVJ zvey1GJZ9c>43C*tuRgK9For9W4)e0kH}OP;l#rl~26TwXRTQ|Z>O0;MR=E*Ecn;c| zvN*svuCQ+m>--?%pp5;-g!i4yXL~<6v_$N)q3$`JOL->)Wfj-%f1?749iobl?E6H?OkiwZ2qm}7LWBQ`Yl4dGjB^Vb>F-^sWV)w6toSonwU z#7t2YuNf4MxW3`4P~1v$W%=`tFGoJh?DoeZUsw^#Fv41>(EMKZ#eSa_En?`0k67Bc z6rsxy;m6%Kz3hm3;!z!Do< ziG?@2D^~`XPK)ulj}3}1KU)V0g~afmU0{`iT4ogFV2UWkt(6doh=b-w)?DA{mDC@t ze|8cJqsLqG9k=$yhT=Hb57=e+4w?UDH?9A$Tfl$VZTw$$OZqSD<}#O5779NpRBjcv z$wc9wkdg_0GnZimmZWilzX7I?s1Q|DER zI{bGXyVJXJ(vd2-yJ_K-E4()N$K9;{<8BX_S}BY-A0)N@H*uquJFaP}QQp5Qq|av& zc0h<@m8Eb=0J9oEi%vwVR>uMYCi+`9UKZ$!upt`Y5$^9lbrq{l+q-opS(uDq=Vi0* z6HyZO^*`6c6XvHA;ThfI1EHP=Z#BB!+GrP+Xx#dnEC@0u@9|1D*FxhSuNP$eH*Bz< z!RNnrW_COnvp*hB4BH`6+_zt>eVq}=#5pvdvdP>M9E7VQ zJ4Z67QG+mUkc*sJf2wFhZDdQczfvn4XWNw$@vJEhL0)7(Ii7Vhb8v`qXT^PK#2&d% zs6Hhn)JX5yAGj6P5qm`s7GzOGW15WhZ#y&|G}HL94Zg`-BENO{w+u@5Z*Jth(Ts;}3mfU*Gm(6gHBQ$HDlf0M97{l*xo;>61H5D*n zZ$HI1a1@KcK8lLndunO>lZiUW(RE&mYd<51FzjsPn0S+PMie9|lJn?{Bf^BE3$5jE zb!+t|VCfa)~ru-8(REQl6W#Wn1`P zH0KDXxxN2RbCLg{xp?ocls#?dr%*a1@=u{OQe7;p@5f{u`;r6PBr4c%Cl|`=pm;Fz zw5LTl01N3&t-_pdu7tI{{n_H(q3b4cb}_@x7jB|1_2%ZU2)i&@u;G3zXttyhKC=)!(%5uZj zGCdkO{@y#=B%8}}1OIzHz!Z&1^|4G9uR2s&Y0~eAmxRM6wjFwRz;B7O6zc~9yWa_H zibY!z_Yh~h#7N!AInJJckJQ$W?$f(<==6qm+BB=ud-Jk?%`Xx(&GeHt>MBrTEM4u0 zB=IdDhHlj`9<_KwbM$wK(%iZ+N!JVV4{IMqlheNbD7Aw^zTR*(f~+$opg&wbZztWhC@@<4R&%0 z)hbSfi#GB>ScoHWss4h*JmRXqD0}WalCkCd#7KUdy|HRlvBJ`My5bhpSPUy&=N<1i z@1h{DQseuMIVBL0<|Tb03BJFXM}@3HpRb=`aR7@q6^)OCBYN4JKWGL@?>vJO!$$f_ z+WFLq+dgX*yUW~%#p`UoJYlO3*$Qij!2Ah3GEC6*J7#W&yb9j-KhnINIP`TO)zWglqp{|C{&*6rsLHr)hmLp+YV#NhC#?YM_ufYG5AN({p|VS z=xLqearhbbx9dWvE9WprV1z32P-=G&KTn5&cxck4lb@Fvd)7Z|g;$1?*h$g$J8R)) zPPzK@I4by=57b(q@cO%n+kRKh?N5=$^&657Z;dAT4`-Asp|*7O3&YuDZvwqTc^s@{ zxiBdoA2zx`*!xY)-hc1IV}M}E@#POfl?62p4CCR~QsLeS3TwW3x-kA#^czMN0aa&x z#c;&c;^@p6x{pi)%Mxg=ug~9i8)}J#6Xt$*|NT^`{KEL*QPIywR&rYXyBZz1yI%16 zfbc6a9b?ujgSg>Scde#}@TRio3KSEo&DQ=fe&>e4>0XCv_9Y2H3`&x>?*&SfVsYgy zJ9Z+MjNZ%kxSq_ovz5)pL2WtN6466tDb+%}NW;7DK9>+&tk>4KmoJer>#$Q$(<4y) zHG-I2M@+R{>wVX+=Vzr8{!$MUL7!rDAGJ$ zT{zBVXui!gb{8S)$@~1;LlLo!*##aghyI==(v9F3@ZxJD;(DiU_N@q8_WP3fVd6=- z=PuTgJv)C;qf-+Kj`AqTg61oS`v95nRT4+589CJgs+53qv^g8G1?u!kjn@J7cJ}73FfB$$s&n})bneA;LA*?{P+c9~&r2lolLR1DByH`c+1Yh%ubJ^YcKr%b0Jnw$r z!P?_;Tl)^b1II*xXM`RIRmNcVNJ3&aG(PocXzaH6qI%B&1zFK*d%MC8XJ>l zwwemNl5Rt5OVXU@Lvst7%fTR?NH#U~)TfTUS8z2K>>s-Nox8)@365-PdZB}&W2`s4 z7x0FMxt6O)?F)`eomv3E6m;W6rgjr(v^Mk3+> zyy~{v?L)BNp4-}9c?I@b4@>{c{=W?!@V`F($0YvekLUk?;{N~pjQ{m5;(t!|{|^}d zYZCwSd%XX@Mf~q-JlX$0-2FcZ|M^|+|L9xn|4ID6A8-Fhll}ia?*DHR|8o-m@5kH! zllY(C(f(In2ySI-jNSinV(tGhO(y&QN7?^sAx-xFce4NS#J-$6xy7w9X8$voy#M{Q znx<_32T7Pr_WxhA|4ZI|8nd%i_JV3PoQ1#BiXVBK&C#gc_f}bY|9afvu-Q7f7`8{F zp|{=}jyfXh0D^uixz-U$H`<96M5`73uRzL{=QMjZmF3ekX?KgrWd;(F1SH z;EZ_G9-N7=h;0-X^24p`?OYsmJ1uXc(`xrXF373|$nXRsCPF#mLW|CO?GDHkrDW0z zWF4ZwS+75ULZ+J|5#f+WzQW*&U3R#ttaAn3|I|RCtcapWp(+yS*f^k2!gZlQU4cM7 zZ?BEcqoIH?LyRh25Y_UqJ!*EkL)mc%nK@*w>mGV1&C52M;8weH3AYaq(0c9UK_N{H z#wvn=>VcdGmEc}~H0!+^bVh9%EYp})$ZkiUo%Ld$VKsZFT{iZ6BZkk)SnV9K@>je4 z{$SR7+#ikreRI+Cs)6rUD}Gq@J#T++k$3DtN#B0tf-I?9^F{q7{0SAH{_@2J{-r@1 z%P*(jm)Spy)9+`!D*Jy~7w}|dYk$vs1%*$ezXX0xH_)3vxdd@x2M|}2Z986L|{P)?<&_4g;cyj(v&i~2zKRN%ur}MwWUQ_4YW^ag{hvF(# z41pc6y@Gu^$1unkQT)8i&Suys5LC0uW~g~Q=bbkPqhZ;+OzyyG438@YI$~FW#~t;d zOX$X$#``yqcQJSJpQ$O<5FG#ZS?m028VmeqyT`UnsRVW@PzuAoXpOu-O2VU2mn~3l zc)?mYU;5~=3!?xNI@o|FNo0hAfAPyM`RH7-KK3t%^E#Jzztuft?Sb-lSoz?@i%l!U zsA!&Jh>e48dz#;0Y(m+`nRoxZQ7(y^jTCG`z|tWgsWYYQoi{}7gZAixU5(Seur~l( z%gTR-A1ePD^iI7;kG!f*m}V)bVAaFGYfHgyX==**^H2C2vQNp(5@k17TVi06a@lUl zlK=h4^H~dI;xv>!sDeEb`_USdd5W;DQNLf|?H)k*h;FmhZos@Awuj~E^I30q>se!S zeQUM;x?J|kWoUMpji(yS%YNq&NAs#N2u@mZWN`G`$NdH?!Mi`G@_&5%r#0aJbgY5i z!5n&ccQDX3D}&DRESq(RY;oLY9k=FR!sSws-?%C`<~}1$Rv0zom*+jUX2q5{VaIb1 zH2B%x?;jpk*ig6Mdu=wi?H;>VV0UoiD<1IVkr%Oz4};BGz<$gyKv^zV{BPHL&$|4c z_4j?i{)F=+?L7qRVM8+Sv6*36J8I4HWPf~eFg`gPo6N?ZrN3v%><3H6kwNEz(5q+D z)wwDgm{v!n<+A#ppEbB~)+v=I{Iu#ml6k@@g4Hqu(={{G$xqQIOv~qu+(+0cY@Ky_ z72H}L>=Ci*9>QUa$8e_y!EW#-hu$Za8Ybkfelf0wuG0X_pXi9 z=mqK&i=yxnU&P{G1ylko^TiL1SSt<*uA}&C~WY?I(MCo_PReq>%4>l6+Mw6$8g0o}k72kRD*@q*=(>OYi8JqN8Y3upJ&Z`W z!wHBAtiTGs=>IkSuk(ME%Xelyv!&e0F9fqJC<4wlQN*Rne%UoT$@_G63jc~03vyC) zG)L0SVxAuMz1tgHL*Y3{NV(KuVC1#2gN4cCOtejpdZT&Be!yRk_`xB`ENp9emM>v3 zE3EBbQ{<*G}!C{l6osgZa!&BwlR$Vfys zoU_6M0jDKd8Y#U|1uQ_A;>jcSr0NeEaPpO>CG}dKRTxO9&U#3=mdo?PtHAU>#1e9K zPaM2*)_Saoo6mMO7PlJs7Mk9f^?rhhm<5t|%A%#c{~}aS%8vx4%%J(Z)_X{RNJ~#W zBxkQ&-p+A^s>GHSBQWYSirv>^0FCVSV6n?zNXPP@?1Cw)W!aM(3WBBwB=xDI z8oRslWPPu`vfB_9okM#>ugX~D|CIbsc;BsXp2J_m{|&>$;{S$zb;AFh@P8-#-wFTs zd*c5-&@+3|Zo-=60de7RDY>+4N(NUPjuAspvWGxigy1v?ePOf)?9qABX`R605Kb-* zp+nNB7={ba>NzQVJn8|rwt?5G3@g)EYc!Mq(UC;h%pJH3kk9@{Z(V5j_1o%KHgz0T$x9fPz1%Tpn%;F^C2F7dqPg9Ao`T)`J^ zX51JMqW6Jd@xZ1>?~dY7@Yo9N9)S^YlkK1OgJHKnn!~}CtZ{tgN=kxJcU5@V!@oZN z*B9TuKg*GTeg`D{*XRHG;#(mtuhnNgNuID7!&32wFMjwE!tx;FwB77haJMrub9t$L z4+%+L!nQ17Tb8gbOTZsKQlq?x{vi^o%X^}PkI3X`00BFX6QDw9L$4knGewQ`5C`z0 zCx?(|j3H&u2S~v%GarwVfw;ad#?U}rXJ9^B*pTVdviF}yqDI4@4^b zQaEn4WY}u%;{lT1L(VD;58GQvJ05i}`WIYm!`k0D?y=@yHoF(?;oRIDoU`l%#!%Q` zBCZNV`n-hiR@{?=A$yn49nX24R*M^!i}u4x!==LZ?*Uq+^D5X&la+rw7!2m@(ZUG9 zJJ8E%v#TISV1R!=5(}#gv&UL9^iJ_{#D)H(G#IpeX?);GX?z8e(%=oHOCybQl*U%9 z(GF)uSg($5@fA+{#TRy2=iGMZ+|K3PwsWp*-?UPh6&9B~wD>`TatI#CeVU&XWegk- zv)*mLmki=*9_}0ZY)Q`8fV6;V)M^a%??M5a+HoG=c7}ZIBQF3)7e#2f3jWX;7~SIG z<{oxFAQ7gvDz^PXY*NB{X`M9L>!`J+DCa8QMX0?n_@V?noO+5Xub*?wx zEH+$D?kw#LjGcEM{x0)#4i5f`oM5(Vjqm04`h(^5RkchWI_8}1o)a}E`r~tFotI!u zyHN+3_d)Zp^L~EZymIL1T?71wu$0j|BZ1VWX4qa2t{KOCe9i}*KG2$1IM*HZ!OLf$ zm&jrw6AukPI}rc2#lLh~d7}y@78C8M)#EdEZaJs(6DOC>ZEk8QSpXpi8!y%uk@lLk zU<|}3wBsIFO*sQzn^+u$W6g0i$5iuY=Wn`3 zT}$+9tq@E81m6>RAF0jFxz zJYe;TU!2R!&a@+jdqdQN8=``i{|!-_m+x_4I~u3G$GKVqN>|98Uwo$!Ar{NL|L|JR|jn-hk@g*NmaN%Ov?loBm{$|V5pj0oPs&<;|ee_A_2cLvK5ZEA< z5&HUjD}h!DVMD{tz6My^@>kV#S!kn-Ef`UG$wHl9mB0AnmAiO&iQTMpz$_?yqrU!P zWvQS7@qoKwB?8-B(bmfLmb(^w_}#1uL^aC)IC%-&l>Q%q)?ll`Z=u_H35=)zgT&9# z|6veJ=>G}*KcW98^#6BC|BG`Jp8#%VA~JVPvpbu=tyyF9S_~j5IjI)SdCI3ZFxo>z zT9wLb>Q`51@t-p^$!eW+x`zX{j9@;ipmxza^v*hmhut?-&_)e{^V!2-gXfwu2A8P(#Jr>i6VGB3tqc z^-~-MAa2`_FShmw_#7F=9s#xXsJe5U73VlJ4UEpD9T7~TvNbYhP+{O)Dx6`?n5Zhu zcFZyb2f>SBuV6B@Y6l68Wk4<>S!G)IKS1JES+x z|K=*vNLV3E;Dg{VSzJOnAL@uI@0wTW%L7!#dUAmOuiJ{ow*#h(oTu$BQa3nJF;()$rf+kZ?5ryDACw_|q zv&!z_`bk@4gaZ=})TZkZ*@4(O=pSFeAPAiGOI;}u_3pAK_aSp|wvDMW%@8UxtQltcCfsHKfwK?FYM_whG zH|HbMX(CL zTUz7ItW8b02o8QAeE|En+!4hGux#u*x;J5C`?z`@3ENvB24KMDLxz>oz}FepASUF# zs`S3cI)GUHqv>5`Joo=3c3f+IOy(RUVN_O zXGebSo?$BN2<#HBDus)Q9Xs(Ff(i~*JW=sqK~P~I-mv1%4(7c#aE^&l`8OL;ggla< zvL|E0s)L)K*RtF**aJA_q#*Q_#>P$5cU?|6&aqSUAkf*zPylLM@x!2P90qM`R~F-_ z+5Je?!RqeH%CxZpZi7PLURb}v8}}A1{^d#NGVib2#{FY(&kAq_eJs%l&aC&7xG}_v zKzmYPxiHwf{JDN#y=gdrV2ERZowod7kQ+y@v0L&?aIF`DYWb#^XGEff4-1J~mPE=m z2nU1VU*Pb7a)9LFip(H4#|#c>HILL58-a>}=J1<9WFHLe!M~O(|5|>4|Nqye_v@X1 z4cQ-brJx)t@aZqSP(-?1EP5&OhoKy1wwz$S8R+zE;^#VI^_uD!B3mRkp>C%Rq<=T; z*^OK7-A2lpp+w#GoU^?ITS-v z+N$wB+56^-w^l2T0b%qCKNFW_`<(+*ieAiq`pFxBsTLbneESHPbTz=hs1(Yb4=An% zJlws@O1IxXC)@`9dPfIkq{TpT%&N;+7uY{N|BNR-FDK7z16Lru0hjA?M`-ew)fQj3 zWqSH{T0`1X$+u_fr=Qqgw_25|NBn>XE0Qj}&N3ecFHbzjmh(ktZDI1lDBi|Xu01^E+`v<=-8*&7)}1QYw_mnh$?Jm3 zG4w80ewK#%_Zj(pIlSea-Z}08^G>oi!CH~ud*;e{M6|%mRh)nEAn<1uAwKTiG$<21 zemV$0T?6V-c6GO z)AR!7URBOD!~5Vh~50~*K%__dKBxbN_kXg>{$eYEO;1} z1t&$NQZe~Wy_Z#Q=CI6mPWDMlQf=j*j8$3a+e|GIF&NY_neaw6;MaximMj1i019VZ zKKm5yV^^l_&`cmz8IqA!Uu2_+Cn~#7XXR&ye|`oYTHKY1)4hM-P+!3K$wKgGBgyASO_zdSwGZyiTGYaSj3<>^b%ql3L68ENpBCYmn0f=lvK8y(nP z;}Xv-njv%E_2*?gyC!2XbyDPvZw`HkpqE{^cHw4Ve=g^5;Eu0^`{v;_oW2{e11aN3 zU-%YRZ@~K0YfoDwnrYHpA`dLvu36kBd81~TVraLiYg=*srs1l_HO*ZLqAmBdkf`jH z@dj*(H_|LAoYN(;d&mMj#kUMLnS!ygk34d>n+!uPhc&eCa_$3hP^eo%F<+*4!uB!g zM1wQr%GVC9K`J}U#-|F+#^qqDIqc!nSXkro>Cq$h;J)rBdoNb?()f(r{*UiO@dwiX zM~j_Xi~M#Y``<7MQ``PG4x)+v|3v?PqW?e9|NkE2ziIPd%ku^vul#A@*#c6oezwi7 zOQ$O-K`;!BPmRlq5j8Z<*j3DK;7)%~o~FK#2uDT{3>II8a%2P#M)TVZA0W~N$Qh#& z2P5&j#fDZBE7+sioHwB{RtkoJf*vmZ9s})vY07ZY((Xcd=hgF@yP=vEDmn1atj$Wf zul$cYD?-yv;X_WpAJ>+qq2cVssh*u>?^o7T1PkiaZUG}sA+>DevRrtnxphWk(!5vs zEU+h8(74>$i#gLK!JHcwG1&zLYNtGAq0_ly8z=q#X;~JI<>pH*&$}t$ld&W)_3K5L z4aF|L;2j}tk2UMdy%BQ33CLnC&zJt^=s!LW!L7Q0xyJu@H41a_AFGr2j}!WDLjO(Z zzwa*oBR@bz)JN?kncp|F(7tzV-f`u?`#RcjT%<gU5t1-s zLjdEzmDR`(k`8pS4tOXdvHgw0Gv=c(e$_!S$Ag5-$*Ht=rB1ty-i9)tR_B-MZ>WR* z3oizi&2L=VayxpopQrQM`fF8Q4TV>+VI7gW{x#H!ol2z>LUxsmu%h_VgOH+(R+oy- zM1P1qQxv$T^Qr};6Pst(E0kOl2J90>^Uh<=A&~$4II&|6w_@ciGm{3RE)wEf&pIFAr4Q z2Dhq}{*efl$!ieNYRyQtC7oX>t?-hB#L?@68+_&YR0iOjg*dNgKw%C@zIQZ;H;l!r8kg6CyzS_CpP|4~5Kynf zXlPd9A#pB&uFhbcoqv8Dy;sw{i*8rgTHGw2o@5IZsjR?|G;XAMaVC{#h98V9zx{}4}a()#~;48#cK zhwyLT3SM`!+IkAApo1Xq8KR3IRS|R&Cac^YDD;^G1CP`HMZp#R z$`FA{(tkQ$#$Oal@PAVNEB%k&CIj#q{$CWOcKp8pLIO_se-r-Sg#S0;|9waNKlGo1 zx7qLkTv$A!828+R%W`PWPMKLHmkWz^2Lt)&^$rKE5fDoApUfRrSyA+T zLw>MP4voLgtsKVs=d0Y#e{8mt;i_8jv)qlAo?n;$y$0V2ZXT-$d2(~697p?uJVEs+ zSwZOqP6CMt&{0het{x4eKpTF8zQ`T?1 zsK3TODqP^k_T#?DUI z%5VtdZqbd+7|%4gDsSw^#zy@{!X}5T>0d+3O9)7W*s>GOJ#+_(2How~<2sJ`Sf?AG zB}THgyPIun2!|xg*%!?IpMGNG?ACgHrLnv9Y}yb+l%)`Yo$Rt37zG@I|MvPlMiyTJ zK}!yNcm)V@7in%KhA>4;|Irc-F1UfAaa5y-^Pgn&a5l(iZ84DQVmSl%65`1PF9@u5 z3Ygu{qjlg-!u6^QL4Wf8p^rUFC=#fnPYwoHpo{jg_lVs@c%k-Da}@+ZYA8CrV^Q7F zpnoQn5c~%LMo;b>AGf6!)LDF9krU2tJr_@HqyGU|kGN1dVa_^6GSdESZ8w%z_UgOa zuN&+@-meSOYJ#E$fVH*Jkz8}^JH`?Yig5cD?ti?X%vBn{V3gRXkTJqBD;y<3{CvhR z@tim9*tkLHj2#58d^2AKH$E}O9T+Z)eUvpx2MWX*4%$bp?$@`L*LPQz>W%H4hFBuf z-S8(JFmS$1DS?2RjB=6D|2PBu+mbPU`r-H)vPt!x)MoRX_^W=Z>`{pxKhq-KnDSyF zqet!Ac~hyyH}T?-BNnUNB%D}miw(gV((WBnB9QM2YF4f2zwMj_HQcUFb9CCaBh@;x zy^$20K4*i**7D>1)zy{V^{pr9jHqhY;;14g?xd#G<{4t!7jrve3&@Alpz+7Z@S2CL zM?c|XgWKcEr@#%Yb8p3@_9hm!oboA#AUO}qFtpC>r`0=XG44mm|*g=9v^ zu6*!1SJewKgm``g^(wt|_k!+@f|n4En6 zQvI!r%4c-n=Ztz`AjRxprp|BWA4EiG%m278nIP;cg0TBSVc>P~U!x?j)Rv?+7wNIro_^5_nd0!n z++pYJmrM57Z?OLOGmotj24Ld^ZX!#ZhyxVVGExeQY!+X(VSn8dOb2if=zi7n2DF-h zfn>jWf)4ovLSrv_3^2OrfubdAIHL~48uM6dz!wDX!1)DkV0hEQPq>GNbKq_W=5WBE zU~kEOvMDT~FSHX@EyRnQS3ybS^9OqiRiE`iN+z6KH;3&x)DY!1fCajnZmq~!d}zX0 z86h3E7=_$2f;bRs2*@GH7#HaQZu$f{rhqMlYT&S^;TNmo-ASi)f{5=rLfN_r!u}@B zIxJ0zJ8lpRaM$XfFP}Rhd}#qs^wo5ydB6q*wIvH?k1eeKz`S+Nn(sL#o2mPr%-RBX zXIlg?7=m}+A5SgNrvHbnCY!GZw@n%cX&e{P|41%#`acY#pbGw9k~H{#UOb`yzt#M2 zg7~S^ZO=8&zPkUPYM6liH~U}02&-xg@qd$O694xv`EPNvv9zh(K}x@v6HH`X8TF7B?c z07|!Wz!|l;yym*iQpp50y3NMk_Wte?qMsbhonVRLpY`>1_Uq&b|2mj!0dTH0^=k>L z<~T=)!Ww|71Hgp%t1bNJNPM#LN)uOPH`xC;f`5_!FF)~PTmL(*hLin2;r~qdKNJ4X zcg6n^E~B2TZ0+w!sR%nu8)z?9md=!vZInph_}|3aP~rK{FVw&0{12+u`Okh&=)cMN zKRN#==l_pz{=->XbOp4&?G;db{vSNJ#iQ{P`9DD%O!zyI0;Zb_XW7QmJ^$ z+uqi8-CJ2+uY24E?1@TeE3AIeX4`4td6DOb598{?Ao5oB>TIjAeP)`l3O9lkrE~Dl z&Jh@Ot}VV;X{>H8mdwHrt{!@Ga}W6cS)14u0RJ?Q-`Z<}xZSH9oi)A6pxqy^omJ`d zhP|Oz8MfGNx#+elY-%g#o%41VXq^gpcmg3|<+3^GfJ*I@WBmoGpnv#;eHQ2(B+5PPI{vE_y8tRm$ilwwhRLlB&15<24TtI~Wj?&0qq6vy1Mi zgSx#OjGMBL(QgQDHHQb;kJ#QilqpvaK*<#I$04XFwoX0O!CB}4l5lJ@u`iH+27!0h zW()qxYqnbL;Se+@STBf52=?rb6;y@yAELkSa<_lG-0j~Icl)>0nWb(R#n0AoKz?^- zX=t>LbjytnzJwyf^0Vn@JAR{<){-d5GInIo_;czjP5dm0qa;e>z|W#8Bi3Sw$`Gdv z5>~@3jUp*}mL>UFEsJYW%1e@8L6FthKWQz^s%e<`e&mNi!b+=Ueh}5FwWO9BC1q)n zCaejp(=*jM^~K17IID$WnAQA{Wv-^xlzk?w#c2{TN+F8_qa50v>KC*pO|vMBqBz8I z)E6U6li1G~9aGIhHeRebQ8iMO~DD2Sq3#)ip{t0^0|TCL_Mtc8q@%Brkmu~7~qtz*{OAjWdkSCaV&o9SvTt_DfO zN~&dSn7{)IgR;V-Bs1HSg=`4e{3LwF&d%)->bvX9E7MWLgWMIT zvh6-Txg$+a@V^zWel+XV-?BgK7OP*(tCT;4J`KZQJ*gkEKPT)DBVX#r>`%b{uvXTe zu|JR5pE~>VhW%kvU1!r&XLZ%%d0oap{;vDj>tCwBDaavq{Fj$|(|ACIWu0_lCdDMF zZ6*aI>BvlqNYb&Hx6f_tdIiUddxpC^8bNm7_6&LA^IKrv&a6xDq+z2 zQ)k&Q^oM1EvIr-wSHm{TFr>e8$XvBRZ2cF}t=ouns zF>b8HK)iG#!tRU=#LSHd+cczzf5-^0tQ+itte>$zTkOy3yiBO4tf)HZn6Xixf$^Pz zkz{`*8t2Si9k#8k(YD-ZFeouWTh(afio+o$rSYauv4+262{rbI(ctxMo<3E7=Pu+@ zk10c{xsfu`psC#|_chEX(zv~G$b3~=&t2M?9(0DZ?MB+tQ^=5>kS(jpj{2&B^xlp1 zjyAsDbR*TsSWeaZZlsyDq5SMDi%Z=aR*C3oSE$^DjFHk&N*1N*bg z{+#P}p1bSplMN1No6haDp)U}``cO2-SJq-!b}z0aea$1<+oJN$i`Gm~IH}P8b=RbZ z#gl61QPo6+)xhw6a8=_MS7YU=kDRylkkCNZktM!71(zX`FWloil82NuCahYmbadw+6%2Gm`0J-qVfke^vNB{loM9S-++x(n5ALN2vk-Nqtt8G7{v+ly?oB2QD3Y;Hs)b1j@YP& zF>7YRhKQ95j5Y$j%bx3Y{vO1vQ#?pg}rdDQi z!>;%|UC`v%YP$gTL7A-qx;FvX(#))G0gd6Rxk+j!dmV<=XgICcY7VLSNOP%3S+05y zj2@G-LH5|Fxu$AX{jq93DH!dRqwWmrb_~#gW3X{*?7?p8ir+Z9EJ`w3D<^p`*X7L7 z<)-Sg(e@Uh5eX$qxvvuDBKAqWs$ZCN38j5pGNJtZCV?*8m)uvnn+Rmp(zIxiL zgcqvXn;!$(SZso7Q?3EW1tSoQ9fABLgoTq3=Nb^v26UVw5R6#?v7`SkW(0ao{0~M1M^gVYNP-0X|FF$I(f|7^{`)8AbC9X#&i0Qw;F`o6 zw$b^d*jy0d@#v`2>VTsX?FOXuPaWC-U3$!Ntu@f0L&ipP=p9^ix`*HdT3NZD+Jto0-ASmE}RDFI%c7ecWqXKa3sJL?0A3$p;!ejG5?7i5nv5< zx=s!)@#30VG zIzUEq@Ijf7RRQDOV=V!ERxzmc3FW{deY1DqOdQY$7pM=&N;v5EM?*Hg=iab2=$wzd z>0!I=-Fc#hQs^tO@#NTozES7*)MMYCImp}oETN}p|wJoRhI1s2EIO>B}mZxIZW zZ?i-HSF_o+X$8>;7=cbTMY1xAvPFb zRfOjpKpwPP7pPKNF6{$d0Tgw4)C%+8(ByUroo z^LNb282o1z6==~}GVBb9J#yH2Um1AI>#J}ujN0ei`;t9LY-6unwg*?N8Wrss9sBYK z&@6AOKNz%!=lvcYAi~&P;o_z|Xm|VX%Ks>>Jx0@boZ%BbzbAZlPx#!P@R>c~^Lm1_ z3jfq_R!+o>o`_jI;q!(6ifo~P<2+%GK;(d_@o=<40g1%FVp7<4I&HJ>SyW4wN6*kZ zZw~Mj>%fUP=&%zR_}HM~ir!_|F*SYM?;qmu@k5`j=e5THb~O;a3q(%>+0uYF6`B}` zt_QNM0bfUW6>zr%I!=fV6eH${&HM1AbHs%XY*xAuS!URT+4iQzeDmnBEMtuJ5gH|zEYBsk>54)Tb&2^!RnhL1^BdVwfC_xv}IytsYcTx#Trxj zXj()+zREe!!h`y@j{@%V49eiqj?lg4aCFs`E08TAs8o9U295o>(%KR~(0QW*;l)Di z^_D!r`L9g<;=8*gk7?NQEp-y}pK{l<)WIuz9^#l{#mlR8SvTB|s(Sc{=tn|7GF>Bl z>c-%gQHXD3q;10bNV72AIA8$!nP&_u!#ri6vw`etp!*i+K@CV_1EZ;d(a?Z5Q;uIi z1~4!Njg*aF##jXQUoXe@0nuWYQKF5=y3I9$r?-!<`fP!>S8`4F-s z5pV>{Y~ICh)^!DkVJMeMkN4L%>e9ChluoMyWcGVweXm~5xrD(x-|!1_ciJe8WdRSp z^~J}Ht;Nk1bi@X3dfD_hr0L~Bx%6sx1(F}Vf>k7m{lNtYjA1bos@73*kxy_|&n*IetN$5#lf zmd5hR4z8FdD_dAhximF>cY0@cWn+JN1vnm$vAkGc;a}@p%PU)KvH$1pLJ0_^acyPehv9ucrLjDZYVDeC z>mgfcyul|{b5CyA*x>88HgGmK_?-62TmKuZ2B;SMa5Sm_wPmgh^h$Mu@ortWmSKN= z`he5%UZTw>Bi_m_Y2gOzhRqKCf_4W*4G+Gg<#7C8*LG;*r#D~RaW@!wXv3FvA^1D= z;dAE!dFYIGv2VqR*R}7+{y+WlNZ{A-|HH(Oi2Z*R{XZrX|Nj&F|B3zo#QuL`|NkS} z|EKiHm43PwHX9663p)tLYGDW0SpT!^g*w=NUI#n1Rj}Ede69+1`d8WhM>Vh;4Y-b~ z`U;aUi9lPX8YV#!hDlt@(kuzU^ec(ulwHWSc5znqYhjv(T)S9(Wz{GPvmg#Y8M_)K zVT~=-jQv#&!q8_)VGw;S8~Iwm_GFZDF9PZ-39HpwoF%m+NHb_lTCE1vq{cey*TASe zwlukE&#GV0voKCFsF-^rP+wV%Wv@k1nAM`NR*S*S0Xs#iF{lLB{2=u+OaD5KSVlh# zxc;^Ls%B}J`abJN5cstSRMQ!O<+E1$)g%qFjLqNQL$5f<#_1J9>KMIZo}AMw?g<0# zV_{O<6$ZI(8~2(pziUbhTA_`6CNzja{jfd8j=ff_PdrBbw^^)eTx@JU&Z=2!xRN!& zJEyf#&$J~uL4uyw%7zwnz9bwXjWovex=qY`^)e^c$%xg{ntpmu;h^jGDtqiBq5Um1 z2)WMzVdi=0EU2aWG{qHGsqz^$LeDppT1TTItOF+`Mxp-Rer>!BpHGpKJo)H{h2&%KLy(WRX~1_|9m7A2QuhdVYB&{ZX zHDs2MHl$6=BrF{4OX;c>Ob z$hR7!Oyk5ha=SHRJ!V-zo1T}XzG@**zX|K1pJZV17>0~`^kdf3D2bA!#=8IGl8`lV z=pG1@v`7#zp}4PG(jkR#6O!7tGd4l!5sxf6x{q4GCcK2eZhyH{(`q3@ZtFP`!&*^ z;@5kcf4m3w<30K8w|n>(iGI>BU{Bbr${pRPub933(llVN;~-`4#}K^##u@mANowFi zI1b{kAh7wiuSq``_nL&%F|SFUoO?}1#IZ?eziEmdgP-cNVJtPQX<+>(Vl^;&IvB%( zB+Ei`#jo*NR*>gYNbgXR-XW6S$hN#0;T?V|;T`^+xR$ql=8czlhX#Ms!Llqo^Rge{ z%)3o~bh)xc5J`0Q-vX|1?Up{%25)(Eo!!dH+w||C9Is_Sle;FQ22f`HmnX|uUJn+Y}4qxl?YZvg?UlpDPU+eNqRuL4C zm|Vc?5YaXTaoG}zMp2=bUmygxiJ{52eoi&{0&Ek7#MmDSNw62T{@=@Ad{ecr4&*qJ zn^O)FRO{K15E@DX%!P1?q4f9CAa_5ydU+^B(QU)qDTsMl6Yp~owf2Bok4%_!J&14i zrgCMkg}cBLP-C8{L>vnx_fvY3IA}`Rr@-qH8&(psLOA$bkRztT|UeyJ4T>`4wC=zy=MVqsgb4PDJMxTq?Bx%kF zb~fw*{=fRsMX2lCg~U46Yf|evm!Q~ZJ+Q-TyjWjspy3`Hk1u0b*ys8G$RS;uoY8;P z87*VXq_f7hzLm4tb)?oDNAFF}aM!VWU>wimPTr=tfg&0B$v(FAv75Un__>;iaf*~G zjH!yvb&Mo}*3~u-&SviP#bdUWJAIqR>AR~B#!Y9{7Y5Tw;~x{L2h{jt#L~iSc6%iH>0*yX#KHJ_4+lRKWk%&da(V>W5cp}X2;8C-fGw1Y0 z@adMYvY^%#sbFIbgkhoYw1%C^iF{*~;5JR2;sFiwHn&r`xIen6L#J);6o1?a9diMB z&mk2JNt|(pr#P=o>&XKIrkzzLA8Te1R8uzXQ!CF{y>}yG8>;M++4s8w5jPC~fQE)< zqf^nNo;eMTSwi0#2Wd*h>{b=4gt$#jKr@THE;Y6fpT z5`iwkD)n(e6wWuoR`XbeaGp{Dkz6`YZDozj5swP=oNPQWEM@~TBO`%NNrPt|E#pK3 zkBg=`(e}$zim9AP;|n|V@r4L0`9X&lo#Fva9j%4E`%Z=GT`B6kiT0sj9l>VrDJ;QY=h8;1Xe0~^&bBNAohjRT zW85m!ESVL1Hs0#o*6CS>B3Fpo5JcZ*+k=&~>@sJHogG?*Ql6BH?Vs`)W>khx3V;*L zDiV>Af~YsdHe@!7Dc5Tb@ob-{J;XEpt>U$Q^LK(Fi0~b@-%+vYcl-mr6K;>bzdhZ| zn3PkUi$A-ZEJ>>D?NAMc-M08j;o*}dQIaMQyVYkqJ7%ws#LvPg^`mN#1nH0aN{}@F zfuMli3;Mq)F1BNFeSZ)k!+}7#7%K#ldZLD_9hV;*H|>9&V;YNSSJELuK_l!P9@A=; z@tEe6y+bB$EHY|rS}ZT3PoIG*@olk3pjL5&(ZgczL)N20iTUlW@t271+I#K)hxBY9 zgNbt_^T{x-w+VUF)eIS2{&A$O;0LzktibJ&^_uV;v@*gL9UbRS4&A3?_ng8THo0z2 z>7%!&O6(U$jWym&D)wQ4wqW;-J=iAse~s`Un7}ByNgh|mclMDuSlBj5L{g7vf_SWh}+F&9s_4PRzFJf$9Ld>fp}aG4wiPc*juS>6u{29I8L z&M~}q3TBe~Q?6j2`C+pj8hK*h9t}Ep`>*&KNaa!2eTql@qtFatl}(t%1-^Zovb&)v@%ElOnU^#HEmYB=}NY z!ISC;9+eO8cmG0qwLK7$Eg$$=&xE+tC$1YLMtjpmPMp6x7kG#}ahHU!`no98=rs zo&t9%c%;DR1pEez4S#b!o(F=V2P{D!#(kUp*$|@5QBEgdlR>ux2Q799czwaS07l`{ zStb3^HsLKT_7=dtRG;pM>Gp-FQX*U^4Q%Nr+#eYjr?do^#S^oD1EYXEf*#H{6dd46 zCNF22xM?J&X5v#WgS;>0yaIftz+DRN8_he`vRc{xHtk_G-PBnDAC-yobJMs;Az0A(sC_rV2%1P`WKQ%Iz`-t>Pmcb zE%-PO+tADn3f}?n2DEkCKtER=3K9xWl>vbP_TjW)!&ni!b&9g)kdJ48YsPp7W=ofh z#K`If9z{O#to&mmG4ry$y=JMX?a-!ECDu*mVW0nPIg+pdE!>cqb?kLECw+;EfL#{Bx@{k|G%4#!2r?kp3o)rfqYE4a9QIK7|1k4P%9_&8bqIS$5K1sw=z z#egEimThc+o(d@L8UddnaL#!}4(+NcAmXr!hKXjXX#+{d9<&e%jKz79%n~8{b0~7x zNZ8}>iUl_|s=TF;9OR>MRW^$slKB|83(_G5I3ig`^`aDf$iChB*RX8EJJ5cTIra$`i#2&f z0gtNgWNDoUw&1Cuwm17nJ<)S3>0p2XWg4*QOUvSHjq zfN^AD)MYI@0%2DnjC=E@k_U+oQDDukQ+i@kK8Nu-YYKMFQ^C#kl`n}E&Z30p*-Gx6 z8wzUaQqaY;pyz>D>D5xcS`lzboGm|HoPL0G_wd*x=_EskR+K6bP3h#?EI6^w@C z^Nq709v83Q1EIJ3epWH3bo3*_6VyR~9E?F7eaT?wQN9Ib{CP?x*TGEmlrCY85hxQs z*z7b8er+?}J`&T!CN)jO$32^f8MPS11JJMHTJr^PnQJf3DDylns#qc{FV3}n1rSwK zAd0GxqPFtfM7eAo{5-)g;ox_M{vH>Lq^64IisHm6JU0X7TnO#(t*CYUoV=NHaV;S3 zN3GQRN;U*k_FTwNoSdf}fw@aDQBK1u zuIP%lZJCIh=ddB9cxzDHvs}f5ceWi*iQ4 zy@?2c2nr+<(vT}~_Pbr&&zMieS9P&{B~ulZuqANJTNir6c?l=EaU#5dV~P95#C5*7 zpU4qfMdWU-V8WnSmAFp`u6qiQONXa^ONzXG41abYyB<2nY{nQfWZ1sM(UAtwoZtKs z5f$vfJ)IR}I+2g>Tdwx(^&m}j@R#3$Lsg{RYSoybSU_yV-$QHfsw*o zV5I1Cxc#j6x5w?T1!0!f;xIsNzxs-OKgg0aPS`(w7D6=i8Y9s&2F!vW@{=SmqmbX0 zXE5qFp!#`!13p#y5LQ25`~WgIr~DxdT=EAWSj|2>oqc%y`@n4WpStbfw*^-XpTz-i z<3eCM1t8}QfhQdf)KeMW_95sD0be@=MsomJ1In$2T0`LDg`h1E0DC%smtg=c30@#` zTc{m|D^hi$r)1kuZ4i<2d|;UeagMzad=Tt-Eccy@Y4}d40|)N~Ydv_b-uj1vUA`n# zq=6?H>+m@ce4wrVGYQ+^pcw)>aSDD|!q4XUK`)%D(LQoXA&-`1BF7Oo zB{(MD38zqvf%~#hpaA7(oL#QQgA30%KUf1}bCk#l`^G7+5>5c~62gM}s3&wWfMik| zsAmY`puxB)e7szgMxqc8`*^=-D9Xg%D4huabvbB;fcj4HB1_mdT2JoZ9djf|hwJ8i zko##b??};7-@x9jDFYBS1kX8WhJg0X29Oo|)+wW82?M8u^=7xwi&?EEF>>sx0B)#o zC^RENP<{xIAOzAc0BSjSqI!teOn{e9u&g%PP(WuWG(b6d9Z>fr>;(tS5YUz-$!DOU zCB%m+(BdsX8Y@slR`66nD-?Rhm2zgJ@f9FGRvvr0mIuli?SYbYH0PC)(d&2+qmD(W zp=fp!qFz8aQu$H8Bfz^QP?t-vDxehuiuXu>mqws&jQ~f8^{b+X-M!&_I9h#tGXQDs z?+N{>m$Il`F1=(0Jy#oTUr97I3~SuedJqiul7lJ)$Y zh@2IRq1IKuEGQ1=WnUK;yNlyT&T<9Xnacahb8J+!Fcct25xw!95ETyg{adMqS;tzrf}<8KQdLV z`WzZlsM0_P(JIX-haQe0ywO8AEI29%hNzklo)I`F0{b~Q(jg(bLJA3SAL6kRqC=u^g}~o)^~OM7 z62?1J2~WemS`IzE1dTgW%1-%uLDYA|3v#%`s|tT3Fg!z9BcL0r1pb)77ai64L{WlI z0nW{nvZEV5)xY4#ICGC_ySiZ`@rp zaX-onD&`A0(T|5Fhsd>(TLQ@DgGYS`Y?$!Wteq<%`-<`vV4;faTVQ-mvo^p?9hyls zl9ZWA_!Edkz&aAF0>w}o~FFi8PSet;a@cF}!+JW+UHhUftm*G%N1n(;8i z==5*|1i-2d;PDdxtsN*5DY)cQp6QiUb*@aj!GlFjGHkk6yNwry?&6RtsO#ch6%=RV zZS(fl^qUPSbk>ji&{qZhnJCd?I|8Caj~MuXW989&CihKEEFU=>!!6x2e8{qjU=^#E zY>1joVPHVbSF~JsI7htH*X6OaH1fU?5$9i#i-G%~L}tIgt;xXW1?Gk(o?Cs8FSHO> zTRGPsaw+mZ14Fo9O&}*PzN!e(ezk-kXKt0=o z69JteP}^7-_Xrv_0{19@t0cf^8qmeSJm>r^zS69-G-&G15D6NeM*q2G+51}c=vv(1 z(1{zMNGG&#Q+FfW$W`7E>-6_g4VU#2w9;OiIcmhtLql7{*h526<2r?(ek=$;hqqO=|FtD~DD$~~SqV&yegKimK z{*qbv7YMCcQ0~j3l`qER-)jBZmKt`82;l%1NE)@9zdG%*g7#g1^0jxc~pSR=~fH5=Wc})_mp=ev^s*)sQ_OCLB~wu z&dCC6VFrDYqh}@!c@A^Yx)tR4u;T>0v092uLRLFeFfx+{BI*CQ^^i~K?E(-p~4aS;y+78>{XfI1?p%3lmRbwK;oC+42xoEbl{HvGE#nEK#y zb+TA+OgWJ^+y(Rd)WTgYDA!gd>FG6rif$Yf+)uv94gmzgcTg?PX^7xgBkn699pf*7W&T7i3}`8D>F}g^|#ZR9|5dSF>80`e~3wajlj`)vy}YvMfo` z#1Eq=P69)-@o%JQ`8U>(OqE9BOJSYQMLm0xlJegPeWqpQ^QfwBdOVkYHXN!V3+7DT zQd^Q*588?#+mT$ikvwK!%J&3+JiavxL=~#4Q)v@T<(^CB6cpGcl0-l~mf(#u0BWE- zWW^-ZDY5!5P(yUs`g4AeVdtMy_RyX&ZPg6zOH=7ZRA{SqZDk3kd{7$qb5BRXyvu86 zRN%E!dri!{*+fd$^u>t^Ck~ZLVNRS^f|RZ@xincdj?<~W&n+44p4kdfoLEF5x{o?! z{;mddF$*e>aEe#^ozz-Z#A5&z9&_-XD7a!4j6C-Ml?(Jbl8-4ZYaZwPqA68*m!t$3 zjXhrq{aXK3Zh1Nk{0me)y#lpNhebaZg&WrVmLb2d*TG}A;-tfXU+5St8ZmNmtJ7h+ zU!a2N6=-0(TyUZ^-t^P?-l-vM8|nLcCw$2JyL@FTk{XNB<$iNn1rE}|iMW5vB{S>| zcP~)jr;`gX&Xh8NG|>;bgyFj{fs)@lBNxz=cskm)y#a>m45X`HE_QSv%}^w+BjTej zkE#=Ss*=Yn>qKT|&Yt)Mw(GU3^OYN^qL6OjH?<>WIU7>4g9DZcXEMlKgEzruZe*nz zAt*UL6HRg}5qbp*e_l=*Pclu3${zQ);Lz{m7XJ=qJmKj0sn$Xi%w7hPT8Pf=^hP*A zdZK(rdIf5IUV&Dhm(#729A%<`#}$elYL499P+rMV_)0-#S=lb+X>(oKwcK{HRJZsp z`Jfy#Y?!WaJ7#35P31>H<83Lm&P`olO(}Nf7Y9luI8zo`*U~!#iW^`^U}MPh5=8|t z^RT7lkrTAt92-_Jp=6Q0aj13#;XV>#S7cJfSedp&?K8CYZNa;*C_#!)%yw~{w)1V; zQpNwQ`e8I_JKv-1C~2FaVWqFPh&e;W6%?7(K||E(Acb&0wr;wyQ?%j5x8w?Rca4a zyGl6}VK0@g>It)zfWIA7JNF7U>u!FtDjzaLslaH`ZoWy+Z@O8Jgee+l%wH+a z=8}@SU7EocO(#IMBB&O55T!ql_|xVd#dQEi!A?XcM!t^0$h~a)sBh;#p0_;_Y5he* z570+FJdMv~BTAW2%ZrpIp;xFl$7K(E7?6K>;qXR8wC6bfg~q=&{34nLhLKW3N%Bj7 zQyL-$uTgbCt{%Jv*}Di<`Gy4M4Ou*?tc-4k0(pXQ?TP@SFDRhUE|4Hg%T^Ek&Pxcm{{~R178UgF1u&oT0#$SSb~{QVzxHtB}>mu1?ewpMXN9IxDZ$umIXJIRMY529`=C(?aPWYu%dUORY z=eYA!ZmdnbSrxdQ}s*E(bv$&q&OYML5|SZSR2`AgD>S};($J1B6M${hs}IL;OJfMDNX9dW(f z3#AV7E>F*(1Oe4H`dU{+D9r&owj#s|2t;x-z^Rw2yj)ik@Bt{dwNNy`BSr(cdc!GV z$`zpW4k}9TKxjJveuXyaodC{ApnI+CCcQMY3AIHAX*zazPakpjz zuN<)-8`#`#@g{N`4p=oT}0GR`L>?=NDn5$v1XOiz^a7F37GGY7cl z%BoVVkj_=PG9`^l#g$)xcTrK1f0S|x5-~zKMQM~E8KZ&g;{94t@t~xF39)$;IxT=* zq0K?=h>sjzf4%rLSyoC#C}EYM@lXp?TYD)@n;=g>7)DdPC>*+FJj)&PL`jHcg}!E> zb0s5XW~J1%^GnpY_fQDDjlIF*HgmPpYi~ngZxQU<^xgSaDZ;>uFiJovA*glEf4LpA-L|6aSwR|DO~8pThrV^p*X8!g2ps zx&I7=Rx7_^v|1~+;RcGWfu+_u-tT8%qUKaui+z5Ed4<-htm~oEb19Tx`qf8u^p=-{k!_dH+q`f0Os$5BUD`V@f%~*Qb(>NiNWH zIG%X)uc01U{zALPC{I7ua&exkpG`pe@z7FE&J3Ey|)Ss77&y`mjlygsfL-8n8~+7@|>9LdvPmC7)f6 z8WKKd)z2LvzmbMPHLhmW6nmz=Vu-zwvQdeHG>Q^7{V|((Hd;wiV-r`6*+`mm)~J#; z1#{KUY16lT(InMzPZ~%a^QPg+xkt^0u(#V3RzPk`(i35mx-86!)`Sw*l29VM5SFc% zLaDzkJ@AS$Q2#<&mj=>O_Jt9Oe5u2qO&w*XlY3=Nx!za=*)aQD6y|~;`c8#A^%k)Z zdMkpIbcs1(WEQP05Ejh_hK8Xb$)Qc7j&ioI+MSrO7Wtq^Ir6Gmkt)x0@CVwi2g0;9 z5hfw$c6e&itTZ2=nxtA$k55!PjopWncvQ9nb_*5#>rk6!l~#0QR3(W?ENM^My2d12 zwGM2Ydt|HBzBz(cP3LB+mG_OAY7JXUSvk_kFWk5b_4f?$sacja$lAqr-wp*{N0q8` zBLZ?aXM^@QXQ;NOXM-HSxYkz{+>NL|YXr0x|J4Ew!Rw!_9dmndxej)8hsu<}usKH2IK%Un=wD!+EDKY;Io8>mb)Rp3gs*O)Fc`Xo`mVxMjm2$+3t~(OY3j zhL!6yGcnbP{8Yq%sSA^@ePP6QC44Kqcde{#VHx*a_)FN8mi({i2%+W>`pG_{;Gwd+ z8RUYh%NZeL6S`V>QMTi}t7#sON<3c@qK@B{2I5my`*^%9J-nLO#KAbBcx)!}Ru>kj zD{frh$mi!3jBb*xn%9TTWrK#ka#!Y$X=E-N8sa$y6^M`}198PUs5v~{4zAM0ZaNj> zK$KM1r=fmz;5ytgY9yAV;}Q3rd-J(=?=SH7+`AK2ytHonsBQMy38ekSbB7KWu+oKc zt)8Z|aGGEP3V*j`VB+ElGBQ;2T8uV6#)8k`N5vJ;4Ct{Szy9H*80E_3jjm&Cig(0> z+%Z9L+`KOnCkOe-Hc&R*(*h^iQyREFKgD?9jaB2+qaGFxB9P@9<#|V*qU2=b@MDIluR9l<$3NrjJciYUC1tiq2!RagP_{e6UvUx9ZN`eS)V zQEEgPjq=PRKP_Y)MGods`u#DFZjUu`d+a0DrZkRIMhix~P4X+wqFR&$aTbCk$*)yw zL7Mqd9EYi2i^FO}VvF7?o8`6`QMbZmxjn|ukH@YF1+%3i-e^Bd%1OpoglnfKI59(U zV`d`AqAsTGOzq#CY?ai+3(?+`7aGiHkdfoDUac24B$RghEqBG-Q%SddT?T zyp*@ZyN`>HgM1VhQwAUZb}eWb*DX^YU#Ess9`yu&?8wd8S$c&c7iHPQCoS45U0*%dU0fj-OUS`G$rIW)VOKb8t9gU|K+fS}`}p&pQt za*#AMoc1^de581Sic`Vu{IzG5J>|sgiGtO~ynS=?zH4#i9Lr_bk!`P>A9wohGuOY> zk$vUpXggnucxUgch=}Ior83#@T=d)w25M#z>*2Zb9%Uv+GFf<%8n+leNI#0g7v2_$ z{SFUe?K$Uzb1@)CMcd~h1A+l(1WN&7SMJ3C)oR~2GT5>Vtcm*{_x2W>-hOWP^=6Z=lS`5j-MY~7v!SlV(61$K&JjVvhmmXKf7oA>+FkSUwngD z6Mp25HL(jktle`FYhoR~*5%hO;O(A?$P?@EwSH#Bp#Y-u6XH;ChhpfVs-qle_Eqe! zo{U6+Udal4mnm0WD?|8K|gwTCOd4(|*KV;YjU~w-M#Hf{=>W<{Y^5E9Uwm(-PmL$h{ z_sn)HJSADg>n8RaoHHkO#LKpvhEJ&%4pH};lDumg5@SmF;zq}Aq}8X&<2M1uM!S7l z-DBQvS4)M7ur*j1+It5STIB0 zINE}d(Us6KJs%w#Vj%SEE(CW27=DJP9CsLaO8o9~c$e$BXf;8tmS%*AAo_L(Ieohg zrCu?#b?aCcXVfMpF(mnWec9I1;jjEE4H7dz zz>mz}5{9;2GpB9G{cMMBP1MlVM5TM^t>8C-5bjb>_gkffcCLY|$|n{9K2d6H7aDlU zfinhh-}2lw<#0VM4#Tc;{QpEl*OcRb0(_?&r<2xmkCShSYLPp3V zov0vsYszah`q6r#e0i<9Zi456ErpJ^*M(~F2U|;zyKCRHHS#zcYKMZ~JEO(I{n<72 zv8cM_HJIE9Yg7AMRVh~@rIJet-KDQ7r6H~c2t+YKp(4MemKHU zRRG0hM;PH zNbHI#Y~tY+pu!|Pm(X(oMgI1lfbO1A5AJfLch42HLdSp2-Ar^DfA$MHDv2DGy7aCc)8xR20j)!l{fzS;60onq)$2)H?(ey#Vl^BpKh5aeJ0bM-NY1UGj&t_ZMn-Y6@XQ5&ATUz?2F<0oC1C zo~1dwN8o4kpAu}AN2U`k?JFnUmu2eBW2lZkP%GPiNAzlQ zrEquNSIpRxT*%mECl`-%N*pXa z&NosT1%WwBnQ%{z^*Oru3sEcu=jaHF9)Obh%<-*C<@;V}%6Q~qJ zu8R$OCb-2<1?OuZxL?l-~_x zQ~tM#uO_0?68@QBzYnNU++#-s6x3x>X3a?O=TRyI#pd4S8FHL)W|zYGXk{7%CXX^B zQEnK7Zb$Ggo{tSTx5N3MGp;~^?*;4Vn8X`KJ-4pXbCc@Sk2QPHW-cLviwcWH z6+ED4q&cfLjpdegvx2{~R<;+B$>UHl02G_VjK65|Ni_DEVyXz0!?EEL28#QIBDAag zMb=k*5|p%^o8fb;pyY4G+o_^nW#Zjp#H2YlW6}`zjEF76tHXy*UoE2dX8f7H#(7&V zj+Zb}f2%00<=Fkqw1bVGi->0On0_@0Zf$-AQjnA(E!KrwmBV2h- zW(bmudPZ`*5FUQJnqL8dp>^(GcV--D2Jft7MVOl|k>YgD4^lDR5^-kC&@-b+!nLWO z^r00EEj6N{acP&>PN}X8x08ysiozehFH^-CMvG9VkA7&G+5c!NN+ zqsMoHib_WUMf%4^phzyN|5^@MUa$0x(wnMLcefCTSoB__F`4;S%+faiZtN(k@@T*@Q{^J_`-!QDE zH2y~b{$Jy2GSUB?=>Jaie<%9C6a8P||26sg`oAZwzsvz_)!^;JO+&c)H)84gRhy@u zj_2t|*Yfn^VxE5L=Xv^3E{4E$ZahvL41MT3u<~2nX-BK`Ma=tJ>{sI?1|oH)I;Xw@ z_A3tKl&#z(3Tq+zFRg`H;74J^Flt#6nr=RC%USGgxp=(=hpL|}l*rsdi59RKS_2`5 zXaQ5I)v*N+S%KgosJa9X0ltJ$@8XqP`}nb7IUyB~ub~%;<)ZW_HidRDKCB-L>vJxn zeMe*ZlkKLhzn1B;VwNbFL_ti*wl(`xjEk<;?B$zxEzS7xVFn~i}h7ML@w-sb%L4V6CQz;@lJ+oh^@sT28% zEx0V?5F@D=@NQO#qI4{f*1*!gL&liY0k||$mPJa%PI=0GS>O^`G8mISMMQE8Tq2or9opi6|gr=aUR zWcrNM^JJh!6-8ZvM3{S`aX*#Uw`XWC+#cL`JKvQJEyKJQH$ML(jrN4-NG%&`fKs|!|0J}bDE6quq^H9p_xmFlTg`_qn zSJ9Myc!`%rt`qsV?7AnBv)Gj46u7g4rg22o4F0k>=GOCUMv)>JkTZ4)%E1yMztw)I z>j@F`ifUU1ADbF7_~`b=&^Xh&Xft+7SIIX|Y*)x!K5Bsde!&Q$tm)X$@D7?n*Ba`i zewOjxQL_Gy?StA;d`G#9QH7)VM1Wd<)`XyFH)zom=WUq?zosY{0ou*9&q$od+&1y~ zne(Je5nH0-eq*&%V-{P!#xqt zY`?$s7G4pO9$$ER;aanYiZfpm8Y*1(@<7OP>W<@kNviyyoM2Bl!{3sJ)rz6`Iz?Q9 zlUEtirrUTe+l)e}7;6Iwb}M+#?%bPW!)yI1BatqvG5W1plqw@ z`&5gV%TN8tMa}#y)!<&sAQafk$WZp5lK!!@-uqNu6@E%6!Y6t*G9l!+SRRNF4WS%iqVBuTAqTEuI)GL#a6|bp2mY?KR12Uv z0qn~llr~cV^eVtJ7B9gq*V_mf1U^hk5GiXD6l|{9MpAk?ZM#noWT3p&OX8~F^sw=M zE*Od@)JnxLEE=s5TRH!guE5 zTi|Ei*Mb8&hnJW}P7D&7W>r(hTSc9NN6Hd%)3#1KGDjr9Glo?JG+Cses74or6zV>v zeY(LGRka^nCv{5brBE&Y%ym+yln_f4u3_i%oDYRzQnkfliIblIr(}S(H9)ucJ8EQJ z8nWimu7VPB@?iwB0=L&O2 zPblix`1OK{LQ)a-92Kd9@{OL4Ijt4r1*+TiS{CfTD&LY#iC_H`t%Z}EZ?-DvEr3M9 zsj(0VjfJ>aV*&Dx(^WXhDJwt@>Y(k5?M8?c>Te@jO2&t#PL0^qp(DItSR9=?`c6bk zwu0Y3K(vKgrT+T#KV5tX0z>O|rO_CUFpj*=>uu{>GxE zP!j1YLdZkR)sG|tw<8|gPo)58B)Fo!Wz%x0$UP}<+IGvUgxv}{Nj99Aw{lL*bDVU~ z;q!%Py_=5B6`L-RZ~0^SwyDXNI)CerbC9Ds^n%uPvtmh9xI6=u1cfsURy<4zFfH!$4fr~`{yy;}W9!Q1}tgn;2 z2NfS(Yx@QZP;mujbY0ZDiqMs88!02Sc~GYk+B^ug%y#((99f(9KAw@mYAGIfVilJag=vyROhmM51w;lSD|R z=AJ_e!WE{?<+I}2<7hu%abTXgrP>>oq<6fFr)@`VXf(Ew-{Y>QkR>GXlw^P>przWT zn<_X~j45l!EcEr&AA4rM7X6*FQwe6SggSvC-4T~%kfz0z&j-y9RFD3 zzb#*5)$mxV(fEShxI;xbFQtpWc^dJ;!3C*x~-9c>ar%;;j%jIKap5L>1%QLZyo77=U7H!-GhcBs(M3(xDv)X-~( z=wS&%FF!IZy`=EMa|;2SR$qlug`3!ashB3{{D_7JhR2$o3(gp;>X0A88jaYh{cPB( zx%v1%tLmU#uX8=Hq!zCwrXSqYM3%Fz^ zk+{RMvOUgcBL@vKKpjl#{J|*{C_Kd?b>zCt=OQ62P|M7vU4UdMiTa^@ZB?Xp2M42r zHg?M^wI<>z$5HH&mNXG%Lxv8;jx?Ba`A1q8%seQrl%N5vb3afMQmHfdUIL#G&8t;v zPivU0elSf|-7IVF`;J%4`R%z?N|@oiaftnaV7t%0eI-OfpJOj%yY_`&uNfsV^0=@B z#vc0lTmtI`kKE&WZJLqp6|kUR=!&tC`?)UFERHkBenGI^U0TT0ox>$wh57W$gPeoC<29okkhh7B!f@VEd@`d(9W zBxMcI%UucFFwNvq^q}qJ3&bxwx>_!y$aRRyh&Hq!gkU>P$GR5vmi{E< z%KviwmoWGeGtja2pX^8E`#SzhP{sH!adl$@W?7h~iJ#W0aT+ISn8isoLrwyb=4VxSHD_EaKz&8kkd+lhH9tuF zEC|BH52GNgRl}r~f^^eG0U1&eTe8D zFe0j!@M&NZn))Qv{ikXvB*EA5$_agNYB2bq{h3!`$Ux4T0V_U*CtC(`nGBdD8E_ag z&}Gg*6qo^{K0||6;E-j&anIadI3wWGhfrkrOhkFlfLE5l(>;UNVG2y<3^@2HR299J zY>Mca6h=m`h*50-Jh2SeW(lYpWFR+6uq}X}Kx%|aukcWf051fT7=#fK{FMPWDOn;# zX3)q4xGC_;s|Ub(OJgZd2%(@5#Lpp=8-dD31X>vxFzYh>gkKR2J(M8=$V?OXmB3IY zfR%tiHHG#@P;QJ09J^8>Hv?D=<5|N%r#|gCv^zpn;2fsFl}_MSlJ^1^b|n`%gvkkj zuMn(AUUm`*ljRWYnVw1ujqr^$Rt{h++bZS}a+(sTI%x`}l@QiIav(KS63ORBULDE} z4x|Vfy-vN=g$?Elj8|dsqghjL!%%RJq+LjWR$@;qzvfn8BxJY~KS(jPA`DgyKa!b| z_Qc4T(lkf7rm&lHt*2eco9?qXKFU!7!)nl-7Gt=1cMy8CY2ScWvm{*!! zR!Iv?H>)&DV!4Zz=9@IQ4mCNMp4*WRBItV!(36NTveEU zSSCO#uh zAqhNrZ^clWDvqG^u{b&s>h8gD7Pe(TpMlcrTXHOXsR+Z3uvI{qo;xhs6so|G;V0`6 zH7V9zc~JVZ?#%SoC@vv+7VX$zQ~AhXY_+z9XG-O|Qdw$1gJx)-21cK1q%Jek8*POd z=&e?E*nR7V$}`4g7y>#n>g?kC%zN-~}E@Jh-$nZY_7G($k) zfzbG=(4``5o{8f`fSwv%h)G><&5cEyF)-R5UuPYkQ+`Dn6$mbHWmu2kObOPd3UIKc z#Jxz>fLteeM*MK*4yPmKPj@7=&r+nufOt%Ra!-+lhx<8gJI<*DtJsp7eafRi)VBk* zP36P1Nhb-YlXWU#T@ISjAZtg4E$N#E2-5J-T*LfM!7b^Vdyjip@o`t$Nqyohp=YjP zE(Gfly)l)PDu?=ABjHTB-Z$YP-bo=|N@2?^D-%hTT#|4ga&EW^5xKTR(o8NXdaTrA zMn=MgQq(Zv5$=!>w}?Hccx#4uYlg?xMoo{kOq{%U`Km~^mHAJyqXhW|8ec&gZO@H{ zPlo3TEj=ly^*JJ!9TZadOnKP0!weo-VFokQ21(HEcCtsvfx3WKOn88zUq*Za-AN*O zrH2AOW5KCf@re~yNUAmyc(CQ}t=PJ*utOH&h}e7bE}{lvijE~xLh+>B*9IPoDQQCX z${BAh#c-T7@KJi?j<}Y`q)s%9#;(}m)q-tzuTX7ag&-!+L~y8z6*>#Is*jYmpIlG0 zCGb8^fND$dMGr5<5M6~}0z69+eCPJa1L`#q^Yp z0zPBHvw~UVE9e@01z(t}viVAXfsEPw-kQ0-;5F z@K&h*2Jl`B6X`=JsHx)M!U={hMii(%1#oDDXg&N!s22zD4hfKUiHg`$KMS9FXki`v ztWg`*K}91ACEaN^>dC|#j2gtse+gPM?ua-EpX=>KWhr7(*aY zuet=EED72@Bv*zFKG*brZ^S*tH=&Mu`pl&8Njp9mO((C#MWgBDv4}1k)?HZwY>oev z#+ICtQ91DpB~ZNKd59G1noI;%F%0V0^UZL-OaoZX!LiUped#85feH_+(iFUI5N3Ps z_}h|jgG}lthNV7&fq+%P7H;~CJ>IQs@eWGBB_!~3OFkelY+p^^;#s&D2!igj{ZJ} z&)D$b*j&Cr?s5CV=sa28FU_4vwpnm$6iV`h*sA~u+dz413r+-d#(=(2@g!bS&ptdt zgaQTTzEz5SOqc#0!poR1bjxpbHoln~jf z0p5ziX~BWIDiu(Jmr{)oU(NeUUHZ9n$`QPB9jK@xxg!Ik35$_6>Q6{d8({^kn5&#{ z0up}7Bb^b3YA!jof^=%A-CH1TfRExp@gIVB0$QO^--?R{Fgtjfbgr`QYBK6>t~=ZO z#2G@2C9IjtmT+WHdw1QHC*aDy7zu{>wsVzF*p=D&z42;4^mJsRl0G}X%5}TlNLueHA z`#?c!Dh81n;^)eiNr8f)v39dhW!9m8y$G0U5s;<{kdO&7@KE#(2^l7w6r5TS=0Hjj z1)9L~N`L^RKw7^d4dDTrL25R1tfpteHYY?UG$Rr2D9jXhZlIzWn*Ldr4F9a$^JRcf ztw4D!O#=a)q0r<^8HhbMg4}PZ&}BGF_zn-y?QNjk-UcH9ouSZ>SA=n#LtnKWxp*NL z@x4}1rc!V*#C^P;Lo_cAGz| zx^`4(KLv~M#tcys7Ai4gh|7^3{WE%!j1w!v`AV=U33+HG9FFY2x*kOv!%X@bncggpF`zJSk|@CfHC!dZ-l1im8RGbTJMVDyL;OkejSC!;4D zA~tK7-UWy5M?q@ji2@**O74V%1_>6*&XAJ!;-M&ZL(iK{QGzC8G zV0TCOUQEfb;Qbq+_$DHZp$ISV2pL1sC28x5dl2}6K}YLd!MLJw%mp2;pM_=3jP|{R z7uG9caYNvVy9o)ppFgDqcMJHir-)853l;%C5skSWx+~}BC*_O1cJswvQBPtx(%S{B zwj5@_uMuSP1eE=QS0%d|D~5-$ddl%}9R_5J1bqRonDA(;fFs6z>d}^@ZjP9ZsE_>& zS?SQF43=P8RZsM7H|Oak@>MkJy?|S1<7Hd!;(kU>jAqeS3yQPwA}tso8hm_zMOrWr z`^5Dk#oIz;?Szi_%p;nG!uMBNHayAkYAIU4adl^RoM<@KnQmRJ>aG=MBGau)Pu;!1 zX-l=6*3@?nN?Ju+-HCJeBI%=hUp>UT1*^`$GpS_Md zhJpa#f2AP4jN$neL(gMib|sJ+!y7CH3MPge33NDy1sDTW9IrcF0s&?Wm=UnVB2*Ft zSOir?s0;}Fz6e-%5u8jBFkK?loeK(xuMl2@A+#_;-903spm8CH1wwcShM)`=qFy4j zKZG}7=u+oE*8(9by8%NkL>dm*av_}5;i|L{4v@D8b%y9!bE!ZA3O7Lj9Si_1M0Gyo zLz)@@Azp@;I(npL4f#A}CYKUDFIXz?QJ=AFayqWu%g=!;x-i9c8i6`ZQ56)Lol2r> z3NE!>x1cFRrOGnFOrruxQyw*Y?k+Sz{Y<0Kw4l&DYP45yBJJXQP}I2UKI5JvI>ik3 z+{Y41`mYSk5AGu;K*sU8(S3KJI1QQ6(3)Rxjy*?wW2Cz7?&G|ssezigPcx2AF++TZ zg(zzXPiO)cPoum0uuoUkM`Ov4xQmCX#V>rv!M+9Nls`TX!*eqU&%Y3*?qSnR;#B+y zj2prWGYLsOR$DH~SpR698^Add;I^&Pj#B^PTEku#T)&}%MO@WhgBhTpFF;kh-~(O5 zoOz3k?I5Gg_}SeIRE7>Vjl!Qho8iJl`FVh3Xs}0Xdm$1kRsuRtsVV9Tl5jiTpOSkejK&U%@%;V3W38Nu9z)Hkx+=7iqI4ZMVUydZ0yBg6pp;f|RdxkVwW+=S1qi86e>Kyx7f6KldOBxDVT>(*kikWiduj?wOU z9;uQW$cX#1iV}0fMNJM)t$p~^^vN%=xr0gcQx#=q5(;WqarvZh+w}P_!N`pb(c43~ zX%>bwJIj|(3STWN?J& z0wjECiQ&RMy{@P?!J!m`T1E`7v>2%B7#?l0R%n4TK_Mf? zH)7-p$^`{PSP}Brft-rrIE~?j7sL4&!OJLy;fe7Ph$k+-H{pnl@lE(bpQ$m9W`PJk zg0n0_OEO@_N7y)=9U!%%_r{8gkvfc!yB?X6@(5MDBUJH@Ocn1)M}6mSQ+&vFtu@|J zlYcDVxzSPCeOPk0QZWC}kjQ;lN+jfWMTz^c6i6Y;iK4)LSZbt-jbw_#u|8xqN2l&a zDJ+!sMrZC;DJ;~Yj5_XS5v+=h#ikUKP(3qRHD?hirw9dnk$LpToNYV8q<3b4??uu~ zKB;F$OA*jTGxCb4;n4jCzq=ZWa{$9!(mpg58gMCvMCG@r2gt8}o=g zVePlVr%;6S3KBcOVTl9!IN5YQEYK)3dS<+@7u~NF7b+g=5k}gGu4rwjvc%@ePKc3e zi7^OJ+@uM36U4220$*52%tZ7#6V*jR#ZLIy-Bmo3Um5LRE$FHP6$$wmDdV_G6Hv4k zqsmU~(`G!SG3W$LKX-@)x|lQLc^4B^@as@RXQ45o|7>8saTn@ByhAD~PDCh}+D(#y%QRjD0U0dWTen}(o z0lp%*#Km@qcbaa|nJkZAewf_V$sIl%I;2jV=`Oxh7oz5g$BJCRWV|Y)7v*s}Y%wsV zVqi$da4^I`;l%KiiGi~b!?hd3<1I!TW!&O;Gs7Dp#sPrE5igUg81`(u;=YPww7>=y zZVXT1c-uU0`g*`RitgxHXO$wMIL;d+Mhb3Gaec%nvW*k>g(Z?t?dz&Q9_U8qL3(2A@fP!VKC$%-i&0&Obsl!U$u@{l zY|e(uk%Y`Be=zVGS1ko z1`DVL=Wh)T*bLr%HMsR^@M@{SyRQasoEp5SY8b&DeF7Az#HUbG3Ja?vZ5KEp>O|272ARl!Dg8w>I5t zwRm1CIqZvqdoU3f06GJWpSiCbiG=LMc+-93NF-#v#p~`1MZumo zgAxn1(37Cx9u!zHK61@@+C6t*RdTbLAkm-TYcerklPR7>3BD$imBP1B0vjU1)d(kA zazRCCMRrDq=(UED!AaY_QXH6gBPD2QlniNY&qYGTN=QO8#w#MfcfUyZx?eUbbW5xp znCV49p)fp2+bHzHU8n=|of+>JD-sgJ$N&n&m;w{7Lx%3r&AH(QPw(;xm?K3=VQM6x zoG^W7B;=%-=Hh@ooC2Mn!hxEe(c%hZhUgn9F&m5@9&LmVRVqMIDS0ZsOe3Y$(U$A!6E zQ0N)Xl7ZTD7wW(iGQ-4ZKC&PZe0!$NF^||pKVtE2yd1?jo2pk)Q8Of{W`cPw7MDQS@s^6`5ZlXaZcRLI&iQIu-=V%k!7 z^FZh5s{&i<);<{fh|Q2NK__6)oeZfOnC}|;DuOG&22AA|@RMuk%nYc447OwqMxlnj z%?LlahDs9!{NxO%f()q@q-9M0V(rp>(xa!c%#x^OZmPhEo9eZ}sU#$+EHPfH#CRNM z8R@J7s(}0Fh8cl9__p8z7Dy;bO@{^duehY~b)5DKu3v>zv5^dKFjyT&Di9J%Boq>+ z1wulJgp^8JASBdCmE25bND*Y{79cYzg4#eN&Dcq%q7=HBgDp{mRi06{WbJLiIypyY zc831XTlXq)U?K-QL*{n&j@E`;?+gt!vk}eFvtqC#_M!WH$3>qR7k%a?2^^TUWs65uh+1Zgn=G6Gf78%q-hD_rOna1YqAe%W`%qQScUPEqjjWUgE z$W5-bjD+ztL53a-(E%bn(`uA?UMpaUqpQTsV2NjLKD!GO`PUipuQSTOu00V6Gj_tN zyX@EKtI;UCK;y`PT0{PI4JrB>IAyLLjLinCo)oNc^Hv4WcBY-ca+z~D8_+QvH;FW;JGZPyfQo8QBjtXbPN!P?ej zMoqJ}vzO{_)~xNCVr^qG-rCuVPmy!iutazz*MQs5gcG!ej1gd))Ic4#iPMMW!_KU& zJ2((EICN{k`l;c$4llhLu!CyAc&PymR0HCoh7LS&TO<7ew{Z=}71mshFwASPPiqAX z^BOSBYrrtCfr>-Teb{ ziM;gMg)0de<~3xP*G#T>4H@RO=dL8dFt=N_UvLm357T0T*OuJpyA$`78<#UoE!?$& zMmUiKbE#Iq*wsiC8_D#qj4oD@vD++S>`E*o1Di#RU4d0Y#%`^Mv8%BvHWpg}oO-cN zjqIR+hlK)^9qU=`KHQzSSyoUmm(f@SyJ>efuFxE{PT-8|vc}e7l5t(u*wQIaQO`8x z93*pfW~gVHZo86@nV6xfYi8=RW~l0#H62MQKjs3vW$gmK+Y1z3S)G3A=DfLZvlAz- z5QJH{zPk}_WUieWTQc$#wNq0(MpIimHPweB9yCO9BMfGo@n5F-|aW0l_ewx8k6p zf@KyFlye&e)hn|^qwLzHqqf|^3(+Mutgo>5fsjD#x2U+RanX5Gl2bC&m zB!=B{2Tn!de0k8lF!+?9dv?q{IP~t&AS}+%dm%*Y1WBw9!sdeDd!&$YG5B&J_((nx ziEq|hTMCvMFV+_u%d2$}m#;f)JHqmPUcjHfV-%liHa3b+RE;RQ???GCKJ2Yt7{#X= zOrrQ;IWhY$tp?y*kd>pps(vl020;*|QILf!S6GWOMiXRd6sA!vO#PZ~Mc;|5wQ3jy zBKnT_s`?PWCrHvP${@T=l0|8X1y^f9n$%cw_P35I6tc!=VI;~?Uttngvs#+^DeF~S zt7WW#)v%UjNs>a-qBsd|I~vgU8pY>G+N+`857Y!g&)|4(@_0IzGUyCyTBCkax+0^y zpcWB&64hm5;2iFbNSZZcWS?|XQXpu*jNx`-bmSRIEf0 zXhE%@r;^S_*ACn+WLIkBpvDir-=ZV4oo6z{4n`)rklxnOT?vLV!T>=??dc#x=!-pi zCpBNwy4lWDDivYOo9Mt9=m?#KZmOs|r!xFWC~aynB+sD?x}&4)G-ZG!zeR)nJk7_M z77=pLU%c=PYsaH03>M?%0;&k_y)^8K9g;_d+p&Z4*x`00v>@P)OwPx{k=_7La}jhz ziaWlINE{d8CKnk-Ho^`fBS=v0tveqONVu`iM+0(t>XpHO47a}4u*zUM7(a&x+d+r^ z)Q?d?&=!$c5Vl43&qjIO#QTvgv?K3GxI2Q8Of85zB$M+If<%fP(#NCz`;Fj1 zvZ#Cr9yx;fpgqOTUEo}6OaIK$jaDwWkt1+UE+~XBp{1cCq)S@EtGmY?9g^!A2u$VT zyeyF%?!CC0lHm)?*(njg0DY{Zw{=-2GC%?hT_4C;=@=%$ZjE&CuUdoKJi#5E$Zd|y z49E{nR8iI){_1&j07o4aT8GbrB;k;%CUd`YJ`O4eI(y8$tv^>roR8)4wBa7=89LPH z1p;t16x5{KNAy*W+P&!X9G$MbRyH>;q`&l_r#zfT zlyZ2hgCOK+2CxKl z9b6<9cnBA%wl8nlT-)upgu9)J%hUod;Mcq44)ZR#1#O&j`^{~CAd7ZN>Is7!>IU5D zRovwn+v84xO~=^MO}OxhDrpGr)R=lOr_0>-Aj|uf3BTRSg{*l%97?x(+?YmQZw_C& z!bxQAUKKtg)xCGe$jzW$BJhO-YM~KflVFnx0|uoM z8?qhgZh=$^GpS-oCie+Cln&yA_dnUqp=&I-pWT5P3+|L~M4bP~Xb|LNXzE zPaF*k!#HW;AqNPJ+F-!}@TCO4c1qQt$yQ(ESBknL>RfbGc_w32MJ8jh@mM^;NIP8g zRA?Q?8ktdR#4}>6ROoHZ>OLj+; z@d~5Ac*2Xl5wJxB^;ma|1p4`3cMJuO`x1o2m#^mv`y$P9S+y0?aPA*Jz_*#oE`p$- zvvQ8<9F|oh-UPaITbBVTc=U;vE`mu0oe*It=w0g$Js}bc!cT})J1m6c3D^-NB-|Y` zLZ%jkjgZOtxDFn1DQCuka1u-ya6^Xi5Wy8h5$?DYBC#Mgg-ErdNXX{e0VgEf9nM0g z7Q~;B$@%CIatvPP;zLM+$&NnZaid_!qFvevi*_21!WqxPbA^2Hc!(r3;)9G?5#YTj zSEUHxL}Oz!AUAu8@y!>@7bsfEz|OBIdwZb*;Nw_|M0h%ELgpLnj!2wXdo~f$_ zgZO!#Cw{ineIGc-EPDk|iPr@h2gl$SW+`wM_G1jvI@7!kTezz4^iSLmE4 zLlG@vhBOcrX=DhA!3_x};0=Yq@c@BScwoc|#^8GxH;=m>Se6ma4`sY;lt+A^TJX*rtF{)*1L7Zxt zoDV83pU=%)5NhX*2s3~qgdye!w1|R0*do;(xmqOJ@t0+D?NH4UUJ&eBCc6V(dxasH zPd*NtMAEt~P3-GnZ>5(Xk4BgKm_ z=hjTYV#b{Vj{^Ta?P$+jkmmUG&1tmwGq@^y(7C=bsEZt4vElE`^=M7SdvhLbkrcl_ z@d;vffCshq@qOmMD_*UzNP)%dgS1}+xEDpdHM*IYH4lsds+oznesK91tH;0O@QMw8 zY;@A9$zL)C$g0Z6)!^e(+H8K<7AX~-BG)S3sy=tYFCVWyE;b+E>Tl`i#>pD-~sLQJ7&eP53Ia7IfSfW!BuE-M_uF0v6Rpb@{J(D4Kec;`Tc+4Vjw9A7+ zCr7N2#%~m4>gF@))+1q?pelVL30v+`AwlQM3h2B2TEHD_l`cbon=!TNfWqBt4XBK; z?Tk<@!c!aJtli`(yvu?$NMN&6-g>hVO;Kf#Rgj0JXl!|q|VMxBPul%k*HExKS2wJBj zyvY^Aer5Fs+# zgd25vtD&p+I!?PBMiKaeN4AsCNA%wh*fV4b(C0M(D;j9UP27|2@Pk$99iK-MF!)gz zDFwDaZ2VoLQ}}H4ky!Pg7A+}Hwoio zptJG-wKP8%gwUE8-5Gmy!#xtkW8LUb<}`%l!>-2DHS8bU69!76_PC#$IrAY;JQ`}i zhzrFgn{&+h?0>DyCJd9bl8lF45{Pn zE{|-HswiBU^Gtmu18+s>>^Cw-_mvTWK|+5v0x);1K?KBZV0lm>=bI*&fbu-h>Z# zmp64(36lfu@T2Y%AMh@p?Rd6FY2lReSZ0q^e2^vQln%^DXjjJM4UFJTo*B}~H=&n$ zN=J&07~qr+jX@0`n^9zj8u7wJd}l=K@kpc^9qdIy7geD;e9aXW`oS!8Nw@P#VZJjk z?J1RkN08hQ5qKOCPVgxzhdCeH1PK_GJC}^i%CJ~jF5J+eJ!Vz#40}3t7(C$Pi@+_i z>&r&e6ORNQ(&0-abVCo*nxqI>0WeHY%mGy)h&bXCjrhz&+%zJPNa%AT9ib!eUvv>5|H^*_i-VG|+NsyC*Gtxg)e?I)!Lg3&I&F)40loM?nd&5OLZDilY@_BBE1}vd&P1X0{p~5J66` zxipzf=eU|pnCaw#Xm zfEw}`FQ^RVq#4qGnL+eoFl!hUNI5i8o{Bs(I*-#l!B=j$vRUcw3&UonMsdCv-kIF+ zqEuMEVsC=wJ+mt{Om*GmmD4mWqcQ9r0{(a zA7=>FLBz+I5cY201DAM<$gmSXeJ?=(KtS3LQOG!tmG2L)m{1CnRas+GSq$?4sk(0g+-L&Gj z)n)9a*HMS|!UGPh_+8g#d=vNly9n~fNk2poIIhwv0z0!CxE-XA@zVpI48iQ-yGJ>* z3x`8Bc*{`s3b-siezmTnb3~R74?Mnnj@W`;3l`q5Jfz2g>;9gHt4xO!(OMCd4zV;( zqu$$(a2}oXFammX(&NxohyKj8k6m>TkJLpBhIbG$9>p2IM5umFdKzKdIqA8t6yM_n zUj{2Ziz~eh?L754zeG8+Atku74h=}%c{Zdj9q$ybqjONS4wVGHe4dV8gWbjOkb=Um zTk-_!uZly8D4zE{Na)k(^{*muH7C6vA(c7lLg=dd{ser5T{RbX>XPsM`~HAzGd_$n zK8g^=ob+jgeC4DseWj25;rc07`Xa9MRcPl^pYu_aGaXU_TI$dq(Y;JZ)FoTM&R6Mx zhSFnJI!ne7u5Rg;mk!Ikj=b!ro_uH(8CN_NAbeE%g(D5JlwcT!j>e@6q_|?2j{0-% zqOEwEB0?8}I=U7h4;^$0)E3!;kX#MQ zj6<2yodx*;ky%SWbTprqPc6F75>?^_qe^rSvOxuSO4rfauIGI3G4vDacHf_+ZXW>Z z2b77l-|xpI9}-*OIDG+2@uu-Yu47vPT71k4jy-qeh;xJ1=u%Wiu4MW>m6>E^(21$W zP||w$hD(daRTK744g04q?w^);8d*^h)*`au=$`XbI^jO2sdU1#pse2ai#p<3>%F)W z{qAWq?uCr8s#c$K`oR%n>GZUCPU!be`wk2EB3Na-cj~ZrT1rgJc^>6V_fDtrwiKV) z-szGpy<@g_hSFnJI!ngAQ!fo3g)A4@m8UzqE)At+(mnQcc<0f~IgE(QMiE_G9Um`| z@01vWj{TO5u;z7qX!Qhcl<_EJ{1Rt8jYz#l5iMLD&n4tkwUwTF#z4!Vb`e*avVLLC z(oom3mpx-9 zQZz<)P`w=StUBpRM6>Fo;SOr6gY%ZgtEG*gX#|v&!nrg zint{8dwdzJG`@q@;SNe1rugnr&TL4DkWk|tw9fCKjjpXPVaP=3tH=d_42P^6Z> zQqM4LNhuGCUnx>fx1OIm(jV3;qEB?vHeye7(zP)ATYq}SeXEX@ZAeXPKd9Cpu5HHE zIOBT6A?T#r5x3naW6oT62Xm7XnNQ=qnIpki=n@?>*kzQ zY>m-a7U;{+U$Nf5<%Okzue5>L+raxah)}ud=(#NK3@lg8vL~)lj-RPn@MLjXxy)F~MwVC5(XKf!rsf?9CqWob%LeX84I&#O zQBI_yZZuJ=fmfM|QY;q{nvTsx%LYOKzOLK#R`c4PH2!=*HCGg`+_gK@(jbT5AP7U>s>KMNpYZRt5u8T3l$` zgBva!mQ)bQ<6a{_T5L8%}4lLfuiDIq>*&^x$bT4<1&2%*yBKxS6$60I%>=fpi0~*SAe^--267gAuq0 zT`r^9{5E38bkg?`J*Ja>3^V_|J1?0EVCE;L$=ZKR@BIU2aM3miJ(yKc^y`qLVdhKm3q_DoJk`O`yN#mt+BTvxaMHDi7r;rkLN~4XlW%J&DB})2_C3Gm z55_j*W}I<5!t;01y$EOCNdt}JwkJK^v%HmYrNO(k-SauOqnzn*I!N^`#w3{Iwzs&W zwqMfW45i1cbe4>&^Y(b)vhnvoOxKl0kZu6w{=bEoez>u_Re((YxBr>{ZEc-hPSkJe zH~pU{rt|*ubbWPy_2fTKOke&d_UI=ee_Q{tXH@3DMr-(6v^D-+3H#gpr)qP4{WpLt zueCH8ntwBiq7wf$`df9ReVNMt{Wtl~;_=TP9bcd9Ztt9p{$qW1B+Z}z^nTS&gdRO# zJv-Yx8ZDUgqnq=dp02L%oS$xk z(e}ye!3gL8PBu43r$=T!uAXfEKDs_SAFZz*j!rf=b^#NA4eHrF13>=&JUSU29GTA; zssh>h;f7fu&UQ9OW;HlCg~!23nV9tY6P|*EbJOH%F`H(I7e9L4E|N z2TCkJ8(vczMhi!#Vq_8ceYCl2(oaSgnjrsKR@rqZ1@0SUrQ5pNx)!# z?)3)Rapm#L zH!GvL7avCN=9ZV|UaWlh-DE!7IWno67n`=K-Gk%(T~o7puaniovuo3QsNwm;<@v{^ z$lU$KXNxNz%u9?G7FS+8eEoW~@N#)HH(HuoURj)f^K5Q;wDe|q>E-K(zl}z(H=$XZ zP{EWg-ojBb-MF!Nwz|82>R$YV8Q4?Py8VsO&g#Xc8Q}HJ-3!yURkOPsU*9}Do}V2Z zz{a_{zkfa2_KX~p$z=54<>5$kv0eP|5aE2OLe1% zuUE{cX1+6cSYV%^opS;UIFeBOKf7BSn_GT+`vy7?&jqq|usWKYY#yDMFKc49@x#;6 zMzvCjwrXqHt44H6w?bF4!5BKm6hb?k zW#;g|Zu8&wGFZr8#9$$Z7%X&=z(Txn;8KX-hole)a8(FP?mWaF@<+f$2GM@Sse@ET zU>ZbV6NKjhnYJCgodvU}>h=lw?+lT{9rzstvRjByL;{iPxiNrv9KZ!?u}GyrP;d?5 zFSibrM?0W$^wTFC!^nLiA$SN7aT)zWGYuf-`4mJK&X)^UYv>oye?9VyU6xiNL%zo( zRirAIaaeVW5JJY8aqJeButT%AYM6>TtPpk{&9Zza9*@5Z z(%$3tGa>R8tf2b;X^=j%!bv0)jN_24a|E^Du;#FVxS}J*z(7$l{+HKh!Et3j5uY! z@ET7Co}J~C{XkAcH9F*V9+w}^Gp2-n=^D3ASYkT_p$hBgmP1%NbzCQ(iI(SLn9wAF z+`?coWQu+ft&76S$BF!S8bG-9KSX}glx<}NwScR`uww~O*wqwFN&d}m5X%N4DTN;2 zD8hwf(q;t2KjW~L7R$L$BINoR2Z)vf)nXF518xN7j+p?wv=PWVW=becGoD0-V>Hd= zz-2Xm;CT@*7LzWfAd?O)px2H&No*r17lEl=dOn?V*4B;k7Y>tholSlWfJ3wNRuJxa ze5KE<#%qr)#-xZ^gD^Z7EbESk9$`(AYT%1R*u4$@MQ)Y9$Sfn;7k2{k+l;5{DZD!L z)ee8kRdKCE6l9j|I>rvR!m}8=iYh!WRtTT}F@NrE`R(k;@+C|UbXb;Cd>zP%Q-;3{ zqPiCzo@Er5<%|eZbIxmAA9yy;IY4+CpCmsx&M-XwRzt9KXwZfrSumhOG}~*!s{Wdy z)McU62u-nqZjO-|@T(P167hT~@cO_bF7BtO#ujjKKV^qlL4WtCb#qociN*YD2NTyD zVq94HJtz4F*NtUjF}d%^XWx2`kOxk*0DuoiFG1Av}Aan-57|c z8POIBl+Mn;*~{IvG6ldrUeoxkiKF>YC*b`fnt>3!otV4;w32^9WA7xzgziKG_Gu}1W|JugL&0Q0C=iVi*E zfknFW(ns72pASdPhl9OgJ|1-#58EFWjdONd$07K%C5qa2tUXA5ARSx#|6!!&4;{6_ zqGMG+z9hLBF`ru!0duz-d$?(zbVNy$G%5Aarx$({zQvez-I5oGM^QJ@L(Ve}0H2iO z`}?Fd#^SOXC!I0wiX_Q0xZot08*$PmB~8+#G@if?Sy*-!<5w*Jefy-{6el|*?Gppl zI3J)bMozVvP}7T#+-J)O5Z}xDYvmJS$1@$ZNcj{nc(EnP`-nJJ zO`Nn%;9rF#TpP`kAZa&Fa*Re<(sFT+v*2h*V%5%;2aj!?_LH%cSF`2H`L<8QP}oxg zm9y>M_Aur?n2km&z5)&0hLCgDVu#HkfLK6%OV$FUiu>Yd&n%nIiKFx(P9B&Lhdh!8 z1eV(c4{x-$g7gbXCz13%qxm`a(hEkA6Qrj+ItT=o{Rt0R@{5;VMV==hxn%h+ymT(| zMd4>MzUJ8X#vVBFo0)W+Lr|kXMar*CdYv8F*w<|<#lF3qopv5$i?|&w9KHF{k&N#Q zHZKnH*V)nu1vy)ud(xYio~#5ZH(vXF=n03U0|ADcil>aL0i@4KI*Fth=q8o|g9J*K zNji?CFFDp72wo6L3oPi*y>ul4x&X;*mT%ch-$l?DIJOnrM*`i?i*P{sK%5=_^1Kls zeaob8!kAX!V}I%U@^vzn1Gl#<5Mi-&h_ZGJG;5%zoXcB2nZ5JokGD4Sk2@WSA96Yp z-s$L*C_5a1M;@FX02XkHyOAmW&8|kDM8VByIrtgvpKcc1jK0GZ`&YBCR#WY(UB@%4 zDz~p1*^qrz^?zUc>QAtX{wzD~-_*WZJ5DC)SG!%eJ~<00-g~X(_0-+ESIKyZ4DHNZ z`@-ML-jZeY%v-qLI}0q5L=_CUq`%TmrTfTPYV8Hp(>um?P_J%US+kp)rv^+ZLl%$RY(VDKbU>{MVV3bUlsNSU3?!Msfy}+> zL#**3pEZfaU{uiXj}p^m**L(-=vRX#%!)sdcpQtr++>&-pqSx&bb()HY8)sTeQ_Ov zaeeC5c&N_`FJE+=7&$BWVksqf_mkfS=uLclVwoLgz|SBz%M%}bI-b^=?tcNYo(WJ?3!b1k()Eb;y zaLLmp9Y<@;b(5uRKTeIu1!f-Wag$bV?Z5dXNi3{79x)2}j;F1l|q?t_$M# zO!eLd@!?I@Ud9S0kbp@X1@RK&mpZy(lB|*8&Do~lkn@4q(LI)L>QqoNoCOB-U|;ck z;VT%$>sjqBOL(x`jl6BU z^JbPkC%^wXLmuYkH{fFTq5+JY_FiY-&Ji*5g0jnD3ukT}xivF4H(Jvkw@X@bU2ed% z9!8IYhY`7>%rmzWYu`j}hxx%EFi^nVCzBwd7pLagmHV-&wQN_sPaR{el(S`EY3%ev z%6XsXTv>`jXUUdX|93ff)jo2WtcOcb(W}{Vq$)mgiE=K7oVNgMunO5tbge`^Ykr<@ zyb^j9O%oAOCh>#5h=?);B996Owt%W`N0iw*;U)>kT)0ZCt`XPjTBiRZt3Tu)^CoSR zaN>kz;)vS$r&{j$ElyJ$u#~I|SAbC(&};U-@6b>syV){+kySp{K6fAGwvG`j(9fC^ zSd8C*hH}eW2R5+6&DnBroqha<&%MQR--d(ewIcwx9=|##p^Uk|h35u($;f42#7w(O zG1KmA#%sJBac2_^@^Z|{`zE5_C8k}(%nftT67}LT?VBVu3CB)YCMta9G`W^hR&nC% z5P$EqsV-c)Z27SD;Jx}8DnT8fP}%aa;yJD{H{+)jF-3rNYhvsG1GbSsCoZr;Ia`L! zxAR2#(YCqut>?+SGh|vLK;e9bj}FTW)F`{!=8oS6#rMSnhsc3pZL+Xxu4#8o@{z@ zPh=Im&gV(v{R+`O?>G}hL-S<9=g9_*>4cA|Wtqf%M{GFZB?-q|ctG=H!skheAQgS= zApe**>6(NSCoIkrbY<~gxsDTbq==f!`^ zPx{x!e+yaH!pDEhNeB~Y?yk?YM@L` zGXqQ&X6CzuQ*dF>nFoW}ioU~x!CYu#2L^M#o#wz`l3C_1_h0CS-509deW6O-7fk)% z?Y>}o;1{?re5<>F{x#kLdcau#E<3ri04QqK$y@=d*TbS2zooEh(BuVecgt=SUM237 z6eAaT>$Di&%;YW}(Z%JQjI)Y#?{FVDp@{0UA|f+cau5=GC@SEd^%Vf?<9@-nZinm# zpkMQ@_d8MSwGnJt^PTxJyvu*@Mb6n8Ey=lE4&2hB0B}r+k_s+9v*L*tm*P=Cu;NK9j<52o^ae3>a4aq*@#1sXAj`i*o1tMmz9&c-=%Rpc6d@DaUF*;uhg=AoF*`^Xx0 zlGdOFX617TZJO%YSyYn3(g=o@BWBbpD_^%M=jIRkbk09~zho5;T<_qe>PNH@+9@N< z23S-^z#h@z|4&gxn8M$ziZEsVs$QP|)Kioccc-X7>lD?}A)+HUN?4^f!ivF9N>0>= zlaLd!(~=Xdh7;9@ff-l?PI@3(`BvEiwGtqiU8CAG4?El`@(bOj6IDY;!OwIQgEeq3 z*PYYZ3J#9Wx|v|v3>-%Ca|8LTu|tF1U>F1rp2A9gPiT)tc3anqV=LiaDmm%LJ?kgC z<4=A=2c7IhlAkH;_QQ`8?hu*PwVOEPq$fB!DTQMmZ++o35S>A`yvqVpo z;7mR&*(6%Z(eoVkV7SjtXZB!*N5!LQZV{_=?8CFq$uzf!j&iPsoIleP@jvrK@b@xK zOx6FdeX4&{_kRohf73KU|1TQQ|0}KT@L%ur|9ATTJN^Hi{-5;!vi|k@|D8V#0Je_q zrDmgHchXy3NOhH5NR^&`A=NirNaZl>tCsnVRHrvmS>1FaEnG*$^V` zf!Nogs+$^4KI7^)|4W*G)v9jIq;0h7mHDsjRVRg3+T`fFM(G&gweHP6+yg{EL^8Tx zs@1)2wbY`LvR7KPqLZEItGer&O4Qn9jOvj!kBF4@_eMlEqN|kZ!QsTzX! z9Bg9R;Ji#-ZDUDzK4^PPG_>X~;Snue=Wpw6rZHxah$POUZ-N?z8q2;$oHrtB#CFsl z38dss)E~aHQm{CjM_xnHW%KY6DVq*R75jcty98ilfAk{OV`Q-^e z0>>WXZBSFP^sztTuGc>7a2*Wl8FrXnBe)#Klkt?aO`st7k{U}=+T&9n=n?UsXX*nh z{#=|ryTRy2`5u?2BdiD!13P}a7BjA7f+|cBP)WqxIP(SG=0Kv&wjb=2m>X>`JY;&t zv*IX1PoG5jo|R_=&sZ{!J*0q_Yf>J9i||znVQt>jW9^X`ovpuSVze?L-d4nnglfS) z6F(?-0xaievnhyc-m7`O#bQ4AupUMEUX>r5WsH_+rzZMJ-SjZZc`}49_#mJQrj;_? zQ%|O|>vE-Bq2fx<3d5LEd~{`Lz6PQa%HO2DN8ecwv4hoAchPnYjSxrg(N zPb|{+zx>+9(1f36VvGf`0Zu7&Wx^>K?Z&?Ee4msDg!!v4P|laLH=7)z&A>nFwL8af zl|DuhzIHD#N*kc!AT22V=4XM+)Ze0D+(|WzHE0;k`Mj)M)TmmN!>}@@b4-gnKZYRl^Dk&}Ix&ZgEQaQ~OkD$TF2S;nd1CwI#I|kQ$w_iz+qP}nwr$(C zZRdZvuj;+JRb91PTeCA=Gre6q-P7NfyfqtXIcvQ7O=E4!cOk0mVzseUpZpwr>^-J) zt_r;tQEXAsUgK2oUY=yNu;jI|s8~T;enRJH@Hw$P3znsb&(Q#bH{jkL!;?DzVCC>U zVq?3a=BF*+J{W$@Sh@AO!nrYe^E#Ju&v`%Y&~k35Z!Y7kpM6vJh(O#s0UAEq*pPv8 z_EFwc?)i;SpD|e{V}8`w*^_N()IBMx<9P|gVvqT_U@gq%M}PT~w;vpQDXOqy&fTuZ zzpiv;qWa5!$Ex1yp;>!~=VAqGC-?&ieo!_^|_1z1Z<1XNGITq|BXk1qJ(Q&JW? z{R=xMAQ>TM8zbvRHNjiSGjU zvozma>lT?mQEMM}#4HA7^eWmS(h=+eNZ0Q_)ZCMtaa;Y@O4H!k4o4EWxF6K*&na}? zGo^e;#1CfA;?5bK`_>|aCv;&xpFt%)?9T&m{HMCEp8$tXsNyxiUd+(YklZM4_d)fIxd(?L^EBt8 zgzR#sL-o#453t_#duVY^BtHx}N0X$Y{k;5n+mzb-q367q34>{^LbF+uO){dLQH`Z6 zy?CX*Vls;6Cu=T;Cd8ZEqrx``)q&Hcn3UbTYv#3cERM&CTNpuIt86Z_; zJ-c<2WtiQ0{Ca!ieGT9`U7iwiLl|5lxSrJJ)c;@%IJr!i^jk^U6T2c%ZW5a~*0rTc zR9X>4qu7GweCcbd{TQhX;xhvOaH}}yv!SVc({!Ej_m|T`uuulBpAKBB_W9R`s}9zq zhc&grk29$_a~x3~rCsLZN%B)qv_JC~`X)E&`Zh=LE9SM2JofCJpsXoY0I)zg3n(pb zUjS^L`CLEpxxD9aeIcCrJo1SHh|Uk^LH!BZo|w;?#N<|h$1)Q6-PK_WVbyYYyWUIB zA#Zr|zm;hD_$I(lPbd<<&G*Rml@JIz%M%CL9(pE0RhH5dB9-ecI*QFSAM~T#%8Hpd z-c?z(6%+pDQSYb$4B5agoI$j0O6C-M5rfIuxD0UA*p*Wti z7MNP4K6wWj>cs3gS%xGoW8=P4xu>!fD`yGYP`$7QTjdWcp3{c7CU4d~9%x@^-*L&n zc4`ibx2Es;36l{Yl8sy(#2ghum3yD37}LwS&-a*MjYkXolF1DVrS2NksrG%*;hT!b z#75stt%iW~H&d*KJMbA?+OaT<2eOOVmsd42mv0-B%P7SgoluB0`EjVuXy!eo!ZubT zAy@xp8!*ut4pjuKaRzlY43%%*#bjsKMCf*A;|YptMUw5@s%I(2B7#jl?Fp3Fy_LSq z>^GLa=xT7+g+UHDYCck6dG{r%>o z=Z!VuYV0Rk-YC!5Xz-%Vc3L%S*vZ@lE-IueICl&$Sy|@=?FW%Hy>vikM9-@5RJxeINz3 zlinr}0CiQqmJrK72lBlr5YEjjx2qr*aGQoE`)5zY4m&Hvwj_F15Q4cuXy+QaO_LQr zPY3AOrt`JI&ii$Cg{)AEjP50^^uKMtx{MzRykPf=r@5`)bsnY zs)vG4NS)-O4@t*Y&5GXG8D>U%Oymp6g%?ldAmu9~^q0$${ulREf@(Q(eHGX_!)Hx( zisGXrmSZ-jr&_%lJdAm}fnnTaIrehPU)0mD+f8$6d(WGBK zo0hYdlcI_ytIwHyPfm%7MWdNDnc3iHO?iq;K|8i|P*yeNLw7Dc2u{A69Ek{tQdK%u zcDV`<{b*YHXN?XJ3w5L;$-8J{y;(;yO4Fs51ONOnMLmEdeI%zy=_4(gf=}wf)ZE;H zY41XEBYm@`ovCY4oM}wP2YP|43rkLqw8dORHzRDT>1k%A;wQ%(jNu4dO0n&j-RSod z*YlKYS+!F9gFDA!cQ8xM0HU)-#a)Z)sM=6)4 z4H5pL9h#073dla1YxKD-UH`OhO996u2%h%wd+5s)+38W1~eISvB9Cp9IwT2hPyFwPRB;di~((y26f#)imQKp;<(0 zGdq*USeM@_=K>}5Ac*YpwqrO>5^QEYQfa>!TnSKoJ}VG@K370q!w~KTt}&BNlGYgL zq&+xZ`1O5*A9}Dv^=+FoBImzvlxAIf+!n@fPn1(0Aj9IPQk3$<`n-65|J8~ZGf00T z^a))GPkmu1+8L&d1t-5JubC_7m&V6DrL37h8<&R1JUK5uI*V7PrzPGp!*>zaf}&TZ zGOPUvgzV780NL$>H$r!TnQN&xKoImfG*ZJa=N(PH3YB{e?P-RRF21Z!A#|UsUm4ud zQ3}j^XlU5UFN85w7npDZkLkvrXIrDcUn#R63muWRT&hXgwpUQ3P2)y^<*0rNf$&wfB{UEWj0y){!zzQ)YEhvJnl-3%xek z%UJa0Jv+^2E=XGs2fR*lKj#EPPC4R3+x5-zCQ7-~?Jl*j`>|Tkr-RW|L%?i}1VuZ# znUd9QNoFy3cCojFWA{@P^T1W?h4F#c>>r5kvo*$%fcP7vNSBN@7O;?H?i;xGm{zFz z`YHG`PDzA2lJ1w_ak|pw5@2m?eio;WjkA}(vH(SRxE^;U>yqm+?O(g`kcXc!tMPzv z(w&?plAW|@pS$8t$&1{7T*?QNE<;_DR!;Cm#>TD(*<;ODX@-DEjKk`G(AOqJ@iY6= z^BCh!4MNM>9F|*XZB8xe){9kN*33o?R^iFI9TymAdoAnN91_)T!p1dWPG1(&j_i~j z^P0VzO@X6q|JX}>(M&nCX?Wy0Rru1i)Ozr?$u?BE2A}7Aj;q~E?!I`x<#M^c7C-61 zPvPEoRGZKSd`blXT3cs6H;+9o?>k&yH(B2+7d{)hGk~{}IUiP}j>s(&%)Vbx)ucZzMM08QT79(eCim*KyG zy=d6U<_-Z5J?pX-ODyeXI7^Zw>*ZBOHQ0LBfi#x=QIGPhc8I=vl*!jJX8s_`dA zey&hG=vy^LqbA?AjdT&W7I(i1{eZh<->i$IsOf2szq^HMdQ5nz@2Qr859a=aObFdi zWVl3^Pp8al&oh>Eiom$-kglZ4+<%K?Sy05=L|uFB$~9ytO3~tblyu}`Xmh6uKAB1u z;?fh%WFbq2XEHM-N|$fdwxAO7-^xg zC-Sr;Ir!Zt^=T*V-Jbap`E)6yn;~-D`JOs7q)9M36Kj&e#c1syHtaUR%6Kal|p|9}2yxvm3 z3qPp02E-5PY%@qyHrr{zt|S+KPpknk)OBc!jR-`t=$+UmugEHVLWKU4AvL^S`jBk? zE2xc9_Jk8@!CNMp4KZ0xrUS3Q2Y>2EPts_YtmKPLcUAzEzbikTww%>K{}-R2=!GCw zEV1QX!K@b~xN$O_b*L+QH!0+1>%3{#b0oF%AR4S&Ngn0lmtfqVk%l93z>p#=-~0QM z<#=nR{f^GbWSwVlcM1KY%i;HjAFl8TH%CRt3i+?YgkF8lgM;}7KWPUfpZOkKq4~%c zG?6_ckli>w)}Ui`T3*&MG%LDlGM+ePvrKlv1s1P&waYrH)h4_Qch|wUnrw+b@OfA_ z3Y{Qy@1#&;CmiU!CxJr1*&uB}+33f=ZEmG-X4-Y>L;lgGxoeVNQfv+f9TCzeZPcsPo@E+&?RG_puYa)|R7O34`z zjE{y`BF(37Tb>Y@R}7opJ_34qP@Mtpx&C_$gcQ|X?>)7H#&gKA z?lXyQa3WPfC%!B_l3HMJ>gPS-rrADvrZAa|c1Lfp)Dc!Iynh4uzkg0bj)=t=lASY+ zyCKLgn zp0c0HjRTYccZH(ZP1_MFIAeT{QICP-XYLu~DsU4`T@1fM(@xX5%Ux2lDNp;rmD&;i zw1*Uw_cxDLCpcUuL@bF;tVVm9ttXoPDP>!$x9J38d{NiIrtRVDHSe`YZVREqXA={! zG9EkxPywhyFEL+b0Y?5yLY@Gz0OIeM=pby*^Zi@@4bywWB#6(k4M>bckni9vUSS_t zp6ph*1wDqwU8NVYpm(#pB6%kRp5rgNrSkF`sx2quo2z!!beUG0cX->E^lmeea}NN* zu7`>e2mF#_w2;a%`zE3G7VDYn{X|l+$1Q|e@845gc7IDz?=#Tvs|vOQ4vs24A$&k& ze_nfBTOO9awQ0z1H*2sd(Yux_XQhXf`vkL{YREFxZ6=Pn*q83r#CjH;d;+a?4l>h~|T(J|Tg_4YvitUVEYjJKN1s;LCbX(cT~qsl#B7n~py7+0XW_H zoD-A-hG>pQa*Yc=S)FP_AN#gie5b^dcA%bIwxCMjnT120l5^K4Zg~;7kNM>f z+qA#XxoBZ^_uXL$yzAwsPxkL%_3+o!`7`=dk%(Oc##l0eW=Tj_DM^cN;I1MY2bzyS5(BhPysgw7Gsi9c0k*JHO{;Ft zGp?|XYfRb0rcnVPg^2dRss~!5`l8e^C0^h{`LRtg#_vJ5G{Ebe&o$@c1Pm zlWaJ_l4Pmw%8b*wT8=|HHn1@u-~}ZDW%dvsydaA=@GT+qo{I6rAQrC{;C~|_>V`+8 z;8rRQG;OJ_*#mEww|~es8E^q<>x^jTMgN==5ZL;n#mYk7@?z(8qmDUbPX&D_mRX}< zHga(mZ@RWRvRrFWdF4ESnP)0ddv7=}9NT1gVpn7Ik>;ZPuA1T5u|!A>2edp(e7C;5 z$h-r}&8VgUAn!g!ML$unoio7yrI7gEd{%n!0X8Rcpg@U8`2lODn3)4rp1q3XkUT$R zjeFl?AeTG0Nv*rUszqx1*QBT+Ab|mHCasV)8yPq6*DrrqJ*fo!sX>V=2hgm)0)Hbd z@42>iXZZde^}A3<0_pRMd2s|bgY?Q}PYI2t)xB6dvfydwpr8r^o%kX#`6^6QY_OF_ z++~7sX(8?D*cqrvkHK>qe^1U*E3mfB zD_}AD`=znUdatD~>@rVOANX5==_Udx-xyiq6X16%uVk%hc`A#JYYua}aEBnYdijYN zJhfvyba8{;d82vjdKr{|>o={JPE0L!0j-9lyZ&b&PS=-xL81Myt#LkoWGuBG8!b7- z@Cvp3C};$lY;yYCb8fXTt1rbEc3HqG)&0k^jeJq zF8nn#Z2tE!*COskbt&;JkS!Y(G&k{PPBC#PL#5=nA5{N2pjt84wXk`o*Cng`$G3?^ z#rtSCZuG3}ukKVu`HZi>(!7JWK-m945rW$+(@~Qay}h%mfWV#rT<3^J)BZ<+(gTkjl#bQM4#Y>B98O6G?I`JZmG3JfG(Z3Xv_k^M zLq53fb2!?D`VCxr4uU&SB&Ou|3WR7eN=bMt02JQ=Vd)bE0C}c?izEU0CIRl#=|dsr zmgzBRccftSdUf0Ms*{e5Wusv_Nq;bS4^A zyO`(TvPzc1D86`6;b5VeV7Ml^`%U4~JV}Zc38~zoBos&$)()2i_n5DfrgLti)Pwau zZA&j0Lk@rr3IwxR9|RBRDNbpk|MR#}M{mwhIe~jJDckpx;g|!(^zS1wD|i{#qRQhX zljk!7?+5dFyq6?aNFrabFEt6`#Tku1GN`0DcupEbH#9Io%U>c+u223ugTPZ#H~|8f zZgz>$2!yZ~r2Zn+M^+J$zL)CVhUM2j{?X7tatiQ+GM6w+&`}}O!ZRgZEYCQ5hfqJ& z?h<(_=tr;ol3l9864WQ4hnxjfSoL{f4DsW3Q`Yt}?gQpCJ^U4JiN-tJn*705Spe{4 zt7}dyI?33JU1(DhDWOy%8pR{n@cL~F63@@Pd1iGmGscTO!`yu=-BAtZyb>Jos)nGh z75^UAVyxC`)%$vF@Cy`n{&GidLWdiy#}uUKkFtc=-0bh}YB*J3jp>xn$UMx@M$ zOe?HzTy1O^qkvgg0IyMSx1iQaUJCjwj7#B%XyG5TggrK*lZ}i}ynxI4Zwa|6e4T`| z;zf8^GBNWFC=*5CB8klGNjYCHSBrNVV~$=b+Yv1(JifX>Q6cDNUjnU&;xG10o)4`) zr!o<)m|&2eK`W)s$Y+%(dvxH~0P8%Lxf{D)f?xl#f~A4U_Do1hH}!i3{GyVRiI_6LJL0H7tzXo$JCP{@6&}-wk^9 zzrv_m)XG0c>8Mj)o4k9MLjx0+L&O{kAH}Nz*Ob)>+tYnV{ znS*@W2(^lr(|VYd{u=wE`) zh{T*)EwWs+>G5DoVri;iyeT&j0ZHdVD+^3{615?fWrpU97V6^G4W?i8bG=!{N%Kag~dT-lu?({yid8_17%iy|9P zxqq2u&b><|+6(^ZBJwXyMBKIiNUrMV)aTm>oP+!p*)l&1#_^lq$j6pR0$|ZVo4%}n zOJwgk|5epK=P*G%dY?%w=e(S^VP1k*<#~a-zx?f;UhF@{=!y|1u0^q?E$mJBV+*j{ zDzMzDu+G)!D?eZ8y_;OPTaL=M$GbGCifRHwh|J-=TYQW`+pwI7fsNU+mV3_OfjWF= zm@%&``$b2Qzt1m?99aYF7&Kg%n|#~c#awJuwZXDdJ^RJeHNUW4Da`=EJO~~^ICBsl z8-fE+wcA+k8+OrKSf$b_1$Zv$syN%pKx{541Cz54S$4U8JH&T>%rN%3`cl6{TW28A zXSA?!@kN7tcoaPO_0xqmeQIoh9GUQihBZ^|-Y<>aMYI%!@J8jjXoZEboD?dbV+|HB z@P5uU$GUJuEi(cO7KHJpd{Q+V(WhlsrukRGi!XBU5dos8Ivmk*Kp+2CDbqK0%Z4>E z$fO|Sa?1W0|2cP&HIch4apmvccB=Z!;b-(EYVW4ZCX1^eOVk^N zqiEuML!x!~GMdvtuDQG^jIXSs4Wz0jI6+i!jl{r8;jYDeZpUnerJXvR3y*i!{T8(r zy6ry_ogYt@urUK0qB7Nx4hew<2YhZ($}xZFMzEyPgId{8NhYC+i=W{Fmjbo@kL$eN zU_`+RQu|rJxWf{H^Os6?uEcC9a}ZIYztayZgc!~0A13AA7-)4XR8wgdXLe2QUF=F7 zz_fk3C%!^R+CZg%NY?bQ+l=6jNLm#%>2xIx42mp%7dqJ!by);K9s6zQh$)Zc`a|BP z^CB@{^!;$S6kDeI(#+5k`-en2UdZC{h)k|rdi|JqXn6!$mKHr;-khmyR)S z(Vkb<;s+`7{_*4qXqtjuPnw~(j~YgZ z6mlItwA8va1rC^JXmB+oaN>DnchQ7v;Cn1+B381rcEinM+2_JdqSrdw$@@$xP`oUY zr6+#XMWXH)^DlL8Z$dI1?@5m@Scoh#ZX;+pSEftSO6>3c_3OTJqyE$5s~+U-xk|#g z?kO)nRytZUxq|FkbkUPg>myD2W^A4P-9LLB{u0HDw~YooccaAoqE4R_P?_(BQ%zeEVOX_ z2Cd}>x-Z`Q^40TX1PWuFe%i=j=%f@Firyu$?Z_7DJsG{!Z(E!#0yat=W?VXEO@cjF zg#)Z#R^IgS$h<^vt+jUMpRIdZE3sk+=;5SNE#T?YM^_MAu#az*GcF37W|d0)VH4;U z8J=PVP7phJ_Z)KbnavqHZvl%Nx0gfr4OI!kqtAM~D)@TGu{Wiy+*$;o0kKz3Zbq{A zBvSTKy1>%q*e2|gsn~n?cf$;w>=vsZ%+wIr=C8BtdOd|FRdXJ%0Ydoe|P+y79!BpkcW50f@ET|TRYoP&l zFHswqXwPvsz0Eg`%)7r9!%0T>r+Zn0E%?fErnk*2=4+?TSIe0#Rj|?7r&=gwv{aO~ zlUCoY`MAP%bllYTVLPX^55%yekgxo$7VlbB%r@hgcgi1OlY9TSv18?Yqsr2d%O1|9 zR7?5ky(-#O4c%6MK|xjdaFygibm5z7(N29}MoYPCOq^@Da20E%0y5fq?WJU@GIBGL z+vT$ITVtni0c-~MgGCKDUG?kf4yhb$2OO9D9(ov;vG%&vE60@akQd7(>wT*yUo)-K z2jNbCZ--?ro9<|fl6Q*LBu>54(a3a1s6xhtgqvN8Zf%ZGcf$U7wxQHBEp)kVm`=#; z*0|9tD6hy5Xj^{G-qJ1vXor?x(4S|(q3srw0h?e`sRnv=#8;@`#!QewD)h1;iJnKt+=$miK*`T zePTYro<@43u{~Y_gS+pWsE0J6I80_>zeff3si>;IJzgsyuZjY*B=U9d)Oe{du9mUN z;E2!fr$F-pYTQ6LsnW!Zp%E-u=9VdP46a2cze-(EP1ON?X6v*z4@U+310QD7C*Rm! zM$3QR|GlQ+c^rcJ@OkilM0u10VL$+XQOpkgL_c$x+PI+8sE4${@%o3ndJsb2?n#62 zkMwDG2)MQpBEHf3uOvM2OYJc5HiWt{jvy$1mdcBU?)bEfwpy_JX#Y9ZP>PiqSPT&u zCyu|x;}Kk#K)qE7+Lfn{p1ld2)2N@m9{`q#2IhGVV$7w5EiL+ycKb$=jj;hs^p-hO zmU6T*a~}qIq_Q*}Z<-!{4_6qw;H^HFB-n}T3P0V~DseMDLve_^`e5ta6KQ{)bRo@j zyph^l3MRh}+uA)&sl7Hd;wQR0(wuoErC+p}n0HBFY0|uAOtQV6NGc}~L0e6xPbVcT zRhp(Xq#PFF_8>3rm69YfV*0SFXnxpz&i72eG4y>~JosD)$qN{u$iUoqzJ&4`?0ajL ziM(lk{urWr^Xd$P?$|2j+#VeCN4waQk?zI*VNCkH8~X?U0n03g>`!|XY^N*irq>`* zwy##8n_)8l%Cfi$k>xHlzR2LjKIyPCDlnOFM4ZXb#9@V!Lgza?@1+D?|6gtVr0} z@0nrnaC1?lr`XJR`o#Hm_T6viU7Onoos{~+Kfv_s;6zmLqh>a|<#X5pRa#+c{kadL z#V+RU_GG3OTbj8cVgEHJ`agZ6Sv$!GpZc}1R5 zxNF1>s3GHXqGF|snQC4Mp-z|;FiOQ0u+r9|GN0pW%;_$)jGM!QwVP||%|%Sdc|b?P ze(rm&jw6){#pSvAlC%jv$V=lWYlPz#*{%uBmPREy^~F{@op$Z*|L!TQNe(uJ=)pR@ z2~)ymSV0ehZ`JEuFqJ({v|ITHWxne zTr#mPC1j}Ld4(BLzJ_>!$D$`PfWIa)$S6KS5qZ$cD=xS1fL^Kobc(y*ukrHMwe-pl z1^v%x)d(eQAUSP#3T@#@#R3LQ<`CUqYMh}EVuLhDQ^lS{A?6>o3MInKUJGGeW+f^~ z#wHZ964j$G3I~~A=c7&^h!q=fsr3im<7atXx^$@^quLLj>;p@rriBJt`+49=9gJ8f z{PJksEHq6`DY$2z+_S(R+n}?9{oNr6@nwapHD}A{<#c1|qiASEOX8Lw#-laX1nCo8 zUX2AThcvnm@~;@y(FU$wGObPqcxqT=hu6W)jPu4p71AT`8DkcH)bN~-y8R$tjz1)r zu*?X$extL`jr?41`>P-bx&Fp65SEC#!D(5)If-slV1-^0s#>6< z{Yu_vfsw9(N_Hm*9*cDk#q?!b{DdDQ;*&%J#-9mG`kAoSLM<_2WUaGeW3A`|$1!b= z#08R*-JgPD#(*ELFGC&*eXC!>;fnekDvV#a+|I5z&nsftWxg_$Eskj1MQ3`y`YN7=`lpGI+OY*gkH01 zOdgU0nTvl`AC3Ix)%TOWBux+z9*(1vm-wgOY{~_L;Bl^kxbd4}b8Im}J`A=pt@Sny z2z&6)mwyenQEsmIWFffHY z#9$uqX%R>OLo~#|pJee*)K&fsM7^*Q$2Ro$FGlELxH}Vt%ga#k-}?gMe}mxNB@&Eq zWzZi(gUeW=i_wQg_|xhfKJkOtO_?eaOx0bnx;^j9oZu(KvNkdFI2APP>JBBx%< z2bH^iMZWc07H4xbMbMd7r^G7G1X5BA#V-P4ty`U|@Knx>@|9x|WoyzSLF^{>6CWm? zjvgYZ|yUv^)~{R@?-=o&}DQe=eY)b2`rwh?%=sZ@NqrHJ=n4=hVvIm)2q5 zvpcL8%Z2Ylvt{13bw-R!ix<#u)nn;xyxM2GY2Ufy3;fqqumjsog<(9eTi1dT%y z_zMO}1ndDr&^x%_k~aj>fXJo6Wgm%~i}%IkXFN&Fe7AEy?r7}}TfnSq&60IVU8)Lp z%M88jhe9KgfNijN!JIt*q@C-}XygQB_~s2a4FnCBE$V(%x({&=#ZBJkFIg|-?w7Q| zRI4YzGgF`9l>KY-`=lx1c*jHV>UH+Ye_Ra;i{LfNfJ-($Lus8Kz*jk4W{@_c8-#6l zPNCu;va;zu6&$N;bzmC3*=I~4rH#zN&N5LnJrMTKpk!Z0L41W*|$toocgPcvn8Esl8iT!J&LQMMz@!g~|6~{r|)m+t)s2uL)(>e0--Z zudrr3T-us4-Mmdc4CK@~nF_n?743G&;TO%~&Dxecp)R)^f_Lvbko^tk4iQ_1f0 zcps$=Av2)TJ<4Hlnbd}VeNO#)N=$J-?K&d>dvQCdii9bq7c{M=XNnQ<))IT(jmG(O zfR$1@oM}h=u};s_9;IXI4|+o%=A*3acY5H!1D|8f<4#X9&sTloo9(hFi!z38X!^ygej)%_$CXLMN>1`x=Pqd#N`S zUQR=0_1zsfS6@;glMK})YsH5SYnFLrXHvWMdaqV{EopT3-yLM4T+Wy@3-1;=$-qUi5s z)6mm|`2Wi7oK>4|Xs*53_fRU;o|mt4cbZMb^>r$mteYN||J(|tO}Ht`Sy*32xoK;~ z0Ki3L64J}#vrIR-t&&cqanifzkC%5?RPJ@M&MUS%d7olFz&n$&I5t9;KVz#dxg08y zvdp5aIT!e8xX_jgq!F5vl$|?2=^hLhQp$nxFC|;F$u`hW8K|l_7YbDywWSxK5fWu~ z)_~*y6;+&Dr`;;W;!7FTHoE}fl?*;<@+y$i@51oeEk_ zP0U%eoTY2O42d?_dmHwFOLmZL-nWFa^54FDrRC32L77CHhV4T3aq}o2T?j%QHz_=t zHlRi~2{DO&!|qWmJMqRG*6TdD&GI9Ag3xFega#rAu%3(UUYV$4eRk(4{c*{uWjFdOZcV%@_em*U>0W~nm6=Yt^`hy7ucKUo)JN0OrG znwLhEq?b6dN`tf`Mf6@DRmL0R*p?cKJetkMoc?2Ao~|c*7DTz*KlyEi2e=amo1}K>hyAbrq3W|7~QI2?{4TkM&?Q7IENkV-rI3_ zjBJD6?IC#QK}z7;y;Q%aSzKK`jGl{Tc9g^h%#>6Ebg=w5yp47LU1pyxno;Hfy%rJV zmyk-m0|~G_&n^eSJ7qy6`@xBcjoe{CT@&lEDG%6^8^%Za5cs;S{0h_Ft0e+A{A^Ty zXlaHUtq1FU+j2w}$Vrh4?aYTg!hnQ@5i8+~fYh4NS>%0WF8OXPgjfrt*8d8kyA4`C`!4f;`mGZF(Bblh-JgjPp!9OJSa@=F-x0^!sLso_l!zNA!VeZMBd zvR&u&A;d?ojvm0)ZTZB2jGgV-SYz)0PR70_ir%=@^BUtQteL+h{?*U^HHCaJW`8Mg zcKhlne`=1i6ZI|sL)mo520C2Ye?9VOS3?#W$=FWJmb_qPX7?|Uz5F{AUbV0#R1m;jSI6kM3f39(D*CQo|DMaDl;x%#;Bk#6ORotK^ z;u}3vL1h~T2aB(aZ?x1-?Qyf$SO4$eVNbTQptj$enQ!@j8Qz!hNZn!}DQS(b^}*cZ zvj=-eA|K-XI52jfoN-4%?aJ)f+p{v=3NJA%PU5ouA?0R)W1Qwk=RhZVn^rn6da>?B zl4Rb4bvlG)q1xA-x_$JsnRJZa_2X4ee__~Z2wz8JwoHGeIG}f(U@W&D5Yl@=iejs4 z6@yICzNWHpYxcmsX5kZ<&(-{b-Rv8=U>ckFVbHSwJ4>;ajiCHOEy#X2TBB5tmW4=N zOhP-TYhSv-D%8UrJxgbGs(bd(LR&#nx?w6I(V#tKTY+DD-vhb3nnXrd$!$*xk`?g^ z>Zz*(ZmYgS%0FZN4~^U~x@S*pTkO^dBJQp9^P9b`+C+(dN-+k#UXzcDn=3X4FOPl# zq?~!rTF0n01JhsS6!+pDljrt{f5lK^B04W(oA1u(4krbR{Uic6^T7c6eBHdMl1+={ zbFXKwGt9deTqMIND1w2-IbP#;xuKN${@*B_aB{Tcxl>k6(%6VUo`p5Kli%M&zw=pD zS3D|3@A}<-m#csmxW9r%Oi_!qX&x~c>%3`*7k(kQJv=U_mC(K4_of4t)HtV8$pNae zxxaLw{U1+oNVGVX$k&v)8z?bJqAW+rH7YjA*S^55;`zp$$uyTt>1X1iBD`5-7Ahpq zsw+gO(nVRTkf64n;n*>noECqFk{0q@P+N|Q%U)LL8>Qt+ z*Naz#{^DWE@5!9kAY_G#V_|gfv4}y70PhvA`AWPKJ8c6CTqxmepY^y1&`|+)~JSSzokAsD=)&R`j+FS7yZxC5ZNS`{U)EJ0S3xJ zrnoScOpOwCD2R{9tk#wGvbpOE9S1lYTsVGskdxK{!PO|Ss=$bs3MhWRg~IW}Kj zX2VN20n!uD`tDBRiDB$C;@#J~>|a%;5!N1UjekNADzj*vb{5ZSdAeo&9+i{W$w;4?;+}&LL$K z5hZ}X#CcZ1I1k6DxMlN^V|>!64KFMbfa&=XPi#6nn2LeXGLoh^Fb9M^{p`x_{}US$ z@3qnk0n+MMLrUo-hYz&%nh+?b>EH2)mX*P{wq5PJHW(rA#LN;=$d}#fhs`<)`fDh* zk7j@QxSC7-is?6q_pv&i689M~k`yIxH8kdH{Q}E8Oh8ywPQ|!NKS9Ffq9~xNlDEsX zQD?AI2mERe&d|qe7@86U;XS$jV$BMQI;lc|Wz^1h|%b3DDhP|i_-&jY) zdj|@S_u9J`lC+XeRd4Axe8!N}A(_v1vqS3o!0S}a;wuBY*_ogD;x?TW#IAaMM`PcBkf&@B(-J0sg<{+c zBOgC)84na`_Z9!*C)h|&D0QnZ?Q(=iYx%qc;@z8l5K-%#&u*==izU=56ddG*$^|^( z8cdIlsg5c#Ee9DNo3V4gPlNaMQ491Q{%2!~ECac4e6qhK_lU&Tx*c1@!&+ z*IU^gxft{37Uq#D4d?UEMrF!OA-dTv)g$7ld#VI|G?TW=&TzY7UfY%XS7RE)rWkX- z;SRQFRs4d)ZRbQil0^Td%&%XD91XKD7y_TRy92$;^{18ytPIYwnyQvaIMtx~Lc3R# zDjs~8;Qk!TSn?po#SOXAd#oMzT^^wWjvBA~t+asIlOD=3nGgtKDZz!Ck0Y?FtCimm{f8x44@*v?rZ1iIVb>aN`3p#Fgn zts#Gy`vbt9Ci?zJi+$DS!pbR?1_LkBWn}E}bALH8wD!oG?I`C8HUmD4BtJS%H+;-L zYd(q731Wb<@c~*?4IZ_xI}rOmQ{MI%0FVC?sk@#nKCTxC{PX&z$^dD4O%cET_FkxU1V|WICiXN1og&dUQJ)wE{A~bP z`ccvOdbetFzyhE=C{}x6IqFTyQPMGYFbHZ9esT{R?y_#J&0NIDepOx_Amu1ir4@=% zOBA^a*TM=hIucLv6ppbdw77fMi!hH3`p8|KqfHMJq zmQb{dU(`YBty2xN&vdzGf)+5`{|CiDI=^PJ6@)Dc*lm_05`{7}00GNLIv*af;HBX* zj^I$Hfst^5=_Y-A1=n+}d`<4*!FY|RR$o2foQKmz94mA5pOIn1GO?=KGqEl+9I%JZvGUTfLT)+kQ~Aun$G`LR zj>y4^Eo>YQBXY1hH59ScA%e2?RsQN}U$uw#Zyl%Wt9#xO5t~^aler&BU*9;wC2JZx zCQ8-k?hhEAa8e3Sa7w6oM<9#7qSB#tA;;wd z@6sBDGaCUSbJ_XiBS0(_)kQ3OeiT)u)(v5EaEQQw1+x1{E8dDUvEr?` zk0TNi=c9Hcsg^=$E*ghIRJ3R&;X00l zM4N_S)oisPv$sH#JeSu~_zwqSg%`;_)iGzAm!ZaPIFP$ce(OW=3Jhv9!S>B)nNgb3 zH_v#dB*v6GQ=-+Kai*mLgXfHkmMV}H&Nz610_$^#Vb25Xaa>ePCT67xixZ9Zlf+eG z#)Bs?`+ta8A0Vh47`h(3x%H4^YN%X-GRtWR0XHyEcki;G`Q$b4r? z%)hpqaOqaok4`bUCix_ihfQ?T(&J6HmI zh>oQIlsJ$?sAr_FJQnwoU#`x*JvGQKVjf=~?ap|C;mI{)^7AkqmM@Q3Q-zmWICNhe%t8IjTTY%_}TZ=)!GqCtDis086b z&qz8B(xD)Q%vENS{537V@w%fAx3=}3TvXApdrZ!#^0lXp#RFLrALLGmBXy7b20u&z zUa=a2>$^M<}rpi`@A--$CP(nn(=NouY%jnjAs*GL3`~^ zknURHI1-97Y4=QE9o{Xkc4E6s?K$JQW6MAm#DQ$79M@QV>x`a{$t{Pl*kZ)OGv3<) znizh9~j#}~!$tSV=z{4Evv&_%E z>-K((SHt;aXG-L=wh{QzC|p6+BPPeAp=mm-^p9f<7|suC8?l@)zs`6xddKg*#Hwx> zcQ=zu+_EHYWAY8l-x78G#P|2~0jr6W85uc($ykc@rVwxLdFl}T);6Ygg&QaMD9 z3*7p++_E#1vkN;M5`lZqXxdSJ?peu@-`85DdJ1|c~nNpQG~GD;qZ z%{Xv3nHSDX;IAc$cP`iECQ#Tbt66Rrn?U2jGqwX&;xN`c=T5mwJLqMkm28v$>;g*^ zDudoT?l1)ISG&Z0up-}ic1XOt&;1^OOIS}%+$YW>is?B|)gH+i+(R@V=!LWqd!t?t zjPeEp6L62SJeu=}Yd#mHpf?X8p3e=OIn+z!-9idX_+#mwBO;|~_%bCoCi&Zx$Cl*p z8F3d|9u+RtYB_Lsq1=1KDs;S2i>$;Gl1~!3Wu!*G7{wRVH%!j&uJ62RM1`|V*`>u| z#A8R?pXH6r{aLJT)H06F7OIVy46TL~dwHo;FQ+lId2v|Yu$fQH%1vNaCOLk-stwH6 zBtIhd2Us`R8BV?ntPt|;E!I;!^IrCMy z;-h<>JSF5k9;mpGx#*Yq(63-0hU5P&l>_po;EMN!1*j9t#3^usSgEV4yVgo=TVi1Q7&dA|1x#Cnbk!l}2dRmyVz4@LtD5oT<3hO0PoU%*)Zca~fmFw^i=SG}|uY1m5w| z6OxXDw2Te&-ead+F|5TI&UD8g4>Q$I)Rlqx9A!%3PSAXc9gSSIG1@B9IU?Hc? zB!Nyvreli2xiRlyIWKNVTS?x}1C1zTj#f|0(|h2kmE|h`_Hl#7)0N!k@&j)wHs32R$vhIm(tcy^)d&Y= zk1(AA;a`Lb^EpIv3@nQblZQ`00-%a9c?uIX%Qr`^>l4qE2-2s_q5W%lT3gTleNQfT zKgLgaSe$+M-Mvo$SO&g;V&2E)YB8YwD#?3)px#2}7!qjFBlpZRa63Crc<~pHEK?s( zK;5sS@Z$-N&hcM9euWb7J9w1J%l_^Ud_ON1XJ6z>|Hx-vD9>y5y*%;(3G?M?%|956 zJAk%CXZ{rZsGk>+7)n)C!m_hQGxS>hpfZ{o^Z`dTouQO&j54=u$_IsII27{$hw#y zb^Td+y0D38YsLY6Sj^0Vh-}3;?$^V!WZha`rOm&q8XHRhM9FCNM(%%>>14aHi5Lf><{cfx2{5+y=c=o2t{cd$N z=y%&ye-pP`)d2yICbwJvOEq=X^=&I!+3C9PJ6)+t^YHjjd1W$Xz&6T8udnClR+d>FBp(@FS(orIm|)O9R7 z3bI2dI|*gI42`t{Ek=Q#`;3JIpE|gymV{$2tf@Gs_x>8e7&tVDe+BFZR3A_TxR=$5 zOQerFJ>;^>7%?I7e-2TphmoxDO}ONYXgo6BnubxVTK+$Avq&xl7F63Qt;n48}t21Uf34#}$w8UjslIAhkiP2$k_3a#U_MDG^)IJ#5{ zbRD(Di|fs*vwSYP(2xzMNL~oq?__wLPxGUIUBtMvPRdSY1Afhvn0g<(-rh=Fl}Y}n z?0Zb9kIUZ2l)7m3c$1{<=-sh`o%ncoX0H)>9BeuddGWGWGbK**K+arzU3+#De_%!x zlgA=Z;={7@J*6&KT&hXZbTlVeysC%Mgid{ctv~n*o*Wk4JX`kO*&dXmOZ z_NX0`tR4HM+Ho&-RtVRQft(YTbC6YO*C_y(QCCM^yr{l=>AV?W%Y0qxeCLV_cbEtZ zuk4CTiDhS8N=zMQM@&b{y=zB-;IQB=I|^KZ1$S9W#mTmm;rLm7>k>5K)$q6L{FXs` z_ktHMyWx%k@8Xc7Z03>b+H;<`uaf+E*>8Ci=x1^l<53`Nw9fNU)6rOK9q3;~-)`z( z>455Aawy4XiMu7iO}+#PhnqARCw@MWOYt+Ps5r%>4@@P~cGO^Nb4I^;c@d=`*P6sD z4=LtH(`^oy2pQ>ABsSPI{)ib&EK{sdNncl?r0S_Lr9mRvpo~4`*2+p}@ES_m zsrvY7!T8IYX$wZp^aTf3hvR$X+%C*JYmWzTL( zoaTLsxzp~k4`)|~$qTJSDf7*d~SXOno(ywNFa zj`=`4pY`|5mEHLrzhMr>-v3sFV4ZY%ICgd>@}!HJjgv;=?2z%a!7i29cQWqOvw^St zH2=zDFjfqj$iF*iVOsDs{$SUsG2^r`=*0vtFiu}UZ4N9C8~O6E9zX4YkYJ~;SeB*>RViyAf#M^`s zlDi*!Us{3Qw=8c7ylu&|2fbhjb3@>5OTos6x!(=r(OIZ~6ZEP>ynxc2w$5i;9$w%$ z8b0UhI`OWqE(LpA;o)CxMk#n3QF!xFTT#jhrHr!_-1E)#5>ob~6#S|bepM=-l-AJ^ zm8VIoPbp;_QvOJdliWH68J!3@-7A`A{6-a|bkF{Z79|U3H%MGP{%u>iBWi@pukW7%8YO3V!Z*LP}Du zX@Do$0Dq;4G|46ss=gKa1|_YYr<6%Z`C|$sskKmG7ombsT~31}wN9&;`zp>|_JOeI z7pN3ORj+ecA8>52v8$N3s3UXfCX3lFPMwJLD*f6hFn_K(bd)dfG-m+&t9vOAf;!9RJ_ijD&V`+1rPZ{?)k7J9@Z_kTr z+G`JyGS4txSm27q_I{F~zh{H6YeSCWLC78UT*_kRwC7UhStw^0r93FkxJf?a(9j{U z<;g2Or<8F>$;LhcSHAB%(1OtB7~|Xt-I_Wr$6}nl=sIt$rRYzC7~#%euIvtPjjjww zc5!(0t?Sckhn6GDXHoQpz3;*yu(fq# z!09q(e?1K-*yes6a=)1}!0$bL0s6+v;sC$(;S1;y9N!M#(g2UM0e+W7xw;g*Z%Mpx z$>_#q;SnTWx#ARxjX))7GQbEYA?GmVEUFD}v=XnhajPwOiNs5-{8%2~K5?7I9M!HSaB@X5RUH*L)v1TjT7-AT{gzf~HqIn)^u9V%(MuR>j;c%l$vpO|WjjHw}Ez zezBY2p9HEs4gVSb_$1^H13*v5e-^rK6~lk70ROqw^&S569sctj{_`FF^Bw*(;XmtN zjQZ2pksUQT;V@Gr+!+`_|Lb*Y1SGu6M`oXc3|D)%lI!%WNO=%0C)%hbDE z-sD|w-z@Pjr}qa3^W_R1%$EiJHE-R`=XWC)bNc7{=?VMyu5~rPuz&4dkSqGpMdEud zKDA0#b=6hCp)7v$ziL2MZe_1(*=pS=E$XW7TB(|**Rrc>S;t(%@>9iFg5_`3_pk(e zzwzDRHx9<73-c9^{=ZQLfBo+fXkDO3;0SO27{hCspKuvl7VhUfD9z`=Zy4Wx9tzIy zx}QatacyaRr=*%ro}Rp$I-G<0`lRUH{gpf)56MSiot)0E8KJKt@2om=QS8X5<2)kQ z$UzGM*vJp@f^n?QPRr_&5sOlh22vwoK9Xi#m zG7s(*bii9>Jf*C#j_6v=Gfmb5&b5iGga?cin2c}H;(wO9eOhtmNg5ojimiYZVtY3A zTqwO&mUFqXR@PEK!6MWqnRCK zrKB{WGJ{$ZcvP%2p%Pqa@`J&Z(fRkUa;UAQ9%@y@RninfCI`>7vc5ah-koW0KGSw| z-aMc~!X*VJ9y^Wza;|d+2{;4q70j8er`qbvB|^$&ba}i84PJdsoW*XdJe_;7IA6EAysUugckotYv6p zKuDEo@mgE#_5k+|A4M{7633*iLc3VW=s4};p7H~Ah>Qq_SRV;B{q!3S5gW+U?Pc3m zHny^9Z~pmSh+%>g)2^>$w|HFlr=0A~L&@@a-iJMvkLGwiV24^C2sQm!8(dJ)G32wC z?OEBx%5DnQTX*d2zI<{p^}#JsQ*b8QOO$U-dUCYpxpkIY{kQi#T+c4J`*etAVK>(I zew+E;4hWMH&%=c?_ z+_EwvKN&ObBY%4Q>QAr5W9Qe1b>8=%i*$!e$vM9xM6YX8+ggYJw&(dtXsMF4vk7;&DJ@d|@-(qXL#i>-8Z{KWH`p-I){+0Q0Z?gX_ zE-rp*^pBYUr`rF7Hi@mb|4F6(&B#>M+}Z!`?0h~ zGn$y@Pt3n#wTThjMsuPqtt-=p$Y#3kM5-=Qp6G%}uphPwil(4IQBA5r5wg353I$)X zphdAg^QS0MRNZz}-AW4t<$o!mYpF%0n^x+sZM8E0)8?-pe%4C1O&_UI#HX%PRo4md zGaQTG{4bz+*P^bQPS%y^O!cDgt4gH=Mz?Kk8DZV8t~ZV9d)W!8 zwd$m5dy{0E)2QA&KnWpK+M>$j>FTbrEpoq15dhd~lrZmBRdug*BdS(ceG4a%Mw@$H zR8ysUA)8M3*dqVSbOCfvZMvyeS}7@HYuce2(V9m!ecjeFX;I&|bzk*xR5UH}zf29v z^loQPLVc~xMYFF(XTEsVng2|CS}Eh+?yE+b9&Buj{I5#%!u+FdO~Zti04vs*e$(1C zxG{ZXs!#h!ccQPP85(Sn|J7D~FFMl*RhuK4>1%BUO__H!y=AHwRU?uXAvLe;D%&FW zOPfNf(%5CDHmLyBOqvl>P2Z~C)QnD}OdSWLzfIrRdi*c*VsKDwL~Xj&tiwhk&D0RG z>dcgFI+$N+U&9I0RA5Kn|59CFb!~522ZPjU@I#a4AX8V;Ji|1{OsS}*y6=@4Y5?vr zE%Lt_(^X~?HVq7V*LTqST36=fWT#s55YyVEMP_8|!>r2E{WAa6W{8yOG+nFSG^#d} zM_1BJNi)ql^Ule)raPtTzH6~X{#UI!GYzzae>H7W3juv+K8vQU@a0uqr+w6Rsy6#s zZ~Mso>diDX1FX$EDX6k-%rKhD%mnY7*31TTbdTZWv{@J7jV+v<`z2dhnHtU8bT9*< zF)eg^XGTFw+0;^2NsAhDWe{eV>=)vH^?+<=y2AXeppDY38jb1b4wi-JubE<32NTz)atu!4cY+t)y+FX$YXso*yC%5@3nhK_YnN*FL2&T693o&a= z4U3&!AN{Z1e6*%HW+~}l2Eohrrt77d?X_7;RBt}VbUxxR)ZpX`^U?i6er;SAWnG(3 zLW1hcbW~%O03hRrjUiqiO(V@JQ`tW9zszQ0+GD1jDJ;xVXTDbR)@D{Kvz(c)S(=t- z>mw`-rtfHdq+e!nG;2i*TM^7ZGySCK%*N4aWoCz2o6MYyM_)o9jTu-w`tBFtA)2YI z%t|lKMq(BLr9>qJd_6G!jqcJF+sxw1tjDy9_+PN>n}(Q$$h5?~lrSrH1E7oM>oJ>% z+3ULImjE}KMw_+NeA4#YcfZUx+0>o+%6oX5wlN=<+1220GZoBIY?imIugzlGR&`@n zBmc`xO7oKDTQgHZnMzDgnN`vp3(V`9znWGjkd)?g5Js+Si~O(NERWE--t2O1-8P;1 z+7;+e&4X%KyJa@|=4H+6OYmriZ{PhgpM&XgvkaLQnu=OeT$u$$n7L`begR{k)14oe zg{rCT&hLJ~*4Dy~ChNwWOB75BGfNvIG;eB_QJL-7oS$BNA3y!iGc)}x=uUgiVsBP` z-<$p4HG4^L${)6SVe%Bi7o}&GFAb(G4Yn^h@U7@gM~Vcy+X@5#tmxIEr3-^&5yumO z3l)S%HEZN?(?BRz15QFU043>Xju!_bQ)|duW0dtd1Fu8!*5-n|i)t{qX(-bGMo<%Y zUr!xDJ3`c3CL*xX)sUcHaX7pWF4(!*CT8~o|2+6OZU;|HSkTvMJ<8?vw5(@!%$!gS41rkiv_{T;L z-iJZUmyY9BEtFh!YOqz-M-J3aE({Tx3bJR`2Oh9}j?9|%p$mFlbAYU1%hZbw1`lBX z154gRkDwRRop|UxG-#;-G6ynv*~rEDm`5RUSo47Si51loSkADB#`)c>*nDEkOv@!! zEzunH$M#>SW~0v_y#f zsh>DlQ2m(P{m>=Rb5NZT77jGq6D(PnVT+K%q-!bv_e{?IJ!2l3fpbFP%?y|mNR}S5 z=+XziQEx~(;Zl7&+Uo)>czvAFf+ydKhRvga9j3vJ58aZt;wg@BMKv04>%;h~Ktpzo z{txv*oP_*S|Qlb=ZLQievjZ2`C+|x{JbA>G1q40qS0P?s@8Q z1VE2@6SvF0+`d!sL#fdfwLXfI(AB_9T9~d08RI!aV_k>`&~hX%FyvR4w3Do2*(!BZ zc7FHi$H^*|R`5A_K$TXon{uJgl+hjiyn0Fa(E)bd*Y$-sl*UL?kSY$Lud z$65IFuSuV!6?{oLU8WVBr4;HjWduL}o+||!vIOvCoF$zk&FIr+B=ID9J1>$9{jIiY z{oK=F!9_qL_!k0)pOD`oUVdKttuSLDpULUUXDmv6#7jPtvyz+IEHWDU$+$&r#scHR z8;`@{md@N}oji6lUgE$7Prr$GABb$^C^NeXUkO!1B$ jlqZ}LGFEZ76r-!3MkeN@d-PjM8s|NS@7myj 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�s$H>Q0(&+vIx8JpLNunalXOvmB^|U~ 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