import FunctionValues
import Misc (all_equal, disjoint)
import Point
-import Tetrahedron (
- Tetrahedron(..),
- c,
- b0,
- b1,
- b2,
- b3,
- volume
- )
+import Tetrahedron (Tetrahedron(..), c, volume)
import ThreeDimensional
data Cube = Cube { h :: Double,
-- | Given in Sorokina and Zeilfelder, p. 79, (2.6). Note that the
--- third and fourth indices of c-t1 have been switched. This is
+-- third and fourth indices of c-t3 have been switched. This is
-- because we store the triangles oriented such that their volume is
-- positive. If T and T-tilde share \<v0,v1,v2\> and v3,v3-tilde point
-- in opposite directions, one of them has to have negative volume!
t4 = tetrahedron cube 4
t5 = tetrahedron cube 5
--- -- | Given in Sorokina and Zeilfelder, p. 79, (2.6). Repeats
--- -- 'prop_c0120_identity1' with tetrahedrons 5 and 6.
+-- | Given in Sorokina and Zeilfelder, p. 79, (2.6). Repeats
+-- 'prop_c0120_identity1' with tetrahedrons 5 and 6.
prop_c0120_identity6 :: Cube -> Bool
prop_c0120_identity6 cube =
c t6 0 1 2 0 ~= (c t6 0 0 2 1 + c t5 0 0 1 2) / 2
t6 = tetrahedron cube 6
--- -- | Given in Sorokina and Zeilfelder, p. 79, (2.6). Repeats
--- -- 'prop_c0120_identity1' with tetrahedrons 6 and 7.
+-- | Given in Sorokina and Zeilfelder, p. 79, (2.6). Repeats
+-- 'prop_c0120_identity1' with tetrahedrons 6 and 7.
prop_c0120_identity7 :: Cube -> Bool
prop_c0120_identity7 cube =
c t7 0 1 2 0 ~= (c t7 0 0 2 1 + c t6 0 0 1 2) / 2
t6 = tetrahedron cube 6
-
--- | Given in Sorokina and Zeilfelder, p. 78.
-prop_cijk1_identity :: Cube -> Bool
-prop_cijk1_identity cube =
- and [ c t0 i j k 1 ~=
- (c t1 (i+1) j k 0) * ((b0 t0) (v3 t1)) +
- (c t1 i (j+1) k 0) * ((b1 t0) (v3 t1)) +
- (c t1 i j (k+1) 0) * ((b2 t0) (v3 t1)) +
- (c t1 i j k 1) * ((b3 t0) (v3 t1)) | i <- [0..2],
- j <- [0..2],
- k <- [0..2],
- i + j + k == 2]
- where
- t0 = tetrahedron cube 0
- t1 = tetrahedron cube 1
-
-
-- | The function values at the interior should be the same for all
-- tetrahedra.
prop_interior_values_all_identical :: Cube -> Bool
t20 = tetrahedron cube 20
-
-
-
-p78_25_properties :: Test.Framework.Test
-p78_25_properties =
- testGroup "p. 78, Section (2.5) Properties" [
- testProperty "c_ijk1 identity" prop_cijk1_identity ]
-
p79_26_properties :: Test.Framework.Test
p79_26_properties =
testGroup "p. 79, Section (2.6) Properties" [
cube_properties :: Test.Framework.Test
cube_properties =
testGroup "Cube Properties" [
- p78_25_properties,
p79_26_properties,
p79_27_properties,
p79_28_properties,