diff --git a/Hadrons/Modules.hpp b/Hadrons/Modules.hpp index 14a0b6d8..34ecc63a 100644 --- a/Hadrons/Modules.hpp +++ b/Hadrons/Modules.hpp @@ -56,8 +56,6 @@ #include #include #include -#include -#include #include #include #include @@ -65,7 +63,6 @@ #include #include #include -#include #include #include #include diff --git a/Hadrons/Modules/MContraction/Nucleon.cc b/Hadrons/Modules/MContraction/Nucleon.cc deleted file mode 100644 index 304ff07a..00000000 --- a/Hadrons/Modules/MContraction/Nucleon.cc +++ /dev/null @@ -1,35 +0,0 @@ -/************************************************************************************* - -Grid physics library, www.github.com/paboyle/Grid - -Source file: Hadrons/Modules/MContraction/Nucleon.cc - -Copyright (C) 2015-2019 - -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 MContraction; - -template class Grid::Hadrons::MContraction::TNucleon; - diff --git a/Hadrons/Modules/MContraction/Nucleon.hpp b/Hadrons/Modules/MContraction/Nucleon.hpp deleted file mode 100644 index 6c1633c7..00000000 --- a/Hadrons/Modules/MContraction/Nucleon.hpp +++ /dev/null @@ -1,214 +0,0 @@ -/************************************************************************************* - -Grid physics library, www.github.com/paboyle/Grid - -Source file: Hadrons/Modules/MContraction/Nucleon.hpp - -Copyright (C) 2015-2019 - -Author: Antonin Portelli -Author: Felix Erben - -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_Nucleon_hpp_ -#define Hadrons_MContraction_Nucleon_hpp_ - -#include -#include -#include - -BEGIN_HADRONS_NAMESPACE - -/****************************************************************************** - * Nucleon * - ******************************************************************************/ -BEGIN_MODULE_NAMESPACE(MContraction) - -class NucleonPar: Serializable -{ -public: - GRID_SERIALIZABLE_CLASS_MEMBERS(NucleonPar, - std::string, q1, - std::string, q2, - std::string, q3, - std::string, output); -}; - -template -class TNucleon: public Module -{ -public: - FERM_TYPE_ALIASES(FImpl1, 1); - FERM_TYPE_ALIASES(FImpl2, 2); - FERM_TYPE_ALIASES(FImpl3, 3); - class Result: Serializable - { - public: - GRID_SERIALIZABLE_CLASS_MEMBERS(Result, - std::vector, corr); - }; -public: - // constructor - TNucleon(const std::string name); - // destructor - virtual ~TNucleon(void) {}; - // 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_TMP(Nucleon, ARG(TNucleon), MContraction); - -/****************************************************************************** - * TNucleon implementation * - ******************************************************************************/ -// constructor ///////////////////////////////////////////////////////////////// -template -TNucleon::TNucleon(const std::string name) -: Module(name) -{} - -// dependencies/products /////////////////////////////////////////////////////// -template -std::vector TNucleon::getInput(void) -{ - std::vector input = {par().q1, par().q2, par().q3}; - - return input; -} - -template -std::vector TNucleon::getOutput(void) -{ - std::vector out = {}; - - return out; -} - -// setup /////////////////////////////////////////////////////////////////////// -template -void TNucleon::setup(void) -{ - envTmpLat(LatticeComplex, "c"); - envTmpLat(LatticeComplex, "diquark"); -} - -#ifdef DEBUG -template struct DebugShowType { DebugShowType() { T t = (void***) nullptr; } }; -#define DEBUG_SHOW_TYPE(x) DebugShowType __DEBUG_SHOW_TYPE__##x -#endif - -// execution /////////////////////////////////////////////////////////////////// -template -void TNucleon::execute(void) -{ - LOG(Message) << "Computing nucleon contractions '" << getName() << "' using" - << " quarks '" << par().q1 << "', '" << par().q2 << "', and '" - << par().q3 << "'" << std::endl; - - auto &q1 = envGet(PropagatorField1, par().q1); - auto &q2 = envGet(PropagatorField2, par().q2); - auto &q3 = envGet(PropagatorField3, par().q2); - envGetTmp(LatticeComplex, c); - envGetTmp(LatticeComplex, diquark); - Result result; - int nt = env().getDim(Tp); - result.corr.resize(nt); - - std::vector buf; - // C = i gamma_2 gamma_4 => C gamma_5 = - i gamma_1 gamma_3 - Gamma Cg5(Gamma::Algebra::SigmaXZ); - Gamma g4(Gamma::Algebra::GammaT); //needed for parity P_\pm = 0.5*(1 \pm \gamma_4) - - std::vector> epsilon = {{0,1,2},{1,2,0},{2,0,1},{0,2,1},{2,1,0},{1,0,2}}; - std::vector epsilon_sgn = {1,1,1,-1,-1,-1}; - // This is the \delta_{123}^{123} part - for (int ie_src=0; ie_src < 6 ; ie_src++){ - int c1_src = epsilon[ie_src][0]; //a - int c2_src = epsilon[ie_src][1]; //b - int c3_src = epsilon[ie_src][2]; //c - for (int ie_snk=0; ie_snk < 6 ; ie_snk++){ - int c1_snk = epsilon[ie_snk][0]; //a' - int c2_snk = epsilon[ie_snk][1]; //b' - int c3_snk = epsilon[ie_snk][2]; //c' - auto Dcc = peekColour(q1,c1_snk,c1_src); //D_{gamma' gamma} - auto Daa = peekColour(q2,c2_snk,c2_src); //D_{alpha' alpha} - // DEBUG Just defining a few types so I can see what these things are - //auto Daa_debug1 = transposeSpin( q1 ); - // Current compilation settings tell me that FImpl is WilsonImplR (see FermionOperatorImpl.h, line 163) - const WilsonImplR::PropagatorField &Debug_q_1{ q1 }; - //DEBUG_SHOW_TYPE( q1 ); - // The propagator field is an alias for - const Lattice, Ns> >> &Debug_q_2{ q1 }; - // So then Daa is one of these - const Lattice, Ns> >> &Debug_Daa_1{ Daa }; - // Which means I should be able to do this - //Lattice, Ns> >> Debug_Daa_2 = transposeSpin(Daa); - // END DEBUG - //auto test = transposeSpin(Daa); //Does not work... - auto Dbb = peekColour(q3,c3_snk,c3_src); //D_{beta' beta} - diquark = trace(Cg5 * Daa * Cg5 * Dbb); //Daa transposed???? - //diquark = q2()()(c2,1) * Cg5 * q3()()(c3,2); //Why does this not work?? - auto temp = Dcc * diquark; - auto g4_temp = g4 * temp; - int parity = 1; - c += epsilon_sgn[ie_src] * epsilon_sgn[ie_snk] * 0.5 * (double)parity * trace(temp + g4_temp); - } - } - - - // This is the \delta_{123}^{213} part - for (int ie_src=0; ie_src < 6 ; ie_src++){ - int c1_src = epsilon[ie_src][0]; //a - int c2_src = epsilon[ie_src][1]; //b - int c3_src = epsilon[ie_src][2]; //c - for (int ie_snk=0; ie_snk < 6 ; ie_snk++){ - int c1_snk = epsilon[ie_snk][0]; //a' - int c2_snk = epsilon[ie_snk][1]; //b' - int c3_snk = epsilon[ie_snk][2]; //c' - auto Dca = peekColour(q1,c1_snk,c2_src); //D_{gamma' alpha} - auto Dac = peekColour(q2,c2_snk,c1_src); //D_{alpha' gamma} - auto Dbb = peekColour(q3,c3_snk,c3_src); //D_{beta' beta} - auto temp = Dca * Cg5 * Dbb * Cg5 * Dac; //(Dbb*Cg5) transposed??? - auto g4_temp = g4 * temp; - int parity = 1; - c -= epsilon_sgn[ie_src] * epsilon_sgn[ie_snk] * 0.5 * (double)parity * trace(temp + g4_temp); - } - } - - sliceSum(c,buf,Tp); - for (unsigned int t = 0; t < buf.size(); ++t) - { - result.corr[t] = TensorRemove(buf[t]); - } - - saveResult(par().output, "baryon", result); -} - -END_MODULE_NAMESPACE - -END_HADRONS_NAMESPACE - -#endif // Hadrons_MContraction_Nucleon_hpp_ diff --git a/Hadrons/Modules/MContraction/SelfContract.cc b/Hadrons/Modules/MContraction/SelfContract.cc deleted file mode 100644 index b89d55fe..00000000 --- a/Hadrons/Modules/MContraction/SelfContract.cc +++ /dev/null @@ -1,7 +0,0 @@ -#include - -using namespace Grid; -using namespace Hadrons; -using namespace MContraction; - -template class Grid::Hadrons::MContraction::TSelfContract; diff --git a/Hadrons/Modules/MContraction/SelfContract.hpp b/Hadrons/Modules/MContraction/SelfContract.hpp deleted file mode 100644 index 3fe8bcc6..00000000 --- a/Hadrons/Modules/MContraction/SelfContract.hpp +++ /dev/null @@ -1,147 +0,0 @@ -/************************************************************************************* - -Grid physics library, www.github.com/paboyle/Grid - -Source file: Hadrons/Modules/MContraction/Baryon.hpp - -Copyright (C) 2015-2019 - -Author: Antonin Portelli -Author: Felix Erben - -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_SelfContract_hpp_ -#define Hadrons_MContraction_SelfContract_hpp_ - -#include -#include -#include - -BEGIN_HADRONS_NAMESPACE - -/****************************************************************************** - * SelfContract * - ******************************************************************************/ -BEGIN_MODULE_NAMESPACE(MContraction) - -class SelfContractPar: Serializable -{ -public: - GRID_SERIALIZABLE_CLASS_MEMBERS(SelfContractPar, - std::string, q_self, - Gamma::Algebra, gamma, - std::string, sink, - std::string, output); -}; - -template -class TSelfContract: public Module -{ - FERM_TYPE_ALIASES(FImpl,); - BASIC_TYPE_ALIASES(ScalarImplCR, Scalar); - SINK_TYPE_ALIASES(Scalar); - class Result: Serializable - { - public: - GRID_SERIALIZABLE_CLASS_MEMBERS(Result, - Gamma::Algebra, gamma, - std::vector, corr); - }; -public: - // constructor - TSelfContract(const std::string name); - // destructor - virtual ~TSelfContract(void) {}; - // 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_TMP(SelfContract, TSelfContract, MContraction); - -/****************************************************************************** - * TSelfContract implementation * - ******************************************************************************/ -// constructor ///////////////////////////////////////////////////////////////// -template -TSelfContract::TSelfContract(const std::string name) -: Module(name) -{} - -// dependencies/products /////////////////////////////////////////////////////// -template -std::vector TSelfContract::getInput(void) -{ - std::vector in = {par().q_self, par().sink}; - - return in; -} - -template -std::vector TSelfContract::getOutput(void) -{ - std::vector out = {}; - - return out; -} - -// setup /////////////////////////////////////////////////////////////////////// -template -void TSelfContract::setup(void) -{ - envTmpLat(LatticeComplex, "c"); -} - -// execution /////////////////////////////////////////////////////////////////// -template -void TSelfContract::execute(void) -{ - LOG(Message) << "Computing self-contracted loop '" << getName() - << "' using '" << par().q_self << "' with " << par().gamma - << " insertion and sink " << par().sink << std::endl; - - auto &q_self = envGet(PropagatorField, par().q_self); - Gamma gamma(par().gamma); - std::vector buf; - Result result; - envGetTmp(LatticeComplex, c); - SinkFnScalar &sink = envGet(SinkFnScalar, par().sink); - - c = trace(gamma*q_self); - buf = sink(c); - result.gamma = par().gamma; - result.corr.resize(buf.size()); - for (unsigned int t = 0; t < buf.size(); ++t) - { - result.corr[t] = TensorRemove(buf[t]); - } - saveResult(par().output, "selfContr", result); -} - -END_MODULE_NAMESPACE - -END_HADRONS_NAMESPACE - -#endif // Hadrons_MContraction_SelfContract_hpp_ diff --git a/Hadrons/Modules/MDistil/g5_multiply.cc b/Hadrons/Modules/MDistil/g5_multiply.cc deleted file mode 100644 index 420b6768..00000000 --- a/Hadrons/Modules/MDistil/g5_multiply.cc +++ /dev/null @@ -1,36 +0,0 @@ -/************************************************************************************* - - Grid physics library, www.github.com/paboyle/Grid - - Source file: Hadrons/Modules/MDistil/g5_multiply.cc - - Copyright (C) 2019 - - Author: Felix Erben - Author: Michael Marshall - - 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 MDistil; - -template class Grid::Hadrons::MDistil::Tg5_multiply; diff --git a/Hadrons/Modules/MDistil/g5_multiply.hpp b/Hadrons/Modules/MDistil/g5_multiply.hpp deleted file mode 100644 index 498d50da..00000000 --- a/Hadrons/Modules/MDistil/g5_multiply.hpp +++ /dev/null @@ -1,150 +0,0 @@ -/************************************************************************************* - - Grid physics library, www.github.com/paboyle/Grid - - Source file: Hadrons/Modules/MDistil/g5_multiply.hpp - - Copyright (C) 2019 - - Author: Felix Erben - Author: Michael Marshall - - 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_MDistil_g5_multiply_hpp_ -#define Hadrons_MDistil_g5_multiply_hpp_ - -#include -#include -#include -#include -#include -#include -#include - -// These are members of Distillation -#include - -BEGIN_HADRONS_NAMESPACE - -/****************************************************************************** - * g5_multiply * - ******************************************************************************/ -BEGIN_MODULE_NAMESPACE(MDistil) - -class g5_multiplyPar: Serializable -{ -public: - GRID_SERIALIZABLE_CLASS_MEMBERS(g5_multiplyPar, - std::string, input, - int, nnoise, - int, LI, - int, Ns, - int, Nt_inv); -}; - -template -class Tg5_multiply: public Module -{ - public: - FERM_TYPE_ALIASES(FImpl,); - -public: - // constructor - Tg5_multiply(const std::string name); - // destructor - virtual ~Tg5_multiply(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(g5_multiply, Tg5_multiply, MDistil); - -/****************************************************************************** - * Tg5_multiply implementation * - ******************************************************************************/ -// constructor ///////////////////////////////////////////////////////////////// -template -Tg5_multiply::Tg5_multiply(const std::string name) -: Module(name) -{} - -// dependencies/products /////////////////////////////////////////////////////// -template -std::vector Tg5_multiply::getInput(void) -{ - std::vector in; - - in.push_back(par().input); - - return in; -} - -template -std::vector Tg5_multiply::getOutput(void) -{ - std::vector out = {getName()}; - - return out; -} - -// setup /////////////////////////////////////////////////////////////////////// -template -void Tg5_multiply::setup(void) -{ - int nnoise=par().nnoise; - int LI=par().LI; - int Ns=par().Ns; - int Nt_inv=par().Nt_inv; - - envCreate(std::vector, getName(), 1, - nnoise*LI*Ns*Nt_inv, envGetGrid(FermionField)); - -} - -// execution /////////////////////////////////////////////////////////////////// -template -void Tg5_multiply::execute(void) -{ - auto &input_vector = envGet(std::vector, par().input); - auto &output_vector = envGet(std::vector, getName()); - - Gamma g5(Gamma::Algebra::Gamma5); - - int nnoise=par().nnoise; - int LI=par().LI; - int Ns=par().Ns; - int Nt_inv=par().Nt_inv; - int Ntot = nnoise*LI*Ns*Nt_inv; - for (int i =0; i