Grid
Grid copied to clipboard
Propagator has incorrect dimensions for higher representations
Describe the issue:
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.
Code example:
No response
Target platform:
(N/A)
Configure options:
--enable-fermion-reps