Grid/qcd/QCD.h currently defines a LatticePropagator as a LatticeSpinColourMatrix.
Since propagators have dimension $4^2 \dim(R)^2$ for representation $R$, this works correctly for the fundamental representation, where $\dim(R)=N_\mathrm{c}$. However, for higher representations this isn't the case, so the propagator has the wrong dimensionality.
Could this type be templated, along the lines:
template<typename vtype, int NF = Grid::Nc> using iSpinFlavourMatrix = Grid::iScalar<Grid::iMatrix<Grid::iMatrix<vtype, NF>, Grid::Ns> >;
template<int NF = Grid::Nc> using vSpinFlavourMatrix = iSpinFlavourMatrix<Grid::vComplex, NF>;
template<int NF = Grid::Nc> using LatticeSpinFlavourMatrix = Grid::Lattice<vSpinFlavourMatrix<NF>>;
template<class representation = FundamentalRepresentation> using LatticePropagator = LatticeSpinFlavourMatrix<representation::Dimension>;
which could then be instantiated as LatticePropagator<FImpl>, with the argument optional.
Edit: After some testing, I'm not sure the last line works, because QCD.h doesn't include Representations.h, so doesn't know about FundamentalRepresentation. So either this would need to change, or the template would need to be in terms of NF similar to the LatticeSpinFlavourMatrix etc.
Describe the issue:
Grid/qcd/QCD.h
currently defines aLatticePropagator
as aLatticeSpinColourMatrix
.Since propagators have dimension $4^2 \dim(R)^2$ for representation $R$, this works correctly for the fundamental representation, where $\dim(R)=N_\mathrm{c}$. However, for higher representations this isn't the case, so the propagator has the wrong dimensionality.
Could this type be templated, along the lines:
which could then be instantiated as
LatticePropagator<FImpl>
, with the argument optional.Edit: After some testing, I'm not sure the last line works, because
QCD.h
doesn't includeRepresentations.h
, so doesn't know aboutFundamentalRepresentation
. So either this would need to change, or the template would need to be in terms ofNF
similar to theLatticeSpinFlavourMatrix
etc.Code example:
No response
Target platform:
(N/A)
Configure options: