Clean indexing
See discussion at !33 (comment 34256).
There are currently two issues with the indexing:
- Indexing functions depend on the level and quantities like
num_microedges_per_edge
. It is the responsibility of the kernel wrapper to pass these in to the kernel function if needed. Also all these quantities can be derived from one another. Passing two or more, means they can be "out of sync". - The type annotations are wrong.
I propose to pass the level and the width, i.e. the number of micro vertices per macro edge, and nothing else to the kernels.
The width might not necessarily be 2^l+1
if the coarsest grid has more than four vertices.
Therefore, the indexing shall not use the level at all, everything must be computed from the width.
The level number exists so that the kernel can use it to call into HyTeG functions which might need the level to access the right data.