--- /dev/null
+-- | The PolynomialArray module contains one type, 'PolynomialArray',
+-- and a smart constructor for it. The array is essentially a hash;
+-- the unique keys can be thought of as a cube/tetrahedron pair, and
+-- the associated value is the polynomial function over that
+-- tetrahedron. Rather than define 'Ord' instances and a proper map,
+-- we just use the indices i,j,k along with the tetrahedron number
+-- as the keys.
+module PolynomialArray (
+ PolynomialArray,
+ make_polynomial_array
+ )
+where
+
+import RealFunction(RealFunction)
+import Point (Point)
+
+import Data.Array (Array, array)
+
+type PolynomialArray =
+ Array (Int,Int,Int,Int) (RealFunction Point)
+
+make_polynomial_array :: (Int, Int, Int, Int) ->
+ [( (Int,Int,Int,Int), (RealFunction Point) )] ->
+ PolynomialArray
+make_polynomial_array (max_i, max_j, max_k, max_tetrahedron_number) =
+ array ( (0,0,0,0), (max_i,max_j,max_k, max_tetrahedron_number) )