-
Notifications
You must be signed in to change notification settings - Fork 120
Description
Describe the issue:
Grid/qcd/QCD.h currently defines a LatticePropagator as a LatticeSpinColourMatrix.
Since propagators have dimension
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