diff --git a/src/field/fieldET.nim b/src/field/fieldET.nim index 36f3911a..348038a1 100644 --- a/src/field/fieldET.nim +++ b/src/field/fieldET.nim @@ -20,8 +20,8 @@ type l*:Layout[V] elemSize*:int Field*[V:static[int],T] = ref FieldObj[V,T] - FieldArray*[V:static[int],T] = object ## share a single alignedMem - shape*:seq[int] + FieldArray*[N:static[int],V:static[int],T] = object ## share a single alignedMem + shape*:array[N,int] arr:seq[Field[V,T]] Subsetted*[F,S] = object field*:F @@ -182,8 +182,8 @@ proc newFarrElem[V:static[int],T](f:var Field[V,T]; l:Layout[V]; s:alignedMem[T] f.s.data = cast[typeof(s.data)](cast[int](s.data) + offset*l.nSitesOuter*s.stride) f.elemSize = sizeOf(T) -proc newFieldArray*[V:static[int],T](l:Layout[V]; t:typedesc[Field[V,T]]; n: int):FieldArray[V,T] {.noinit.} = - result.shape = @[n] +proc newFieldArray*[V:static[int],T](l:Layout[V]; t:typedesc[Field[V,T]]; n: int):FieldArray[1,V,T] {.noinit.} = + result.shape[0] = n result.arr = newseq[t](n) var s:typeof(result.arr[0].s) s.newU(l.nSitesOuter*n) @@ -194,8 +194,9 @@ template newFieldArray2*[V:static[int],T](l:Layout[V]; ty:typedesc[Field[V,T]]; ns: array[2,int]; constraint: untyped):untyped = let n = ns[0] let m = ns[1] - var r {.noinit.} :FieldArray[V,T] - r.shape = @[n,m] + var r {.noinit.} :FieldArray[2,V,T] + r.shape[0] = n + r.shape[1] = m r.arr = newseq[ty](n*m) var t = 0 for i in 0..