Our current stencil is created by reflecting and contracting a right-handed simplex all different ways. In dim dimensions, this simplex has 2 * factorial(dim) permutations. For high dimensions (dim > 10), the memory usage of storing these simplexes is approximately dim**2 bytes per stencil point. This means creating 1000 stencil points for dim = 1000 uses 1 GB. 100000 stencil points for dim = 100 also uses 1 GB.
Creating the low memory stencil should be as straightforward as manually creating the first few iterations from the current stencil. This would serve as a nice consistency check too. We can choose which stencil to use based on the number of dimensions. I bet we can manually add enough points that we can conservatively use the low memory stencil for problems with more than ~30 dimensions.
Our current stencil is created by reflecting and contracting a right-handed simplex all different ways. In
dim
dimensions, this simplex has2 * factorial(dim)
permutations. For high dimensions (dim > 10
), the memory usage of storing these simplexes is approximatelydim**2
bytes per stencil point. This means creating 1000 stencil points fordim = 1000
uses 1 GB. 100000 stencil points fordim = 100
also uses 1 GB.Creating the low memory stencil should be as straightforward as manually creating the first few iterations from the current stencil. This would serve as a nice consistency check too. We can choose which stencil to use based on the number of dimensions. I bet we can manually add enough points that we can conservatively use the low memory stencil for problems with more than ~30 dimensions.