mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-24 12:45:56 +01:00
Implement infrared improvement for v=0 on-shell self-energy
This commit is contained in:
parent
6bc136b1d0
commit
581be32ed2
@ -67,7 +67,7 @@ void TStochEm::setup(void)
|
|||||||
// execution ///////////////////////////////////////////////////////////////////
|
// execution ///////////////////////////////////////////////////////////////////
|
||||||
void TStochEm::execute(void)
|
void TStochEm::execute(void)
|
||||||
{
|
{
|
||||||
PhotonR photon(par().gauge, par().zmScheme);
|
PhotonR photon(par().gauge, par().zmScheme, par().improvement);
|
||||||
EmField &a = *env().createLattice<EmField>(getName());
|
EmField &a = *env().createLattice<EmField>(getName());
|
||||||
EmComp *w;
|
EmComp *w;
|
||||||
|
|
||||||
|
@ -44,7 +44,8 @@ class StochEmPar: Serializable
|
|||||||
public:
|
public:
|
||||||
GRID_SERIALIZABLE_CLASS_MEMBERS(StochEmPar,
|
GRID_SERIALIZABLE_CLASS_MEMBERS(StochEmPar,
|
||||||
PhotonR::Gauge, gauge,
|
PhotonR::Gauge, gauge,
|
||||||
PhotonR::ZmScheme, zmScheme);
|
PhotonR::ZmScheme, zmScheme,
|
||||||
|
Integer, improvement);
|
||||||
};
|
};
|
||||||
|
|
||||||
class TStochEm: public Module<StochEmPar>
|
class TStochEm: public Module<StochEmPar>
|
||||||
|
@ -61,7 +61,7 @@ void TUnitEm::setup(void)
|
|||||||
// execution ///////////////////////////////////////////////////////////////////
|
// execution ///////////////////////////////////////////////////////////////////
|
||||||
void TUnitEm::execute(void)
|
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<EmField>(getName());
|
EmField &a = *env().createLattice<EmField>(getName());
|
||||||
LOG(Message) << "Generating unit EM potential..." << std::endl;
|
LOG(Message) << "Generating unit EM potential..." << std::endl;
|
||||||
photon.UnitField(a);
|
photon.UnitField(a);
|
||||||
|
@ -60,7 +60,7 @@ namespace QCD{
|
|||||||
GRID_SERIALIZABLE_ENUM(Gauge, undef, feynman, 1, coulomb, 2, landau, 3);
|
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);
|
||||||
public:
|
public:
|
||||||
Photon(Gauge gauge, ZmScheme zmScheme);
|
Photon(Gauge gauge, ZmScheme zmScheme, Integer improvement);
|
||||||
virtual ~Photon(void) = default;
|
virtual ~Photon(void) = default;
|
||||||
void FreePropagator(const GaugeField &in, GaugeField &out);
|
void FreePropagator(const GaugeField &in, GaugeField &out);
|
||||||
void MomentumSpacePropagator(const GaugeField &in, GaugeField &out);
|
void MomentumSpacePropagator(const GaugeField &in, GaugeField &out);
|
||||||
@ -75,13 +75,14 @@ namespace QCD{
|
|||||||
private:
|
private:
|
||||||
Gauge gauge_;
|
Gauge gauge_;
|
||||||
ZmScheme zmScheme_;
|
ZmScheme zmScheme_;
|
||||||
|
Integer improvement_;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef Photon<QedGimplR> PhotonR;
|
typedef Photon<QedGimplR> PhotonR;
|
||||||
|
|
||||||
template<class Gimpl>
|
template<class Gimpl>
|
||||||
Photon<Gimpl>::Photon(Gauge gauge, ZmScheme zmScheme)
|
Photon<Gimpl>::Photon(Gauge gauge, ZmScheme zmScheme, Integer improvement)
|
||||||
: gauge_(gauge), zmScheme_(zmScheme)
|
: gauge_(gauge), zmScheme_(zmScheme), improvement_(improvement)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
template<class Gimpl>
|
template<class Gimpl>
|
||||||
@ -128,6 +129,7 @@ namespace QCD{
|
|||||||
{
|
{
|
||||||
GridBase *grid = out._grid;
|
GridBase *grid = out._grid;
|
||||||
const unsigned int nd = grid->_ndimension;
|
const unsigned int nd = grid->_ndimension;
|
||||||
|
std::vector<int> &l = grid->_fdimensions;
|
||||||
|
|
||||||
switch (zmScheme_)
|
switch (zmScheme_)
|
||||||
{
|
{
|
||||||
@ -149,9 +151,33 @@ namespace QCD{
|
|||||||
for(int d = 0; d < grid->_ndimension - 1; d++)
|
for(int d = 0; d < grid->_ndimension - 1; d++)
|
||||||
{
|
{
|
||||||
LatticeCoordinate(coor,d);
|
LatticeCoordinate(coor,d);
|
||||||
|
coor = where(coor < Integer(l[d]/2), coor, coor-Integer(l[d]));
|
||||||
spNrm = spNrm + coor*coor;
|
spNrm = spNrm + coor*coor;
|
||||||
}
|
}
|
||||||
out = where(spNrm == Integer(0), 0.*out, out);
|
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;
|
break;
|
||||||
}
|
}
|
||||||
@ -159,7 +185,7 @@ namespace QCD{
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class Gimpl>
|
template<class Gimpl>
|
||||||
void Photon<Gimpl>::MomentumSpacePropagator(const GaugeField &in,
|
void Photon<Gimpl>::MomentumSpacePropagator(const GaugeField &in,
|
||||||
GaugeField &out)
|
GaugeField &out)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user