mirror of
https://github.com/paboyle/Grid.git
synced 2025-06-12 20:27:06 +01:00
added Baryon code
This commit is contained in:
@ -7,7 +7,7 @@ Source file: Hadrons/Modules/MContraction/Baryon.hpp
|
||||
Copyright (C) 2015-2019
|
||||
|
||||
Author: Antonin Portelli <antonin.portelli@me.com>
|
||||
Author: Lanny91 <andrew.lawson@gmail.com>
|
||||
Author: Felix Erben <felix.erben@ed.ac.uk>
|
||||
|
||||
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
|
||||
@ -33,6 +33,7 @@ See the full license in the file "LICENSE" in the top level distribution directo
|
||||
#include <Hadrons/Global.hpp>
|
||||
#include <Hadrons/Module.hpp>
|
||||
#include <Hadrons/ModuleFactory.hpp>
|
||||
#include <Grid/qcd/utils/BaryonUtils.h>
|
||||
|
||||
BEGIN_HADRONS_NAMESPACE
|
||||
|
||||
@ -45,9 +46,16 @@ class BaryonPar: Serializable
|
||||
{
|
||||
public:
|
||||
GRID_SERIALIZABLE_CLASS_MEMBERS(BaryonPar,
|
||||
std::string, q1,
|
||||
std::string, q2,
|
||||
std::string, q3,
|
||||
std::string, q1_src,
|
||||
std::string, q2_src,
|
||||
std::string, q3_src,
|
||||
std::string, GammaA,
|
||||
std::string, GammaB,
|
||||
// char[], quarks_snk,
|
||||
// char[], quarks_src,
|
||||
std::string, quarks_snk,
|
||||
std::string, quarks_src,
|
||||
int, parity,
|
||||
std::string, output);
|
||||
};
|
||||
|
||||
@ -62,7 +70,7 @@ public:
|
||||
{
|
||||
public:
|
||||
GRID_SERIALIZABLE_CLASS_MEMBERS(Result,
|
||||
std::vector<std::vector<std::vector<Complex>>>, corr);
|
||||
std::vector<Complex>, corr);
|
||||
};
|
||||
public:
|
||||
// constructor
|
||||
@ -77,6 +85,8 @@ protected:
|
||||
virtual void setup(void);
|
||||
// execution
|
||||
virtual void execute(void);
|
||||
// Which gamma algebra was specified
|
||||
Gamma::Algebra al;
|
||||
};
|
||||
|
||||
MODULE_REGISTER_TMP(Baryon, ARG(TBaryon<FIMPL, FIMPL, FIMPL>), MContraction);
|
||||
@ -94,7 +104,7 @@ TBaryon<FImpl1, FImpl2, FImpl3>::TBaryon(const std::string name)
|
||||
template <typename FImpl1, typename FImpl2, typename FImpl3>
|
||||
std::vector<std::string> TBaryon<FImpl1, FImpl2, FImpl3>::getInput(void)
|
||||
{
|
||||
std::vector<std::string> input = {par().q1, par().q2, par().q3};
|
||||
std::vector<std::string> input = {par().q1_src, par().q2_src, par().q3_src};
|
||||
|
||||
return input;
|
||||
}
|
||||
@ -118,19 +128,38 @@ void TBaryon<FImpl1, FImpl2, FImpl3>::setup(void)
|
||||
template <typename FImpl1, typename FImpl2, typename FImpl3>
|
||||
void TBaryon<FImpl1, FImpl2, FImpl3>::execute(void)
|
||||
{
|
||||
LOG(Message) << "Computing baryon contractions '" << getName() << "' using"
|
||||
<< " quarks '" << par().q1 << "', '" << par().q2 << "', and '"
|
||||
<< par().q3 << "'" << std::endl;
|
||||
LOG(Message) << "Computing baryon contraction '" << getName() << "' < " << par().quarks_snk << " | " << par().quarks_src << " > using"
|
||||
<< " quarks '" << par().q1_src << "', and a diquark formed of ('" << par().q2_src << "', and '"
|
||||
<< par().q3_src << "') at the source and (Gamma^A,Gamma^B) = ( " << par().GammaA << " , " << par().GammaB
|
||||
<< " ) and parity " << par().parity << "." << std::endl;
|
||||
|
||||
auto &q1 = envGet(PropagatorField1, par().q1);
|
||||
auto &q2 = envGet(PropagatorField2, par().q2);
|
||||
auto &q3 = envGet(PropagatorField3, par().q2);
|
||||
auto &q1_src = envGet(PropagatorField1, par().q1_src);
|
||||
auto &q2_src = envGet(PropagatorField2, par().q2_src);
|
||||
auto &q3_src = envGet(PropagatorField3, par().q3_src);
|
||||
envGetTmp(LatticeComplex, c);
|
||||
Result result;
|
||||
|
||||
// FIXME: do contractions
|
||||
|
||||
// saveResult(par().output, "meson", result);
|
||||
int nt = env().getDim(Tp);
|
||||
result.corr.resize(nt);
|
||||
std::vector<Gamma::Algebra> ggA = strToVec<Gamma::Algebra>(par().GammaA);
|
||||
Gamma GammaA = ggA[0];
|
||||
std::vector<Gamma::Algebra> ggB = strToVec<Gamma::Algebra>(par().GammaB);
|
||||
Gamma GammaB = ggB[0];
|
||||
std::vector<TComplex> buf;
|
||||
const int parity {par().parity};
|
||||
const char quarks_snk[]{par().quarks_snk.c_str()};
|
||||
const char quarks_src[]{par().quarks_src.c_str()};
|
||||
|
||||
BaryonUtils<FIMPL>::ContractBaryons(q1_src,q2_src,q3_src,GammaA,GammaB,quarks_snk,quarks_src,parity,c);
|
||||
|
||||
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
|
||||
|
Reference in New Issue
Block a user